Ich habe eine Datenbank in der in einer Tabelle Zeiten drinstehen. Diese Spalte ist vom Datentyp "Date". Jetzt würde ich gerne so eine Zeit auslesen (reinschreiben funktioniert problemlos). Das Auslesen wünschte ich mir so:
Delphi-Quellcode:
with ZQuery.SQL do begin
clear;
add('Select');
add('min('+cdatum+') as k,');
add('max('+cdatum+') as g');
add('from '+cdbt+cdatum);
end;
DoActive(zquery); //zquery.active:=true
if zquery.isempty then modalresult:=mrabort;
mindate:=trunc(ZQuery.fieldbyname('k').AsFloat);
maxdate:=trunc(ZQuery.fieldbyname('g').AsFloat);
Hinter Doactive steht nur ein "Zquery.active:=true;" mit Exceptionbehandlung. Es ist egal, ob ich den Ausdruck direkt hinschreibe oder in dieser Methode. Der Fehler ist derselbe.
Achja und die Konstanten sind Strings mit folgendem Inhalt
cDatum='DATUM'
cdbt='DBT_'
Wenn ich active auf true setze kommt eine EOleException mit der Message: "Es gibt keine weiteren Ergebnisse."
Über die
BDE lief das alles früher mal ohne Probleme/
Exception.
Nach ausgezupften Haaren und langem Suchen (Diese Meldung ergibt doch gute 2,5 Ergebnisse bei Google) habe ich diese Lösung gefunden:
Delphi-Quellcode:
with ZQuery.SQL do begin
clear;
add('Select');
add('min('+cdatum+'-to_date(''31/12/1899'',''DD/MM/YYYY'')) as k,');
add('max('+cdatum+'-to_date(''31/12/1899'',''DD/MM/YYYY'')) as g');
add('from '+cdbt+cdatum);
end;
DoActive(zquery);
if zquery.isempty then modalresult:=mrabort;
mindate:=trunc(ZQuery.fieldbyname('k').AsFloat);
maxdate:=trunc(ZQuery.fieldbyname('g').AsFloat);
Nun finde ich die Lösung nicht so ganz zufriedenstellend. Ich weis nun nicht, ob es an dem
OLE DB-Treiber liegt (der Connectionstring ist "Provider=OraOLEDB.Oracle.1;Persist Security Info=True;Data Source=TestDB") oder an den
ADO-Kompos. Die
Query ist übrigens mit einer ADOConnection verbunden.
Ansonsten läuft alles einwandfrei (mit der Datenbank)
Noch ne Sache: Wenn diese
Exception aufgetreten ist, dann kann einer meiner Threads (der in regelmäßigen Abständen eine andere Tabelle überprüft und seine eigenen
ADO-Instanzen hat) plötzlich die einfachste Abfrage nicht mehr (ein select auf ein Number- und ein VarChar- Feld) das sonst, parallel zu allen anderen Sachen immer funktioniert. Der wirft auch ne
Exception.
Vielleicht kennt das Problem jemand und ich habe nur die
ADO-Kompos in die falsche Hand genommen.
Danke im Vorraus!
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.