webForumDet fria alternativet

Databas upptagen

ASP

7 svar · 260 visningar · startad av Molna

Medlem sedan jan. 2001188 inlägg
Frågan#1

Hej,

Om man använder sig av access-databaser så kan man ju stöta på problemet att databas är upptagen när man försöker hämta uppgifter ifrån den. Hur gör man för att när ett sånt fel uppstår göra något annat så att inte felmeddelandet syns?

/Tack:)

Medlem sedan juni 200032 967 inlägg
#2

Något sånt här?

on error resume next ' fånga ev. fel
' kod som kan generera fel
if err.number <> 0 then
    response.write "någe bidde fel! prova igen kanske?"
    err.clear ' rensa error-objektet
end if
on error goto 0 ' tillbaka till normalläge
Medlem sedan jan. 2001188 inlägg
#3

jo, det ser väldigt bra ut:)
Men var lägger man den koden? Lägger man den direkt efter conn.OPEN "databasen"? Eller efter där man försöker öppna en tabell?
vad gör den sista raden rent konkret?

Medlem sedan feb. 200112 078 inlägg
#4

Typ.

on error resume next ' fånga ev. fel
   set conn = server.createobject("adodb.connection")
   conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("data.mdb")
if err.number <> 0 then
   response.write "någe bidde fel! prova igen kanske?"
   err.clear ' rensa error-objektet
else
   set rs = conn.execute("SELECT .... ")
end if
on error goto 0 ' tillbaka till normalläge
Medlem sedan juni 200032 967 inlägg
#5

on error resume next ska man använda väldigt sparsamt. Den gör så att asp-motorn struntar i fel, och fortsätter processa resten av sidan ändå. När du använder detta får du tillgång till error-objektet Err. När propertyn Number har ett värde skilt från noll, har något blivit fel.

Sätt on error resume next precis innan ett fel som du vill fånga kan inträffa, och sätt on error goto 0 direkt efter du gjort det du ska med eventuellt fel. On error goto 0 gör så att processingen av sidan återgår till det normala, dvs: kör sidan tills ett fel inträffar.

Mvh,

Medlem sedan jan. 2001188 inlägg
#6

YES! Nu är jag lycklig, det blev jättebra. Tackar:)

Medlem sedan nov. 20017 144 inlägg
#7

Tilläggas bör att det kan stå så om du har accessdatabasen öppen lokalt när du paralellt kör ditt ftp-program el. dyl.

Medlem sedan feb. 200112 078 inlägg
#8

Jag har aldrig testat personligen, men det finns ett sätt att använda OLEDB Jet-drivern med exklusiv access.

oConn.Mode = 12
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=c:\somepath\myDb.mdb;" & _
           "User Id=admin;" & _
           "Password="

RED. Vid närmare efterforskningar på MSDN kan nämnas att konstanten adModeShareExclusive bör ha värdet 12 för att fungera korrekt. Koden ovan är ändrad.

Hittade en ypperlig sida för vidare sådana ändamål, ADO Data Control Constants: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adodc98/html/vbcstadodatacontrolconstants.asp

253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)