Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Abfrage: Wenn ein Datum in der Zukunft liegt (https://www.delphipraxis.net/31381-abfrage-wenn-ein-datum-der-zukunft-liegt.html)

JSB 8. Okt 2004 11:48


Abfrage: Wenn ein Datum in der Zukunft liegt
 
Ich habe ein Problem. :cry: Ich möchte eine Abfrage zu einem DateTimePicker machen. Genau: Ich möchte wissen ob das Datum im DateTimePicker noch gegenüber dem Jeztdatum in der Zukunft liegt. Ich habe es so Ausprobiert:

Delphi-Quellcode:
if ddatum.Date > Date then
  if MessageDlg('Achtung! Das Ausgewählte Datum liegt noch in der Zukunft. '+#13+#10+'wählen Sie Ja um das Datum trotzdem zu übernähmen oder '+#13+#10+'Nein um das Datum zu ändern und dann erst die Buchung '+#13+#10+'durchzuführen.', mtWarning, [mbYes,mbNo], 0) = mrNo then
aber irgendwie bekomme ich die Fehlermeldung immer *HILF* :gruebel:

Hat jemand eine :idea: ?

himitsu 8. Okt 2004 11:53

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Zitat:

Zitat von JSB
aber irgendwie bekomme ich die Fehlermeldung immer *HILF* :gruebel:

Welche Meldung?

[edit]
achso, jetzt habsch's b
verstanden :wall:

nimm mal Now, statt Date, oder runde ddatum.Date ab [trunc(ddatum.Date)]

Denn in Date steht wirklich nur das Datum, aber in ddatum.Date ist das Datum und die Uhrzeit drin

Date < (aktuelles Datum) + (die Uhrzeit, welche im DateTimePicker ebenfalls angegeben ist ... bei dir vermutlich die Uhrzeit, als dein DateTimePicker initialisiert wurde)

JSB 8. Okt 2004 11:55

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Diese die erscheinen soll wenn das Datum noch in der Zukunft liegt... :lol:

Delphi-Quellcode:
if MessageDlg('Achtung! Das Ausgewählte Datum liegt noch in der Zukunft. '+#13+#10+'wählen Sie Ja um das Datum trotzdem zu übernähmen oder '+#13+#10+'Nein um das Datum zu ändern und dann erst die Buchung '+#13+#10+'durchzuführen.', mtWarning, [mbYes,mbNo], 0) = mrNo

alcaeus 8. Okt 2004 11:59

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Hi JSB,

ich habs gerade getestet, und festgestellt dass die Meldung auch angezeigt wird, wenn ich das heutige Datum wähle. Das Problem hab ich gelöst, indem ich anstatt
Delphi-Quellcode:
ddatum.Date > Date
folgendes geschrieben habe:
Delphi-Quellcode:
Trunc(ddatum.Date) > Trunc(Date)
.
Wenn ich hingegen den 7.10. ausgewählt habe, so wurde der MessageBox-Aufruf übersprungen. Evtl. hast du einen anderen Fehler.

Greetz
alcaeus

Stevie 8. Okt 2004 12:01

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Müsste auch so funzen:
Delphi-Quellcode:
if ddatum.Date > TDate(Now) then

SubData 8. Okt 2004 12:01

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Also ich würde das einfach so machen...

Code:
if ddate.DateTime > Now then
begin
  // blah
end;

himitsu 8. Okt 2004 12:02

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
genau ... aber Date braucht man nicht runden ;)

Begründung ist oben drin ^^

:wall: hatte deinen Kontext kurz nach'm Abschicken dann auch begriffen -.-''

JSB 8. Okt 2004 12:07

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
:? Der Sinn der Sache ist der: Ich darf als anwender den DateTimePicker vor dem Heutigem Datum in dem Heutigem Datum und nach dem Heutigem Datum stellen, nur soll ich wenn das Datum noch in der Zukunft liegt gewarnt werden und die Möglichkein haben wieder zurück zu gelangen. Deswegen: Die Meldung soll nur erscheinen wenn das Datum des DateTimePicker's nicht gestern, vorgestern ... (u.s.w in die Vergangenheit) und nicht heute sondern morgen, übermorgen... (u.s.w. in die Zukunft) ist.
Noch eine Frage zum letzten Komentar: Was erreiche ich mit:
Delphi-Quellcode:
Trunc(ddatum.Date) > Trunc(Date)
Was ist da anders??? :?: :?:

Stevie 8. Okt 2004 12:13

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Soll es denn die Möglichkeit geben, ein zukünftiges Datum einzugeben?? Sonst kannst du über die Eigenschaft MaxDate die Datumseingabe eines Datums aus der Zukunft überhaupt nicht zu erlauben!

alcaeus 8. Okt 2004 12:17

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi JSB,

das Trunc schneidet die Nachkommastellen ab. Im Anhang mal ein Vergleich. Das Problem ist, dass auch wenn man Date verwendet, immer noch die Nachkommastellen für die Zeit dabei sind.
Nun nochmal eine Frage zum Problem: die MessageBox kommt also auch, wenn das Datum in der Vergangenheit liegt (also 8.10.2003)?

Greetz
alcaeus

himitsu 8. Okt 2004 12:18

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Also, erstmal ist
Delphi-Quellcode:
Trunc(ddatum.Date) > Trunc(Date)

//und

Trunc(ddatum.Date) > Date
das selbe, da Date wirklich nur das Datum liefert, aber

DateTimePicker1.DateTime, DateTimePicker1.Date und DateTimePicker1.Time liefern alle das Selber, und zwar die komplette Zeit (Datum+Uhrzeit)

und durch Trunc wird halt der Uhrzeit-Anteil abgeschnitten.

Aufbau von TDate, TTime und TDateTime siehe Delphi-Referenz durchsuchenTDateTime

JSB 8. Okt 2004 12:24

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Nein, nur in der Zukunft kommt die MessageBox. Heute und gestern nicht...
aber hab problem gelößt, danke!!! :cheers: :hello: :dancer:

JSB 8. Okt 2004 12:56

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Auf neues Problem gestoßen: :wall:

Delphi-Quellcode:
if ddatum.Date > TDate(Now) then
  begin
if MessageDlg('Achtung! Das Ausgewählte Datum liegt noch in der Zukunft. '+#13+#10+'Bitte wählen Sie Ja um das Datum trotzdem zu übernähmen '+#13+#10+'oder Nein um das Datum zu ändern und dann erst die '+#13+#10+'Buchungdurchzuführen.', mtWarning, [mbYes,mbNo], 0) = mrNo then
        dDatum.SetFocus;
  end else
begin XXXXXXX end;
Die Messagebox kommt zwar aber wenn ich Ja sage passiert nicht das was zwischen dem letzten begin und end; steht (hier also: XXXXXX). Was mache ich falsch?? :?: :?:

himitsu 8. Okt 2004 13:01

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
stell dir das mal ein bissl um und du siehst, warum es so ist :zwinker;

Delphi-Quellcode:
if ddatum.Date > TDate(Now) then begin
  if MessageDlg = mrNo then dDatum.SetFocus;
end else begin
  XXXXXXX
end;

wenn du willst, dass das nach dem Else mit zur MessageDlg-Abfrage gehört, dann:
Delphi-Quellcode:
if ddatum.Date > TDate(Now) then
  if MessageDlg = mrNo then
    dDatum.SetFocus
  else begin
    XXXXXXX
  end;

JSB 8. Okt 2004 13:20

Re: Abfrage: Wenn ein Datum in der Zukunft liegt
 
Dake alles klappt!!! :-D :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

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