Feld in Abhängigkeit vom Datum anzeigen

Übergeordnete Themen zu SchILD-NRW2

Moderatoren: Raffenberg, A. Schüller, Pfotenhauer

Antworten
JensSpeh
Beiträge: 1183
Registriert: Dienstag 4. Dezember 2018, 08:04
Schulform: Gesamtschule

Feld in Abhängigkeit vom Datum anzeigen

Beitrag 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!
Es gibt keine dummen Fragen, nur dumme Antworten, aber die geben wir gerne! :lol:
D.Jakel
Beiträge: 1022
Registriert: Sonntag 2. Dezember 2018, 18:13
Schulform: Gymnasium

Re: Feld in Abhängigkeit vom Datum anzeigen

Beitrag 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.
mfG, D.Jakel
Kurosinski
Beiträge: 955
Registriert: Sonntag 19. Mai 2019, 19:53
Schulform: Gesamtschule

Re: Feld in Abhängigkeit vom Datum anzeigen

Beitrag 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.
W.Maßmann
Fachberater*in
Beiträge: 1030
Registriert: Montag 3. Dezember 2018, 18:37
Schulform: Gymnasium (a.D.)

Re: Feld in Abhängigkeit vom Datum anzeigen

Beitrag 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.
Viele Grüße aus O.-E.
Wolfgang Maßmann
Benutzeravatar
Falko Müller
Fachberater*in
Beiträge: 1192
Registriert: Donnerstag 4. Oktober 2018, 20:23
Schulform: Gymnasium

Re: Feld in Abhängigkeit vom Datum anzeigen

Beitrag 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.
Freundliche Grüße
Falko Müller
JensSpeh
Beiträge: 1183
Registriert: Dienstag 4. Dezember 2018, 08:04
Schulform: Gesamtschule

Re: Feld in Abhängigkeit vom Datum anzeigen

Beitrag 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.
Es gibt keine dummen Fragen, nur dumme Antworten, aber die geben wir gerne! :lol:
Benutzeravatar
Falko Müller
Fachberater*in
Beiträge: 1192
Registriert: Donnerstag 4. Oktober 2018, 20:23
Schulform: Gymnasium

Re: Feld in Abhängigkeit vom Datum anzeigen

Beitrag 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.
Freundliche Grüße
Falko Müller
JensSpeh
Beiträge: 1183
Registriert: Dienstag 4. Dezember 2018, 08:04
Schulform: Gesamtschule

Re: Feld in Abhängigkeit vom Datum anzeigen

Beitrag von JensSpeh »

Das Feld Anmeldedatum ist natürlich immer belegt, das Feld "Ende der Eingliederung" nicht. Kann dies den Fehler verursachen?
Es gibt keine dummen Fragen, nur dumme Antworten, aber die geben wir gerne! :lol:
W.Maßmann
Fachberater*in
Beiträge: 1030
Registriert: Montag 3. Dezember 2018, 18:37
Schulform: Gymnasium (a.D.)

Re: Feld in Abhängigkeit vom Datum anzeigen

Beitrag von W.Maßmann »

Ein vorangestelltes
If Text<>'' then ...
vermeidet diese Fehlermeldung.
Viele Grüße aus O.-E.
Wolfgang Maßmann
JensSpeh
Beiträge: 1183
Registriert: Dienstag 4. Dezember 2018, 08:04
Schulform: Gesamtschule

Re: Feld in Abhängigkeit vom Datum anzeigen

Beitrag 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!
Es gibt keine dummen Fragen, nur dumme Antworten, aber die geben wir gerne! :lol:
Antworten