Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme bei MySQL Abfrage (https://www.delphipraxis.net/44130-probleme-bei-mysql-abfrage.html)

delphipitti 14. Apr 2005 07:46

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:
EDBListView1.LoadSQL('SELECT * FROM rechnungen WHERE (r4 = "0") AND (r6 < "'+datum+'") AND NOT (r1 = "'+datum+'") ORDER by ...
Das Datum ist das aktuelle Datum im Format 01.01.2005!

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

Sharky 14. Apr 2005 07:57

Re: Probleme bei MySQL Abfrage
 
Zitat:

Zitat von delphipitti
... Das Datum ist das aktuelle Datum im Format 01.01.2005!...

Hai delphipitti,
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.

Jelly 14. Apr 2005 08:00

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.

delphipitti 14. Apr 2005 08:45

Re: Probleme bei MySQL Abfrage
 
Zitat:

1. In SQL nimmt man normal einfache Hochommate ' statt doppelte "
So leider nicht richtig! Im PHP schon, aber im Delphi und insbesondere bei den EDb-Kombos (die ich jedem empfehlen kann) MUSS ich doppelte nehmen.

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

glkgereon 14. Apr 2005 08:49

Re: Probleme bei MySQL Abfrage
 
Delphi-Quellcode:
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;
müsste funzen

delphipitti 14. Apr 2005 08:57

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

Sharky 14. Apr 2005 08:58

Re: Probleme bei MySQL Abfrage
 
Zitat:

Zitat von delphipitti
... Und amerikanisches Format in deutschen Rechnungen - na ja.

yyyy-mm-dd ist zwar auch das offizielle deutsche Datumsformat aber das ist ja hier nicht das Thema ;-)

Du kannst doch einfach (d)einen TDateTime für den SQL-Befehl entsprechend formatieren (DateTiemToStrF glaube ich).

Oder, wie schon gesagt. Verwende Parameter.

delphipitti 14. Apr 2005 11:31

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 06:22 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