![]() |
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 ;-) |
AW: Geburtstagsabfrage
Und auch das Doppelte rauswerfen.
Delphi-Quellcode:
Im ersten IF ist etwas, was auch im 2. IF nochmal drin ist -> die Farbe.
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;
Delphi-Quellcode:
2 Drittel weniger Code, nichts Mehrfach und vermutlich auch übersichtlicher/verständlicher.
HatGeburtstag := CalcBirthday(Patient1Qry.FieldByName('GEBURTSDATUM').AsDateTime);
if HatGeburtstag and not GeburtstagHeute then MessageDlg('Patient / Klient / Kunde hat heute Geburtstag?', mtConfirmation, [mbOK], 0); GeburtstagHeute := True; //if HatGeburtstag then // lblAlter.Font.Color := clRed //else // lblAlter.Font.Color := clBlack; lblAlter.Font.Color := IfThen(HatGeburtstag, clRed, clBlack); wobei
Delphi-Quellcode:
HatGeburtstag := CalcBirthday(Patient1Qry.FieldByName('GEBURTSDATUM').AsDateTime);
//if HatGeburtstag and not GeburtstagHeute then GeburtstagHeute := MessageDlg('Patient / Klient / Kunde hat heute Geburtstag?', mtConfirmation, [mbClose,mbIgnore], 0) = mrIgnore; //if HatGeburtstag then GeburtstagHeute := GeburtstagHeute or (MessageDlg('Patient / Klient / Kunde hat heute Geburtstag?', mtConfirmation, [mbClose,mbIgnore], 0) = mrIgnore); GeburtstagHeute := GeburtstagHeute or (HatGeburtstag and (MessageDlg('Patient / Klient / Kunde hat heute Geburtstag?', mtConfirmation, [mbClose,mbIgnore], 0) = mrIgnore)); lblAlter.Font.Color := IfThen(HatGeburtstag, clRed, clBlack); |
AW: Geburtstagsabfrage
Zitat:
|
AW: Geburtstagsabfrage
Zitat:
|
AW: Geburtstagsabfrage
Och, kann schonmal passieren.
Und vielleicht will man nicht mehr erinnert werden? Mann hat es ja nicht so leicht, wie die Anderen, denn wie heißt es gerne mal? "Die besten 10 Jahre der Frau sind die zwischen 29 und 30." Aber ja, natürlich kommt es drauf an. Hier hatte sich auch mal wer gewünscht, dass beim Einloggen "alle" die heutigen Geburtstage sehen. Was schon ein bissl gegen den Datenschutz ist. |
AW: Geburtstagsabfrage
Bei uns in der Abteilung gibt's einen GID (Geburtags Informations Dienst).
Kann man "abonieren", man kann die Meldung seines Geburtstages aber sicher auch rausnehmen lassen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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