Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#1

OleException bei Select auf Spalte mit Datentyp Date

  Alt 31. Jul 2007, 21:32
Datenbank: Oracle • Version: 9.0.1 • Zugriff über: ADO
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.
  Mit Zitat antworten Zitat