![]() |
Geburtstagsabfrage
Hallo, ich möchte beim Aufruf einer kundenform und Wechsel des Kunden angezeigt bekommen das dieser Kunde Geburtstag hat. In welschen Ereignis sollte die Abfrage stehen. Auf jeden Fall sollte erst das Formular angezeigt werden und dann die Geburtstagsmeldung. Beim Wechsel vom Kunden sollte die Anzeige auch kommen wenn er Geburtstag hat aber nur einmal.
Delphi-Quellcode:
hat jemand einen Ansatz wo ich den Aufruf Platzieren sollte.
if CalcBirthday(Patient1Qry.FieldByName('GEBURTSDATUM').AsDateTime) and (Geburtstagheute = True) then
begin lblAlter.Font.Color := clRed; MessageDlg('Patient / Klient / Kunde hat heute Geburtstag.?', mtConfirmation, [mbOK],0); Geburtstagheute := False; end else begin lblAlter.Font.Color := clBlack; end; |
AW: Geburtstagsabfrage
Ich würde einen Timer starten, wenn das Form angezeigt bzw. der Kunde gewechselt wird. Damit das nur einmal pro Kunde passiert, musst du dir das eben irgendwo notieren.
|
AW: Geburtstagsabfrage
AfterScroll bzw. AfterOpen (oder sowas)
und das erste Open ins OnShow. |
AW: Geburtstagsabfrage
Ich nutze oft einen angepassten DelayWorker, von Sir Rufo hier im Forum, um eine zeitverzögerte Meldung abzusetzen.
Alt aber bewährt. |
AW: Geburtstagsabfrage
Danke an alle habe es hinbekommen. Anzeige im OnShow und dann im AfterScroll.
OnShow der Form
Delphi-Quellcode:
.
Geburtstagheute := False;
Im AfterScroll
Delphi-Quellcode:
if CalcBirthday(Patient1Qry.FieldByName('GEBURTSDATUM').AsDateTime) and (Geburtstagheute = False) then
begin lblAlter.Font.Color := clRed; MessageDlg('Patient / Klient / Kunde hat heute Geburtstag.?', mtConfirmation, [mbOK],0); Geburtstagheute := True; end else begin if CalcBirthday(Patient1Qry.FieldByName('GEBURTSDATUM').AsDateTime) then lblAlter.Font.Color := clRed else lblAlter.Font.Color := clBlack; end; |
AW: Geburtstagsabfrage
Zitat:
Geburtstage sind was für Kinder, ab 21 sind sie nur noch lästig... |
AW: Geburtstagsabfrage
Nur eine Kleinigkeit, aber boolean sollte man auch als solche behandeln:
Delphi-Quellcode:
Also niemals mit Konstanten vergleichen, sondern boolesche Logik verwenden. In dem Fall simpel:
and (Geburtstagheute = False)
Delphi-Quellcode:
Da es verschiedene boolean Typen gibt, deren Bedeutung sich auch noch teilweise unterscheidet, kannst Du dir damit auch ein schönes Ei legen.
and Geburtstagheute
|
AW: Geburtstagsabfrage
SQL-Code:
:zwinker:
and not Geburtstagheute
|
AW: Geburtstagsabfrage
Zitat:
|
AW: Geburtstagsabfrage
Wenn dann eher andersherum
Delphi-Quellcode:
if not Geburtstagheute and (CalcBirthday(Patient1Qry.FieldByName('GEBURTSDATUM').AsDateTime)) then
Dann können wir uns ggfls. auch noch die mehr oder weniger komplexe Berechnung in CalcBirthday sparen, jedenfalls dann, wenn boolsche Ausdrücke nicht vollständig ausgewertet werden müssen ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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 by Thomas Breitkreuz