webForumDet fria alternativet

Egna felmeddelanden i ASP?

ASP

4 svar · 188 visningar · startad av Brimba

Medlem sedan dec. 19995 874 inlägg
Frågan#1

Hej!

Låt oss säga att det blir fel när jag ställer en SQL fråga, felmeddelandet blir tex:

ADODB.Fields error '800a0cc1'

ADO could not find the object in the collection corresponding to the name or ordinal reference requested by the application.

/kategori/produkter.asp, line 23

Kan man göra så att vid alla felmeddelanden att det visas något annat istället?

Kanske genom at skriva något i stil med:

If connection.Errors.Count > 0 Then
..kod om något blev fel..
Else
..den vanliga koden..
End If

Tack!

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

Medlem sedan dec. 19996 721 inlägg
#2

On Error Resume Next
Gör pryl som kan generera fel

If Err <>0 then
...så har du Err-objektet att tillgå, där Err.Source, Err.Description och Err.Number är intressantast. M.h.a. Err.Number kan du skriva dina egna felmeddelanden
end if

------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping
ASP/VB/Perl/PHP/Tango

Medlem sedan dec. 19995 874 inlägg
#3

Kan man inte fånga alla felmeddelanden i ett egen definierat felmeddelande?

Vill du skriva något exempel på det du beskrev ovan?

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

[Redigerat av Brimba den 18 apr 2000]

Medlem sedan dec. 19996 721 inlägg
#4

Visst kan du använda endast ett meddelande, men du måste ändå explicit fånga alla fel, med On Error Resume Next.

blablablablabla.....

On Error Resume Next

conn.execute("SÄLLACKT STJÄRNA FRÅMM DATABASEN")

if Err.Number<>0 then
   response.write "Hoppsan!"
else
   response.write "Tack!"
end if

Vill du fånga flera fel, utan att stanna (på egen risk), kan du göra så här:


blablablabla.....

On Error Resume Next
     Gör något som kan bli fel

CheckErr

blablabla.....

On Error Resume Next
     Gör något annat som kan bli fel

CheckErr

blablabla....

if strLongError<>"" then
   with response
       .write "<table border=1>
       .write "<tr><td>Felnummer</td><td>Beskrivning</td><td>Källa</td></tr>"
       .write strLongError
       .write "</table>"
   end with
end if

Sub CheckErr()
   if Err.Number<>0 then
     strLongError=strLongError & "<tr><td>" & Err.Number & "</td><td>" & Err.Description & "</td><td>" & Err.Source & "</td></tr>"
   end if
End Sub

------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping
ASP/VB/Perl/PHP/Tango

[Redigerat av emission den 18 apr 2000]

Medlem sedan dec. 19995 874 inlägg
#5

Hej!

Jag har ingen möjlighet att testa detta just nu, men tänkte att jag kunde slänga in en fråga och få det bekräftat.

Är det så här du menar?

<%
On Error Resume Next

Set Connection = Server.CreateObject("ADODB.Connection")Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\dmab\internet.mdb"
SQLStmt = "SELECT * FROM Tabell"
SET RS = Connection.Execute(SQLStmt)

if Err.Number<>0 then

response.write "Hoppsan! Det har skett något fel, var god emaila oss om vad som hände."

else
%>

Detta är den normala hemsidan om det inte blev något fel när man försökte köra SQL frågan.

<%end if%>

Har jag förstått rätt eller fel?

Tack!

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

[Redigerat av Brimba den 18 apr 2000]

250 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)