Fehlermeldungen abfangen!

Hallo,

wie kann ich den Fehlermeldungen von ASP abfangen, oder besser in einer schöneren Form ausgeben. Beispiel:

Ich habe eine Tabelle die Ihre Daten aus einer Datenbank holt. Diese Datenbank hat eine Eingabepflicht (also beim hinzufügen von neuen Daten, dürfen keine Felder leer gelasen werden. Wenn man dies trozdem tut, bekommt man eine hässliche Fehlermeldung:

**Microsoft OLE DB Provider for ODBC Drivers-Fehler ‚80040e14‘

[Microsoft][ODBC driver for Oracle][Oracle]ORA-01400: Einfügen von NULL in („QSVA“.„QSVANR“) nicht möglich

sendqsva.asp, Zeile 24**

Wie kann ich den so eine Fehlermeldung abfangen und gegen eine schönere (z.B. Bitte füllen Sie ALLE Felder aus) ersetzen.

Für Eure Hilfe wäre ich Euch sehr dankbar…

BlueskyRW

Easy… :smile: hier ein Beispielcode mit Kommentar:

Fehlerbehandlungsroutine
Fehlerbehandlung im Beispielcode

Alle bekannten Fehler ausgeben
„Unbekannter Laufzeitfehler“ then
response.write err.number & " " & err.description & "
"
end if
on error goto 0
next

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

ersteinmal danke für Deine schnelle Hilfe. Ich habe deinen Code mal ausgeführt und eine Liste der bekannten Fehler bekommen. Leider ist mein Fehler (‚80040e14‘) nicht dabei. Ich nehme an das dies daran liegt, das dies keine Fehlermeldung von ASP sondern eine Fehlermeldung der Datenbank (ORACLE) ist. Hier nocheinmal die komplette Fehlermeldung:

**Microsoft OLE DB Provider for ODBC Drivers-Fehler ‚80040e14‘

[Microsoft][ODBC driver for Oracle][Oracle]ORA-01400: Einfügen von NULL in („JETSCHMA“.„QSVA“.„QSVANR“) nicht möglich

/entwicklung1/pub/all/qualität/sendqsva.asp, Zeile 24**

Wäre nett wenn Du mir sagen könntest wie ich genau diese Fehlermeldung abfangen und umändern könnte.

DANKE schon im Vorraus…
Martin

SQL - Statement

**Microsoft OLE DB Provider for ODBC Drivers-Fehler
‚80040e14‘

[Microsoft][ODBC driver for Oracle][Oracle]ORA-01400: Einfügen
von NULL in („JETSCHMA“.„QSVA“.„QSVANR“) nicht möglich**

  1. datenbank - fehler, nicht asp!

-> überprüfe die Felder des sql - statements!

z.b.:
sql - statement:

sSQL = „INSERT INTO tblTest (ID,Name) VALUES (1,“"" & sName & „“")"

dann mußt du natürlich überprüfen, daß sName auch einen Wert hat - sonst stellt’s dich auf:

if (not isnull(sName)) then
’ conn ist mein connection - objekt
conn.execute(sSQL)
end if

Verdeutlichung
Hallo,

ich denke Du hast mich da nicht richtig verstanden. Es ist vollkommen korrekt das eine Fehlermeldung kommt.

Ich versuche Dir mal das „Programm“ zu erklären.
Es einer Datenbank (QSVA) wird der Inhalt ausgelesen. In dieser Datenbank befinden sich 3 Spalten. QSVA-NR, Thema, Link.
Wenn man nun einen Eintrag hinzufügen möchte, hat man hierfür eini Formular mit dem oben genannten Feldern.

Damit keine Felder leer gelassen werden können, habe ich dies in ORACLE eingestellt. Also wenn man alle Felder ausfüllt funktioniert es prima. Wenn man ein Feld ausläßt, kommt eine Fehlermeldung. Diese soll auch kommen, nur ich würde diese gerne deutlicher machen, da die vorhandene Fehlermeldung sehr unübersichtlich ist, und die Benutzer verwiert.

Ich hoffe Du kannst das jetzt nachvolziehen. Hast Du vielleicht einen Lösungsvorschlag der es ermöglicht diese Fehlermeldung „auszutauschen“?

Danke
Martin

Ach so!
on error resume next

conn.execute („INSERT…“)
if (err.number 0) then
response.write „Fehler Nr. " & err.number & " ist aufgetreten“ & vbcrlf & _
"Beschreibung: " & err.description

end if

Alternativ dazu kannst du jeden beliebigen text ausgeben den du willst

du kannst die nummer deines speziellen fehlers leicht herausfinden, indem du ihn provozierst:

on error resume next

conn.execute(„Inser…“)
response.write "FehlerNr: " & err.number

voila! - schon hast du den fehlercode, z.b. 998877.
dann kannst du den gezielt herauspicken:

on error resume next

conn.execute(„Insert…“)
select case err.number
case „0“: Response.write „Kein Fehler!“
case „998877“: Response.write „Mein schöner kleiner Fehler!“
case else: Response.Write „Irgendein anderer Fehler!“
end select

Aber…
ich würde trotzdem im script bereits überprüfen, ob alle felder eingegeben wurden, weil’s einfach schneller geht (da kannst du uU auch gleich eine Plausibilitätsprüfung dazuhängen…)