Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datumsvergleich (https://www.delphipraxis.net/64090-datumsvergleich.html)

mlspider 27. Feb 2006 10:50


Datumsvergleich
 
Hallo,

zur Überprüfung von Rechnungen und dessen Fälligkeiten, möchte ich nun das Solldatum mit dem aktuellem Datum vergleichen und gegebenfalls bei Überschreitung des Solldatums eine Warnmeldung ausgeben lassen.

Angenommen eine Rechnung wäre zum 02.02.2006 fällig gewesen und die Zahlungsfrist betrug 14 Tage, dann sollte ab dem 14. Tag das Programm mit jeder Prüfung Alarm schlagen. Wie könnte eine solche Abfrage aussehen.

Ich hoffen das mein Problem verständlich genug ist.

Danke.

stonimahoni 27. Feb 2006 11:07

Re: Datumsvergleich
 
Hi...

sowas ähnliches benutze ich auch.

Habe mal den für Dich wichtigsten teil reinkopiert :



SQL-Code:

+ 'WHERE (((fälligleitsdatum)<(Date()-[zahlungsfrist]))) '



Hoffe Du kannst was mit anfangen.


MFG


Carsten

mlspider 27. Feb 2006 11:09

Re: Datumsvergleich
 
Es handelt sich zwar wirklich um eine Datenbankapplikation, aber wie könnte das ohne SQL aussehen?

SirThornberry 27. Feb 2006 11:12

Re: Datumsvergleich
 
datumswerte sind nix anderes als "Kommazahlen", vor dem Komma steht der Taganteil und nach dem Komma der Zeitanteil.
mit Trunc(Date) bekommst du also als Ganzzahl das Datum. Und diese Werte kannst du ohne Probleme wie jeden anderen Integer auch vergleichen.

Da deine Informationen jedoch nicht sehr reichthalting waren bin ich einfach davon ausgegangen das du mit TDateTime arbeitest.

mlspider 27. Feb 2006 11:16

Re: Datumsvergleich
 
Da schließt sich der Kreis. Das Datum in eine Ganzzahl formatieren?
Dann wäre es problemlos möglich über < bzw. > zu vergleichen.

SirThornberry 27. Feb 2006 11:19

Re: Datumsvergleich
 
genau, da dich der nachkommateil (die zeit) bei deinem Problem nicht wirklich interessiert (außer du machst minutengenaue Rechnungen und Mahnungen) kannst du auch einfach den zeitteil weg schneiden und den Ganzzahlen Teil (Integer) dann mit "<", ">", "=" etc. vergleichen.

mlspider 27. Feb 2006 11:23

Re: Datumsvergleich
 
Der Zeitanteil ist mir relativ egal. Wäre ja auch sehr penibel. Und jetzt die selten dämliche Frage, wie konvertiert man nur TDateTime zu Integer?

SirThornberry 27. Feb 2006 11:25

Re: Datumsvergleich
 
da du nur den Ganzzahlen Anteil benötigst schneidest du einfach den Nachkommazeil ab. Also so:
Delphi-Quellcode:
var LDatumUndZeit: TDateTime;
    LDatum: Integer;
begin
  LDatumUndZeit := Now();
  LDatum := Trunc(LDatumUndZeit);

mlspider 27. Feb 2006 11:27

Re: Datumsvergleich
 
OK, ich danke Dir recht herzlich. Bis zum nächsten Aufhänger in meiner Applikation. :mrgreen:

Mavarik 28. Feb 2006 10:12

Re: Datumsvergleich
 
Wie wäre es mit

function DaysBetween(const ANow, AThen: TDateTime): Integer;

Frank

mlspider 28. Feb 2006 11:05

Re: Datumsvergleich
 
@Mavarik,

ich habe es wie von SirThornberry geschildert, gelößt. Trotzdem Danke.

Mavarik 28. Feb 2006 12:54

Re: Datumsvergleich
 
Zitat:

Zitat von mlspider
@Mavarik,

ich habe es wie von SirThornberry geschildert, gelößt. Trotzdem Danke.

Auch wenn es hier funktioniert, würde ich immer auf Systemfunktionen gehen...
Sollte sich mal das Datenformat ändern (eas hier nicht der Fall seien wird),
wird die Systemfunktion sicherlich daraufhin angepasst und Du mußt nix im Source ändern...

Nur ein Tipp... Viele wege führen ins ROM...

Frank :coder:

Gandi22 28. Feb 2006 13:18

Re: Datumsvergleich
 
Man muss das Datum übrigens nicht mal explizit konvertieren, man kann die Tage einfach direkt dazu addieren:

Delphi-Quellcode:
var
  Rechnungsdatum: TDateTime;
begin
  ...
  if (Rechnungsdatum + 14) <= Date then
    ShowMessage('Zahlungsfrist überschritten!);
  ;

end;

mlspider 28. Feb 2006 14:18

Re: Datumsvergleich
 
Das ist ja toll gelößt. Einfacher geht es schon gar nicht mehr. Großes Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz