![]() |
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. |
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 |
Re: Datumsvergleich
Es handelt sich zwar wirklich um eine Datenbankapplikation, aber wie könnte das ohne SQL aussehen?
|
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. |
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. |
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.
|
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?
|
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); |
Re: Datumsvergleich
OK, ich danke Dir recht herzlich. Bis zum nächsten Aufhänger in meiner Applikation. :mrgreen:
|
Re: Datumsvergleich
Wie wäre es mit
function DaysBetween(const ANow, AThen: TDateTime): Integer; Frank |
Re: Datumsvergleich
@Mavarik,
ich habe es wie von SirThornberry geschildert, gelößt. Trotzdem Danke. |
Re: Datumsvergleich
Zitat:
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: |
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; |
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 18:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz