Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Als String abgelegtes Datum vergleichen (https://www.delphipraxis.net/98859-als-string-abgelegtes-datum-vergleichen.html)

Bufo 3. Sep 2007 02:31


Als String abgelegtes Datum vergleichen
 
Hallo,

ich möchte ein in einer DB als alphanumerischen Wert abgelegtes Datum mit einem vorgegebenen Datum vergleichen. Definiere ich dieses ebenfalls als String (Format dd.mm.yy), werden nur die Stellen vor dem ersten Punkt (dd) berücksichtigt. Versuche ich, das Datum aus der DB mit StrToDate umzuwandeln, bekomme ich eine Fehlermeldung. Code:


.............
S.Text:= 'SELECT AnnDat, Name, Vorname,Smile,Plz,Ort,Strasse, Status,AFTyp FROM' +''''+DBPfadAUftr+''' WHERE (AFTyp = "WZ-Wartung" AND (StrToDate(AnnDat)) < ''30.12.2006'')';

QueryAuftr.Active:=false;
QueryAuftr.SQL:=S;
QueryAuftr.Active:= true;.......


Was mache ich falsch???

Danke schon mal!

Luckie 3. Sep 2007 03:17

Re: Als String abgelegtes Datum vergleichen
 
Das ist keine Fehlermeldung.

mkinzler 3. Sep 2007 06:36

Re: Als String abgelegtes Datum vergleichen
 
Du kannst keine Delphi-Funktionen in einem SQL-Abfrage verwenden.
Warum legst du das Datum als String in der Datenbank ab?

dataspider 3. Sep 2007 07:08

Re: Als String abgelegtes Datum vergleichen
 
Hi,

wie du im Select einen String in ein Datum umwandelst, hängt von der DB ab.
Meist ist das ein Cast(Stringtyp as Date).
Also etwa so:
SQL-Code:
(AFTyp = "WZ-Wartung" AND Cast(AnnDat as Date) < ''30.12.2006'')...
Was man aber auch vermeiden sollte, ist ein Umbiegen des Zeigers:

Delphi-Quellcode:
QueryAuftr.SQL:=S;
Besser ist:
Delphi-Quellcode:
QueryAuftr.SQL.Assign(S);

Frank

Bufo 3. Sep 2007 11:17

Re: Als String abgelegtes Datum vergleichen
 
:-D Danke, klappt hervorragend!!!!

Gruber_Hans_12345 3. Sep 2007 11:37

Re: Als String abgelegtes Datum vergleichen
 
Zitat:

Zitat von dataspider
Was man aber auch vermeiden sollte, ist ein Umbiegen des Zeigers:

Delphi-Quellcode:
QueryAuftr.SQL:=S;
Besser ist:
Delphi-Quellcode:
QueryAuftr.SQL.Assign(S);
Frank

also das "direkte" setzen von SQL ist kein problem, da es sich dabei fast immer um ein property handelt, das im setter dann selber das assign durchführt - sprich es werden keinerlei zeiger verbogen dabei


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 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