Autor Beitrag
Rupert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47
Erhaltene Danke: 1

Netware, Linux, WIN A-Z, DOS
Delphi 2005- Delphi 2009
BeitragVerfasst: Sa 22.11.08 16:10 
Access 2000 bringt mich zur Verzweiflung!
Ich versuche eine Access-Tabelle mit SQL in einem Delphi-Programm abzufragen. Im Query1:TQuery gebe ich den String ein und diese Abfrage funktioniert tadellos, auch wenn das Programm mit dieser Vorgabe gestartet ist.

ausblenden SQL-Anweisung
1:
2:
3:
SELECT * from TKpo
WHERE ((TKpo.LT=#11/20/2008#))
ORDER BY TKpo.LT asc


Übergebe ich allerdings diesen (den selben) String im Laufzeitmodus in den Query1.SQL und aktiviere ich diesen, dann erhalte ich die Meldung:#

user defined image
Einloggen, um Attachments anzusehen!
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: So 23.11.08 18:45 
Nimm Parameter:

[url]MyQuery.SQL.Add('SELECT * from TKpo WHERE ((TKpo.LT= :Param1)) ORDER BY TKpo.LT asc');
MyQuery.ParamByName('Param1').AsDateTime := datetimewert;[/url]

Und schon bist du das Leidige Codierungsproblem los (und bist auch gegen SQL-Injection geschützt).

Wieso denn überhaupt noch BDE/ODBC? Bei Access bietet sich ADO(Express)/dbGO (TADOQuery) an.
Rupert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47
Erhaltene Danke: 1

Netware, Linux, WIN A-Z, DOS
Delphi 2005- Delphi 2009
BeitragVerfasst: Mo 24.11.08 19:24 
user profile iconBernhard Geyer hat folgendes geschrieben Zum zitierten Posting springen:

Wieso denn überhaupt noch BDE/ODBC? Bei Access bietet sich ADO(Express)/dbGO (TADOQuery) an.


:beer: Vorerst Danke für die Hilfe - hat funktioniert.
hier der eigentliche Code:
ausblenden SQL-Anweisung
1:
2:
3:
4:
SELECT TKpo.LT, TKpo.KW, TArt.Artikelnr, TArt.Artikel, TKpo.Menge, TArt.ME
FROM TArt INNER JOIN TKpo ON TArt.Artikelnr = TKpo.Artikelnr
WHERE (((TKpo.LT)>=:LSV And (TKpo.LT)<=:LSB))
ORDER BY TKpo.LT asc

Query1.ParamByName('LSV').AsDateTime := strtodate(LTV_Datum.Text);
Query1.ParamByName('LSB').AsDateTime := strtodate(LTB_Datum.Text);

LSV und LSB sind von-bis Datumsangaben (bei der Verwendung between nimmt er den letzten Tag nicht an.

Wieso denn überhaupt noch BDE/ODBC :?:
Weil ich Absolute DB verwende und für die äußerst spärlichen Abfragen auf Microsoft -Datenbanken oder ähnliches die ODBC-Methode an und für sich ausreicht.
Bis auf ein paar ausnahmen, wie man sehen konnte. :wink:

Danke!