Autor Beitrag
butterkeks
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56

Win XP, Win 7
Delphi 2007
BeitragVerfasst: Mo 15.11.10 16:37 
Hallo,

ich habe das Problem das ich den Fehler

Unknown Column 'Datum' in 'Where clause'

angezeigt bekomme wenn ich die abfrage

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
SELECT Schmuck.snummer, Schmuck.ver_preis, Schmuck.lieferant, Kassenbericht.Datum
FROM Schmuck, Kassenbericht
WHERE STR_TO_DATE( Kassenbericht.Datum, "%d.%m.%Y" ) 
BETWEEN STR_TO_DATE( "01.03.2009""%d.%m.%Y" ) 
AND STR_TO_DATE( "31.03.2009""%d.%m.%Y" ) 
AND Schmuck.snummer = Kassenbericht.snummer
ORDER BY Kassenbericht.id


ausführe.

Die Spalten sind alle in den entsprechenden Tabellen vorhanden und es dürfte eigentlich keine Probleme geben, was man halt auch daran merkt das die abfrage von PHPMYADMIN fehlerfrei durchläuft.

Das komische dabei ist, das ich diese abfrage ohne Fehler in PHPMYADMIN ausführen kann, aus meiner in Delphi geschriebenen Anwendung heraus aber immer den Fehler ausgegeben bekomme.

Ich benutze die komponenten TSQLconnection und TSQLQuery.

Weiss jemand wie man das hinbekommen kann?

Moderiert von user profile iconMartok: SQL-Tags eingefügt

_________________
Dear lord,
please grant me the ability to punch people in the face over Standard TCP/IP!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 15.11.10 17:11 
Geht es denn ohne die where Bedingung? Also wird die Spalte denn überhaupt gefunden?

Ich schau sonst nachher einmal.
butterkeks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56

Win XP, Win 7
Delphi 2007
BeitragVerfasst: Mo 15.11.10 17:27 
Es SCHEINT zu gehen...ich kann es nur nicht zu ende testen, da ohne die Datumseinschränkung auf meinem System hier ein Durchlauf eine Stunde dauert^^

Er wirft auf jeden Fall nicht wie vorher direkt als erstes die Fehlermeldung aus.

Und das er die Spalte nicht findet kann eigentlich auch nicht sein, weil ich die Spalte mit einem "SELECT Datum FROM Kassenbericht" anzeigen lassen kann. Das muss irgendwie an dieser speziellen Abfrage hängen.

_________________
Dear lord,
please grant me the ability to punch people in the face over Standard TCP/IP!
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Mo 15.11.10 17:42 
Was ist STR_TO_DATE? Ist das eine Funktion von PHP oder der Datenbank?
Wenn ich mir das allgemein anschaue, ist die Clausel für einen Datumsrange doch eigentlich
ausblenden SQL-Anweisung
1:
Datumsfeld BETWEEN "2010-01-01" AND "2010-12-31"					


In deinem Fall wäre das dann doch sicher eher so?
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
SELECT Schmuck.snummer, Schmuck.ver_preis, Schmuck.lieferant, Kassenbericht.Datum
FROM Schmuck, Kassenbericht
WHERE Kassenbericht.Datum
BETWEEN "2009-03-01"
AND "2009-03-31"
AND Schmuck.snummer = Kassenbericht.snummer
ORDER BY Kassenbericht.id

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
butterkeks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56

Win XP, Win 7
Delphi 2007
BeitragVerfasst: Mo 15.11.10 18:11 
STR_TO_DATE ist eine MySql funktion.

Und diese muss enthalten sein weil das Datum als Varchar abgelegt wird und daher das Between sonst nicht richtig funktioniert.

_________________
Dear lord,
please grant me the ability to punch people in the face over Standard TCP/IP!
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: Mo 15.11.10 21:00 
[OT]
Zitat:
Datum als Varchar abgelegt

wenns irgenwie machbar ist solltest du das ändern... oder dem DB Admin auf die Finger klopfen.
[/OT]
butterkeks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56

Win XP, Win 7
Delphi 2007
BeitragVerfasst: Mo 15.11.10 23:43 
Ich weiss^^ aber geht im Moment nicht anders.

Aber es funktioniert ja per Datumsformatierung...ist halt nur die frage warum das in diesem Fall nicht geht.

_________________
Dear lord,
please grant me the ability to punch people in the face over Standard TCP/IP!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 16.11.10 06:55 
Ich habe gerade kurz gesucht und einen entsprechenden Bugreport gefunden:
bugs.mysql.com/bug.php?id=6310
Andere haben also wohl das selbe Problem. Und wenn du bei between direkt die Strings angibst und nur bei der Spalte selbst STR_TO_DATE benutzt?
butterkeks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56

Win XP, Win 7
Delphi 2007
BeitragVerfasst: Do 18.11.10 13:11 
Jetzt konnte ich endlich die Möglichkeiten durchtesten.
Aber ich hab immer das gleiche Problem, er gibt die selbe Fehlermeldung aus.

Gibt es denn keine Möglichkeit das irgendwie hin zu bekommen?

_________________
Dear lord,
please grant me the ability to punch people in the face over Standard TCP/IP!
Burgwart
Hält's aus hier
Beiträge: 5
Erhaltene Danke: 1



BeitragVerfasst: Do 18.11.10 16:54 
Hallo!

Also bei mir geht das so! Ich hoffe es hilft.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
  SQL.Close;
  SQL.SQL.Clear;
  s := 'select b.aus,a.rechnungsdatum,c.anzahl,b.preis,d.artikelname,e.nachname,e.firma,';
  s := s + 'e.land,b.id from rechnung a,rechnung_t b,auftrag_t c,artikel d,kunde e where a.id=b.rechnung_id and ';
  s := s + 'a.kunde_id=e.id and (a.storniert=0 or isnull(a.storniert)) and b.auftragt_id=c.id and ';
  s := s + 'c.artikel_id=d.id and d.artikelname like :p1 and a.rechnungsdatum >= :p2 and ';
  s := s + 'a.rechnungsdatum <= :p3 and e.land like :p4 order by 2';
  SQL.SQL.Append(s);
  s1 := DateFormat(datetostr(d_begin.value));
  s2 := DateFormat(datetostr(d_end.value));
  SQL.ParamByName('p1').AsString := '%' + aname.Text + '%';
  SQL.ParamByName('p2').AsString := s1;
  SQL.ParamByName('p3').AsString := s2;
  SQL.ParamByName('p4').AsString := '%' + land.Text + '%';
  SQL.Open;


Function TForm32.DateFormat(date : String): string;
var
 rechnungsdatum,m,d,y,s : string;
 begin
  s := date;
  d := Copy(s,1,Pos('.',s)-1);
  Delete(s,1,Pos('.',s));
  m := Copy(s,1,Pos('.',s)-1);
  Delete(s,1,Pos('.',s));
  y := Copy(s,1,Length(s));
  rechnungsdatum := y+'-'+m+'-'+d;
  result := rechnungsdatum;
end;

Datum im Edit.Text := '18.11.2010';


Gruß Burgwart

Moderiert von user profile iconMartok: Delphi-Tags gesetzt
butterkeks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56

Win XP, Win 7
Delphi 2007
BeitragVerfasst: Mo 22.11.10 17:21 
Hmm nee, auch mit deiner Schreibweise gibt's den selben Fehler...er weiß immer nicht das es eine Spalte gibt die er normalerweise haben müsste -.-

Ich versteh nicht was da falsch laufen kann...

Es ist, als ob er keine Join's kann...

_________________
Dear lord,
please grant me the ability to punch people in the face over Standard TCP/IP!