![]() |
Datenbank: oracle • Version: 12 • Zugriff über: ado
exception exception in module xxxxx at 00000
Hallo zusammen,
obige Fehlermeldung erhalte ich wenn in einer Abfrage Parameter benutze, diese aber nicht fülle:
Delphi-Quellcode:
Soweit so schlecht, weil ich den Fehler nicht im SQL-Text gesucht habe.
{verkürzt}
adoquery.sql.text:='select irgendwas von tablee99 where key=:_key and feld1=99'; adoquery.open; { hier kommt die Fehlermeldung} die Fehlerausgabe habe ich so
Delphi-Quellcode:
realisiert, aber bis auf das ominöse Exception Exception ... kommt da nichts.
except
on E: Eoleexception do begin msg:=GetADOErrorString(ADOConnection1); raise exception.create(msg); end else raise; end; Gibt es eine Möglichkeit etwas sprechendere Fehlermeldungen zu bekommen? Gruß K-H |
AW: exception exception in module xxxxx at 00000
Ich hoffen nicht das du den MS Provider für Oracle verwendest.
Dieser ist nie richtig über den Zustand eines Proof of Conzept hinaus gekommen. Am besten schmeißt man bei Oracle ADO weg und nimmt native Zugriffskomponenten wie von DevArt her oder neuerdings FireDac. |
AW: exception exception in module xxxxx at 00000
Ich unterstütze Bernhards Beitrag. Oracle nur Nativ!
Sherlock |
AW: exception exception in module xxxxx at 00000
Versuch' es mal bitte mit dem Abfangen von EAdoError, das dürfte eine näherliegende Exception für das auftretende Problem sein.
Auszug aus 'nem Programm, das Datenbankfehler abfangen muss:
Delphi-Quellcode:
con ist die TAdoConnection,try // Irgendwas, was für 'nen Datenbankfehler sorgen könnte. Except on e : EAdoError do begin slError := TStringList.Create; slError.Add(e.Message); if con.Errors.Count > 0 then begin for i := 0 to con.Errors.Count - 1 do begin slError.Add(Format('Number: %d',[con.Errors.Item[i].Number])); slError.Add(Format('NativeError: %d',[con.Errors.Item[i].NativeError])); slError.Add(Format('Description: %s',[con.Errors.Item[i].Description])); slError.Add(Format('Source: %s',[con.Errors.Item[i].Source])); slError.Add(Format('HelpFile: %s',[con.Errors.Item[i].HelpFile])); slError.Add(Format('SQLState: %s',[con.Errors.Item[i].SQLState])); end; MessageDlg(slError.Text,mtError, [mbOk],0); end else begin MessageDlg(e.Message + #13#13 + qrySQL.SQL.Text, mtError, [mbOk], 0); end; slError.Free; end; on e : Exception do begin MessageDlg(e.Message + #13#13 + qrySQL.SQL.Text, mtError, [mbOk], 0); end; end; qrySQL ist 'ne TADOQuery, slError 'ne TStringList und i ist ein Integer. |
AW: exception exception in module xxxxx at 00000
erst einmal vielen Dank!
@Sherlock und Bernhard Auf die Antwort hätte ich gewettet:wink: nein ich nutze den MS-Provider nicht. Und wenn man nichts anderes hat, muß man eben damit leben *schulterzuck* @nahpets das kommt mir irgendwie bekannt vor, nicht das ich das mal wegoptimiert habe.:oops: Ich hab mir jetzt so beholfen:
Delphi-Quellcode:
jetzt kommt
ADOQuery1.SQL.Text:=QueryText.Text;
if ADOQuery1.Parameters.Count>0 then begin raise exception.Create('Parameters are not accepted'); exit; end; --------------------------- Anwendungsfehler --------------------------- Exception Exception in Modul SQLClient.exe bei 00000000. Parameters are not accepted. --------------------------- OK --------------------------- Das ist zwar nicht so schön, erfüllt aber erst einmal seinen Zweck. Vielen dank! K-H |
AW: exception exception in module xxxxx at 00000
Naja, kann man so machen, aber wie wäre es denn, die Parameter einfach abzufragen?
Delphi-Quellcode:
Im Quelltext dann vor dem Open der Query sowas:
procedure GetSQLParameters(qry : TAdoQuery);
var i : Integer; begin with qry.Parameters do begin if Count > 0 then begin for i := 0 to Count - 1 do begin qry.Parameters[i].Value := InputBox('Parametereingabe:',qry.Parameters[i].Name + ' = ',''); end; end; end; end;
Delphi-Quellcode:
try
qry.SQL.Text := // irgendeine Zuweisung: GetSQLParameters(qry); qry.Open except // siehe oben end; |
AW: exception exception in module xxxxx at 00000
Bekommst du denn grundsätzlich eine Fehlermeldung die mehr ausgibt?
Ich meine in dem du ein Dump file erstellst wenn die Anwendung abstürzt? Vorrausgesetzt natürlich es ist ein System Exception. Wenn Windows selbst nicht in der Lage ist mehr Informationen darüber zu geben wirst du es im Programm ohne eigene exception Routine auch nicht erreichen. So wie du es ja hier gemacht hast.
Delphi-Quellcode:
raise exception.Create('Parameters are not accepted');
gruss |
AW: exception exception in module xxxxx at 00000
Zitat:
Zitat:
Mein eigentliches Problem ist, daß es Dummheiten gibt, die ich mir nicht vorstellen kann, und da hätte ich gerne vom "System" eine halbwegs aussagekräftige Fehlermeldung. (wer grinst da?) @nahpets Wie ich vermutet habe, die Meldung hab ich wegoptimiert. Also wieder hineinfrickeln und mal sehen was sich tut. Falls ich Ergebnisse vorzeigen kann, schreib ich wieder. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz