![]() |
Datenbank: MySQL • Version: 4.x • Zugriff über: Zeos
Abfrage nach Datum
Hallo Leute,
man merkt wohl, dass ich wieder hart am Arbeiten bin :wink: Die Frage wurde schon einige Male gestellt, habe die verschiedenen Varianten auch ausprobiert - geht aber immer noch nicht. Also folgende Abfrage:
Delphi-Quellcode:
geht nicht.
DecodeDate(DTPvon.date, Jahr, Monat, Tag);
sdatumvon:= inttostr(Jahr) + '-' + inttostr(Monat) + '-' + inttostr(Tag); query.SQL.text:= 'SELECT * FROM `arbeitszeit` WHERE datum > ' + sdatumvon; Ebenso auch das hier:
Delphi-Quellcode:
Das Datum wird dabei überhaupt nicht berücksichtigt.
DecodeDate(DTPvon.date, Jahr, Monat, Tag);
sdatumvon:= inttostr(Jahr) + '-' + inttostr(Monat) + '-' + inttostr(Tag); DecodeDate(DTPbis.date, Jahr, Monat, Tag); sdatumbis:= inttostr(Jahr) + '-' + inttostr(Monat) + '-' + inttostr(Tag); query.SQL.text:= 'SELECT * FROM `arbeitszeit` WHERE datum BETWEEN ' + sdatumvon + ' AND ' + sdatumbis; Mit
Delphi-Quellcode:
wird mir z.B. "15.05.2006" angezeigt. Sollte hier nicht eigentlich das Format YYYY-MM-DD verwendet werden? Und wenn ich das datum nicht umkodiere, sondern direkt "DTPvon.date" nehme, bekomme ich auch eine Fehlermeldung, diesmal, dass die SQL-Syntax nicht korrekt ist..
showmessage(query.Fieldbyname('datum').AsString);
Jetzt hab ich mal zum Test
Delphi-Quellcode:
eingegeben und nun werden mir alle Datensätze angezeigt, in denen das Datum leer ist..
query.SQL.text:= 'SELECT * FROM `arbeitszeit` WHERE datum < ' + sdatumvon;
Irgendwie weiss ich nicht mehr weiter.. MfG davar |
Re: Abfrage nach Datum
Guten Morgen.
Wenn du mit Parametern arbeitest, dann vergisst du nicht deine Datum-Strings in Hochkommata einzupacken:
Delphi-Quellcode:
Grüße vom marabu
QuotedStr(sDatumVon)
|
Re: Abfrage nach Datum
Zitat:
|
Re: Abfrage nach Datum
Zitat:
Du solltest trotzdem lieber mit Parametern arbeiten. Das hat riesen Vorteile. |
Re: Abfrage nach Datum
Zitat:
Was für Vorteile bringen denn Parameter? Bis jetzt habe ich keinen Unterschied festgestellt und so wie ich es jetzt mache war es eigentlich bequemer für mich.. |
Re: Abfrage nach Datum
Zitat:
Mit Parametern sähe das einfach so aus:
Delphi-Quellcode:
begin
with Query do begin Close; SQL.Text := 'SELECT * FROM arbeitszeit WHERE datum BETWEEN :datumvon AND :datumbis'; ParamCheck := True; ParamByName('datumvon').AsDate := DTPvon.date; ParamByName('datumbis').AsDate := DTPbis.date; Open; end; end; |
Re: Abfrage nach Datum
Genau so
Delphi-Quellcode:
hab ich es jetzt gemacht, aber nun kommt die Meldung "Parameter 'kundennummer' nicht gefunden.' " Und genauso mit "datumvon", wenn ich "kundennummer" weglasse. Kann es sein, dass TZMySQLQuery anders mit Parametern umgeht als TQuery?
with query do
begin Close; SQL.text:= 'SELECT * FROM `arbeitszeit` WHERE kundennummer = ' + querykunden.Fieldbyname('kundennummer').AsString + ' AND datum BETWEEN :datumvon AND :datumbis' ; ParamCheck:= true; ParamByName('datumvon').AsDate := DTPvon.date; ParamByName('datumbis').AsDate := DTPbis.date; Open; end; |
Re: Abfrage nach Datum
Hmmm ich arbeite ja auch mit den Zeos-Komponenten für den Zugriff auf mySQL. Ich würde es mal so versucben:
Delphi-Quellcode:
Aber noch eine andere Frage: Warum speicherst Du die Kundennummer in der Arbeitszeittabelle? Besser wäre doch die ID (PrimaryKey) als Referenz zu verwenden.
with query do
begin Close; SQL.text:= 'SELECT * FROM `arbeitszeit` WHERE (kundennummer = :kundennummer) AND (datum BETWEEN :datumvon AND :datumbis)'; ParamCheck:= true; ParamByName('kundennummer').AsString := querykunden.Fieldbyname('kundennummer').AsString; ParamByName('datumvon').AsDate := DTPvon.date; ParamByName('datumbis').AsDate := DTPbis.date; Open; end; Ach ja, ist die "Kundennummer" ein String oder nur eine Zahl? Wenn eine Zahl könntest Du natürlich auch .AsInteger als Übergabeformat benutzen. |
Re: Abfrage nach Datum
Zitat:
Zitat:
Zitat:
|
Re: Abfrage nach Datum
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 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