Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Geburtstagsabfrage (https://www.delphipraxis.net/212913-geburtstagsabfrage.html)

Walter Landwehr 23. Apr 2023 11:57

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:
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;
hat jemand einen Ansatz wo ich den Aufruf Platzieren sollte.

Uwe Raabe 23. Apr 2023 12:33

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.

himitsu 23. Apr 2023 12:49

AW: Geburtstagsabfrage
 
AfterScroll bzw. AfterOpen (oder sowas)

und das erste Open ins OnShow.

Rollo62 23. Apr 2023 15:16

AW: Geburtstagsabfrage
 
Ich nutze oft einen angepassten DelayWorker, von Sir Rufo hier im Forum, um eine zeitverzögerte Meldung abzusetzen.
Alt aber bewährt.

Walter Landwehr 23. Apr 2023 15:39

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;

peterbelow 24. Apr 2023 16:07

AW: Geburtstagsabfrage
 
Zitat:

Zitat von Walter Landwehr (Beitrag 1521433)
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;

Also, ich halte das für einen strafbaren Missbrauch persönlicher Daten. Da lebt der Mensch glücklich und zufrieden in einer Superposition aller Alterszustände und dann macht ihn jemand darauf aufmerksam, dass er Geburtstag hat. Folge: Die Wellenfunktion kollabiert und der Mensch muss sich der traurigen Erkenntnis stellen, dass er schon wieder ein Jahr näher an der Kiste ist... :wink:
Geburtstage sind was für Kinder, ab 21 sind sie nur noch lästig...

Union 24. Apr 2023 16:39

AW: Geburtstagsabfrage
 
Nur eine Kleinigkeit, aber boolean sollte man auch als solche behandeln:
Delphi-Quellcode:
and (Geburtstagheute = False)
Also niemals mit Konstanten vergleichen, sondern boolesche Logik verwenden. In dem Fall simpel:
Delphi-Quellcode:
and Geburtstagheute
Da es verschiedene boolean Typen gibt, deren Bedeutung sich auch noch teilweise unterscheidet, kannst Du dir damit auch ein schönes Ei legen.

himitsu 24. Apr 2023 16:46

AW: Geburtstagsabfrage
 
SQL-Code:
and not Geburtstagheute
:zwinker:

Union 24. Apr 2023 16:52

AW: Geburtstagsabfrage
 
Zitat:

Zitat von himitsu (Beitrag 1521490)
SQL-Code:
and not Geburtstagheute
:zwinker:

Wie peinlich :oops:

Delphi.Narium 24. Apr 2023 18:19

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 22:10 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz