Seite 1 von 1

Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Samstag 13. November 2021, 20:09
von JensSpeh
Hallo!

erst einmal ohne Report:

Wie kann ich ein Feld in Abhängigkeit vom aktuellen Datum anzeigen bzw. ausblenden lassen?
Wenn das Feld mit einem Datum in der Zukunft gefüllt ist, soll es angedruckt werden, wenn es in der Vergangenheit liegt, dann nicht.

Vielen Dank im Voraus!

Re: Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Samstag 13. November 2021, 21:18
von D.Jakel
Guten Tag,
https://www.delphi-treff.de/tipps-trick ... ermitteln/ :
"In Delphi gibt es in der Unit SysUtils eine Funktion namens Now, die das aktuelle Datum mit Uhrzeit zurückgibt. [...]
TDateTime ist eine Fließkommazahl, deren ganzzahliger Anteil die Tage angibt, die seit dem 30.12.1899 00:00:00 vergangen sind. Der Nachkommaanteil gibt die Zeit in Bruchteilen von Tagen an. 0,5 entspricht also 12 Stunden."

Daraus ließe sich doch wahrscheinlich etwas basteln, wie TDateTime<Now, oder so.

Re: Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Samstag 13. November 2021, 21:26
von Kurosinski
Guten Abend,

Delphi?
Ist die Report Sprache nicht Pascal?
OK, ich gestehe, dass ich mich damit nur wenig auskenne...

Aber zur Frage:
Feld.visible := true;
Bzw false ist zur Anzeige nötig.

Beim Datumsvergleich dachte ich auch, dass man ein Datum in eine int64 oder float umwandeln kann.
Habe ich jedoch nicht geschafft.

Dann war meine Vermutung, dass man evtl auch einfach zwei verschiedene Zeiten mit > oder < vergleichen kann.
Funktionierte auch nicht.

Letztendlich habe ich mit Copy (...) Zumindest das Jahr extrahieren können und vergleichen.
Mit etwas Aufwand sollte dann so auch ein ganzes Datum in Bestandteile zerlegt und verglichen werden können.

Eigentlich nicht das gelbe vom Ei.

Aber ich meine, dass es zumindest eine interne Funktion gibt, die das aktuelle System Datum liefert.

Re: Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Sonntag 14. November 2021, 00:15
von W.Maßmann
Hallo Herr Speh,
ich habe in einem Report aus 2015 den folgenden Code gefunden, der nach meiner Erinnerung damals von Herrn Schrewe bereitgestellt wurde:

var
Jahr, Monat, Tag, Jahr_D, Monat_D, Tag_D : Integer;
begin
DecodeDate(Schueler['Geburtsdatum'], Jahr, Monat, Tag);
DecodeDate(currentdate, Jahr_D, Monat_D, Tag_D); {aktuelles Datum}
If Schueler['Volljaehrig'] ='+'
then text:= '(volljährig)'
else
if encodedate(Jahr_D+1,Monat_D,Tag_D) < EncodeDate(Jahr + 18, Monat, Tag)
then text :=''
else Text:='(volljährig ab '+DateToStr(EncodeDate(Jahr + 18, Monat, Tag)) + ')';
end;

Mit der Forum-Suche nach DecodeDate erhält man weitere Beispiele.

Re: Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Sonntag 14. November 2021, 09:02
von Falko Müller
Guten Morgen,
in diesem Fall ist eine Umwandlung des Datums mE nicht notwendig. Man kann das Datum direkt mit currentdate vergleichen:

Code: Alles auswählen

Procedure DBText1OnGetText(var Text: String);
begin

  if StrToDate(Text) <= currentdate then Text := '';

end;
Das Feld DBText1 muss natürlich ein Datum enthalten.

Re: Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Sonntag 14. November 2021, 15:27
von JensSpeh
Hallo Herr Müller,

das ist noch nicht perfekt...


Exception:
------------------------------------------------------------------------------------------------------
2.1 Date : Sun, 14 Nov 2021 15:25:16 +0100
2.2 Address : 0128ABA7
2.3 Module Name : SCHILD2000.exe - (Schulverwaltungsprogramm für NRW)
2.4 Module Version: 2.0.26.5
2.5 Type : ECodeError
2.6 Message : Programm:_DBText3OnGetText konnte nicht ausgeführt werden
Variante des Typs (UnicodeString) konnte nicht in Typ (Date) konvertiert werden.
2.7 ID : BC3A
2.8 Count : 1
2.9 Status : New
2.10 Note :

Wenn ich zu dem Feld DB Text3, welches das Datum "Ende der Eingliederung" enthält, ihren Code einfüge, erhalte ich diese Fehlermeldung.

Re: Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Sonntag 14. November 2021, 15:47
von Falko Müller
Merkwürdig. Ich habe es mit dem Feld „Anmeldedatum“ getestet. Da hat es geklappt. Kann das gerade nicht testen. Schau mir das später nochmal an.

Re: Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Sonntag 14. November 2021, 15:57
von JensSpeh
Das Feld Anmeldedatum ist natürlich immer belegt, das Feld "Ende der Eingliederung" nicht. Kann dies den Fehler verursachen?

Re: Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Sonntag 14. November 2021, 17:54
von W.Maßmann
Ein vorangestelltes
If Text<>'' then ...
vermeidet diese Fehlermeldung.

Re: Feld in Abhängigkeit vom Datum anzeigen

Verfasst: Sonntag 14. November 2021, 19:30
von JensSpeh
Ja, jetzt klappt es. Hätte nicht gedacht, dass ich für meine Leistungsübersichten noch eine Verbesserung finde....
Danke für die Hilfen!