AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken exception exception in module xxxxx at 00000
Thema durchsuchen
Ansicht
Themen-Optionen

exception exception in module xxxxx at 00000

Ein Thema von p80286 · begonnen am 16. Jun 2016 · letzter Beitrag vom 16. Jun 2016
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

exception exception in module xxxxx at 00000

  Alt 16. Jun 2016, 16:05
Datenbank: oracle • Version: 12 • Zugriff über: ado
Hallo zusammen,
obige Fehlermeldung erhalte ich wenn in einer Abfrage Parameter benutze, diese aber nicht fülle:
Delphi-Quellcode:
{verkürzt}
adoquery.sql.text:='select irgendwas von tablee99 where key=:_key and feld1=99';
adoquery.open; { hier kommt die Fehlermeldung}
Soweit so schlecht, weil ich den Fehler nicht im SQL-Text gesucht habe.
die Fehlerausgabe habe ich so
Delphi-Quellcode:
except
    on E: Eoleexception do
    begin
      msg:=GetADOErrorString(ADOConnection1);
      raise exception.create(msg);
    end
    else raise;
  end;
realisiert, aber bis auf das ominöse Exception Exception ... kommt da nichts.
Gibt es eine Möglichkeit etwas sprechendere Fehlermeldungen zu bekommen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: exception exception in module xxxxx at 00000

  Alt 16. Jun 2016, 16:32
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#3

AW: exception exception in module xxxxx at 00000

  Alt 16. Jun 2016, 16:33
Ich unterstütze Bernhards Beitrag. Oracle nur Nativ!

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: exception exception in module xxxxx at 00000

  Alt 16. Jun 2016, 16:39
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:
    
    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;
con ist die TAdoConnection,
qrySQL ist 'ne TADOQuery,
slError 'ne TStringList und i ist ein Integer.

Geändert von nahpets (16. Jun 2016 um 16:43 Uhr) Grund: immer diese überflüssigen Schreibfehler :-(
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: exception exception in module xxxxx at 00000

  Alt 16. Jun 2016, 17:01
erst einmal vielen Dank!
@Sherlock und Bernhard
Auf die Antwort hätte ich gewettet 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.

Ich hab mir jetzt so beholfen:
Delphi-Quellcode:
 ADOQuery1.SQL.Text:=QueryText.Text;
 if ADOQuery1.Parameters.Count>0 then begin
   raise exception.Create('Parameters are not accepted');
   exit;
 end;
jetzt kommt
---------------------------
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: exception exception in module xxxxx at 00000

  Alt 16. Jun 2016, 17:09
Naja, kann man so machen, aber wie wäre es denn, die Parameter einfach abzufragen?
Delphi-Quellcode:
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;
Im Quelltext dann vor dem Open der Query sowas:
Delphi-Quellcode:
  try
    qry.SQL.Text := // irgendeine Zuweisung:
    GetSQLParameters(qry);
    qry.Open
  except
    // siehe oben
  end;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: exception exception in module xxxxx at 00000

  Alt 16. Jun 2016, 17:20
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.

raise exception.Create('Parameters are not accepted');

gruss

Geändert von EWeiss (16. Jun 2016 um 17:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: exception exception in module xxxxx at 00000

  Alt 16. Jun 2016, 17:55
Naja, kann man so machen, aber wie wäre es denn, die Parameter einfach abzufragen?
Im Augenblick ist eine Parameterabfrage nicht gewünscht, aber der Ansatz ist interessant, muß ich mir aufheben.

Bekommst du denn grundsätzlich eine Fehlermeldung die mehr ausgibt?
Ich meine in dem du ein Dump file erstellst wenn die Anwendung abstürzt?
Irgendwo in dem adoquery.Open ereignet sich der Schluckauf (ich gebe zu, daß ich im Augenblick wenig geneigt bin noch mehr Zeit auf das Debugging zu verwenden, vor allem weil mein Assembler doch stark eingerostet ist) und einen eigentlichen Absturz gibt es ja nicht. wen ich nach der Fehlermeldung den SQL-Source modifiziere ist alles gut.

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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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