Datenbank: Oracle • Version: 9.0.1 • Zugriff über: ADO
OleException bei Select auf Spalte mit Datentyp Date
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:
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.
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); 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:
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.
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); 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! |
Re: OleException bei Select auf Spalte mit Datentyp Date
Meine Erfahrungen bei Oracle-DB-SW ist das winzige Versionsunterschiede DB, Net-Client, ... zu gewaltigen Problemen führen können.
Ich empfehle dir z.B. Native Kompos wie von Core Labs zu verwenden und ADO links liegen zu lassen. |
Re: OleException bei Select auf Spalte mit Datentyp Date
Das wären dann die "Oracle Data Access components". (bei mir für Delphi 7)
Werd ich demnächst mal ausprobieren. Zitat:
Aber vielleicht hat ja trotzdem noch jemand auf das ADO-Problem eine Antwort. |
Re: OleException bei Select auf Spalte mit Datentyp Date
Zitat:
Eigene App, Core Labs Compos, Oracle DB im Gegensatz zu ADO: Eigene App, ADOExpress, ADO, OLE DB-Provider (Oracle), Oracle DB wobei ich vor allem die Oracle-Teile erfahrungstechnisch nicht gerade sehr Fehlerfrei sind. |
Re: OleException bei Select auf Spalte mit Datentyp Date
Hmmm, na ganz alleine scheint die Exe dann doch nicht zu gehen. Zumindest beim ersten TEst konnte ich ih nicht überreden die bpl's selber mitzunehmen. :gruebel:
aber, das hat sich erstmal. In diesem Projekt ist die Begeisterung nicht grad hoch gewesen $200 auszugeben. Unis sind halt immer pleite. Naja, mal sehen, vielleicht im nächsten Projekt. Jetzt muss ich mich erstmal mit ADO rumschlagen. |
Re: OleException bei Select auf Spalte mit Datentyp Date
Mußt du den bei Zeos bei Oracle über ADO gehen? Wird hier nicht der NET-Client unterstützt?
|
Re: OleException bei Select auf Spalte mit Datentyp Date
Zitat:
Ich habe bisher noch nix mit Zeos am Hut gehabt. Oder denkst du, weil es "ZQuery" heist, ist es Zeos? Also das "Z" steht für Ziel und ist ein TADOQuery. |
Re: OleException bei Select auf Spalte mit Datentyp Date
Zitat:
Zitat:
|
AW: OleException bei Select auf Spalte mit Datentyp Date
Den Fehler kann ich z.B. so provozieren:
Code:
Ok Rumpelstielzchen sollte es geben, aber dann geht die Luzie ab.
select * from Name,Adresse where name='Rumpelstielzchen'
Ich habe den Eindruck, daß "Es gibt keine weiteren Ergebnisse" auf einen Bufferoverflow oder ähnliches hindeutetet, weil es zu viele Datensätze in der Ergebnismenge gibt Gruß K-H |
AW: OleException bei Select auf Spalte mit Datentyp Date
Zitat:
Hast du alle Oracle-Treiber auf aktuellen Stand? Gehst du auch über die fehlerhaften MS-Oracle-ADO-Treiber auf die DB los? Wir konnten im Studium mit fehlerhaften SQL-Statement das ganze Uni-Netz wegen Fehler in einem Oracle-Treiber lahm legen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz