Hallo
DPunch hat geschrieben:Hast Du das Mal mit entsprechenden Zahlen hinter den Fragezeichen ausprobiert?
Ich habe jetzt extra noch mal das folgende probiert... weiss der liebe Gott, für was das gut ist und wem es helfen mag....
SQL-Command direkt ausführen.
SELECT * FROM MyTable WHERE BegDat <= :Dat AND EndDat >= :Dat
SELECT * FROM MyTable WHERE BegDat <= :Dat1 AND EndDat >= :Dat2
SELECT * FROM MyTable WHERE BegDat <= ? AND EndDat >= ?
Bei allen Fehlermeldung:
Die Dateninhalte konnten nicht geladen werden
Unbound parameters in query
SELECT * FROM MyTable WHERE BegDat <= ?1 AND EndDat >= ?1
Feldmeldung:
Die Dateninhalte konnten nicht geladen werden
parameter marker count incorrect
SQL-Command nicht direkt ausführen
SELECT * FROM MyTable WHERE BegDat <= :Dat AND EndDat >= :Dat
ist erfolgreich, verlangt 1 Eingabe
SELECT * FROM MyTable WHERE BegDat <= :Dat1 AND EndDat >= :Dat2
ist erfolgreich, verlangt 2 Eingaben
SELECT * FROM MyTable WHERE BegDat <= ? AND EndDat >= ?
ist erfolgreich, verlangt 2 Eingaben
SELECT * FROM MyTable WHERE BegDat <= ?1 AND EndDat >= ?1
Fehlermeldung:
Syntaxerror in SQL-Expresson
Fazit: Direkt ausführen gelingt nie. Mein Problem lies sich allein mit dem einen Schalter "Benannte Parameter durch '?' ersetzen" lösen. Allerdings muss man bei SQLite wissen, dass SQLite eigentlich kein typisches als Backend eingesetzbares DBMS ist. SQLite ist eigentlich konzipiert, um als Source-Code in eine entwickelte Anwendung embedded zu werden. Genau dann, wenn diese Applikation eben DB-Funktionalität benötigt und sich nicht zu einer echten DBMS-Instanz verbinden will oder keine echte DBMS-Instanz verfügbar ist. Im Grunde genommen machen die SQLite-Libs und -DLLs aus einer normalen Anwendung ein DB-Frontend mit integriertem Backend. Oder mit anderen Worten: Das Programm wird selber zur Desktop-Datenbank-Anwendung.
Und natürlich kann SQLite auch Parameter-Abfragen ausführen. Aber soweit ich mich erinnere, läuft das dort nicht über einen internen oder externen Parser, sondern über gebundene Parameter. Das heist, das SQL-Statement korrespondiert zur Ausführungszeit mit den Bounded-Params, die eben dynamisch vom Frontend gesetzt werden können. Aber Shit... ist schon so lange her... ich hoffe, ich erinnere mich richtig.
Und hier über OOo isses eben notwendig, dass OOo die SQL-Statements mundgerecht und schmackhaft aufbereitet, so das SQLite sie kauen kann... und das gelingt mit dem o.g. Schalter pefekt über Anbindung via ODBC.
vg, Maddin