![]() |
Datenbank: Access / MySql • Zugriff über: EDB-Komponenten
Probleme bei MySQL Abfrage
Morgen,
ich hab folgendes Problem: Ich greife per EDB-Kombo auf eine Access-DB zu. Jetzt stelle ich folgende Anfrage:
Delphi-Quellcode:
Das Datum ist das aktuelle Datum im Format 01.01.2005!
EDBListView1.LoadSQL('SELECT * FROM rechnungen WHERE (r4 = "0") AND (r6 < "'+datum+'") AND NOT (r1 = "'+datum+'") ORDER by ...
Im Feld r6 und r1 ist genau das gleiche Format. Funktion - es soll mir alle Datensätze ziehen die kleiner sind als heute, im Feld r4 0 und im Feld r1 Nicht heute. Das macht er auch hervorragend, aber nur wenn in den Felder Datumswerte aus dem Monat 04 stehen, also wenn 01.04.2005 drin steht gibt er mir den aus, wenn aber 01.03.2005 drin steht nicht mehr!? Also alles das was vor dem aktuellen Monat ist, wird nicht ausgelesen. Hat jemand ne Idee warum das so ist - denn der 10.02.2004 ist ja kleiner als der 10.04.2005 oder?? Danke, delphipitti |
Re: Probleme bei MySQL Abfrage
Zitat:
der mySQL-Server erwartet das Datum immer im Format yyyy-mm-dd Am einfacchsten ist es wenn Du mit Parametern arbeitest. Dann musst Du dich um solche Dinge nicht kümmern. |
Re: Probleme bei MySQL Abfrage
Also paar Sachen:
1. In SQL nimmt man normal einfache Hochommate ' statt doppelte " 2. Wenn du 2 Strings miteinander vergleichst, und "01.03.2005" ist nix anderes als ein String, dann ist nun mal "01.03.2005" < als "15.02.2005"... Schreibt mal stattdessen im Format 2005-03-01, also Jahr, Monat, Tag. Dann sollte das klappen. |
Re: Probleme bei MySQL Abfrage
Zitat:
So nochmal zum Thema. Ich brauch aber leider das (ich weiß) unschöne Format von xx.xx.xxxx da dieses Datum für einen Datumswert in einer Ausgabe so gebraucht wird! Und ich habe keine Lust das Format erst umzumodeln. Und amerikanisches Format in deutschen Rechnungen - na ja. Könnte man es irgendwie anders "umrechnen"? Danke |
Re: Probleme bei MySQL Abfrage
Delphi-Quellcode:
müsste funzen
function GetAmericanDate(Datum:String):String;
begin Result:=copy(Datum,7,4)+'.'+copy(Datum,4,2)+'.'+copy(Datum,1,2); end; function GetGermanDate(Datum:String):String; begin Result:=copy(Datum,9,2)+'.'+copy(Datum,6,2)+'.'+copy(Datum,1,4); end; |
Re: Probleme bei MySQL Abfrage
mmh - werd ich mal probieren. Kostet mich zwar wieder ein wenig Arbeit...
Jetzt hab ich aber das Problem, das ich die Ami-Werte so in der Listview stehen habe, was natürlich ein wenig gewöhnungsbedürftig ist. Gebe gleich mal den Statusbericht :P |
Re: Probleme bei MySQL Abfrage
Zitat:
Du kannst doch einfach (d)einen TDateTime für den SQL-Befehl entsprechend formatieren (DateTiemToStrF glaube ich). Oder, wie schon gesagt. Verwende Parameter. |
Re: Probleme bei MySQL Abfrage
@ glkgereon
Hat so hervorragend geklappt!! :bounce2: Rechne es halt vorher um und bei nach der Anfrage wieder zurück. Habe jetzt nur ein Problem - da ich ja die EDB-Listview-Anfrage direkt setze (und ich leider keine Änderungen an den Werten vornehmen kann) habe ich dort das Ami-Format stehen. Stört zwar nicht sonderlich - zwingt aber zum Umdenken. Wie krieg ich das am besten hin, das ich die Umrechnung in die Abfrage einbaue!? (bitte keine Tipps mit RS-Records - das würde zu aufwendig werden :? ) Trotzdem erstmal vielen Dank an alle :hello: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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