Avatar billede aero Nybegynder
01. december 2005 - 20:45 Der er 25 kommentarer og
1 løsning

fejl i db conn

Hej jeg har flg. kode til en db conn:

<%
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4


Sub OpenDB

  On Error Resume Next
  Const cnstDBPath = "d:\web\localuser\domæne.dk\database\database.mdb"
  Dim strProvider
  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & Server.MapPath(cnstDBPath) & ";"
  strProvider = strProvider & "Persist Security Info=False"
  Set objConn = Server.CreateObject("ADODB.Connection")
  kontaktOk = true
 
  set fso = Server.CreateObject("Scripting.FileSystemObject")
  if (fso.FileExists(cnstDBPath))=true Then
    objConn.Open strProvider
    if objConn.State = 0 then kontaktOk = false
  else
    kontaktOk = false
  end if
  if kontaktOk = false then
    response.Write "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."
  end if
  On Error Resume 0
End Sub

Sub CloseDB
  objConn.Close
  Set objConn = Nothing
End Sub
%>

men jeg får en fejl når jeg køre min side, den er ved linje 36 som er:

On Error Resume 0

fejlen er:
Microsoft VBScript compilation error '800a03ea'

Syntax error

/site/include/dsn.asp, line 36

On Error Resume 0
----------------^


min mappe struktur ved unoeuro er:

Domæne.dk
|_Database
| |_database.mdb
|
|_Public_html
  |_site
    |_default.asp
    |_dsn.asp


nogle der kan se hvad fejlen evt er !?
Avatar billede aero Nybegynder
01. december 2005 - 20:46 #1
Domæne.dk
|_Database
| |_database.mdb
|
|_Public_html
  |_site
    |_default.asp
      |_include
        |_dsn.asp

er den rigtige struktur.
Avatar billede nielle Nybegynder
01. december 2005 - 20:51 #2
Det plejer at være:

On Error Resume Next

- i stedet for:

On Error Resume 0
Avatar billede eagleeye Praktikant
01. december 2005 - 20:58 #3
Det skal være goto i stedet for resume, der er der hvor man slår fejl reportering til igen.:

on error goto 0
Avatar billede eagleeye Praktikant
01. december 2005 - 20:59 #4
Denne linie:
strProvider = strProvider & "Data Source=" & Server.MapPath(cnstDBPath) & ";"

Skal rettes til dette uden Server.Mappath da cnstDBPath er den fysiske sti til databasen og ikke en relativ sti:

strProvider = strProvider & "Data Source=" & cnstDBPath & ";"
Avatar billede aero Nybegynder
01. december 2005 - 21:07 #5
hmm tak EE der virkede men hvorfor skriver den alligevel den fejl meddelse når der er kontakt til db'en !?

http://www.billundfodbold.dk/site/
Avatar billede eagleeye Praktikant
01. december 2005 - 21:22 #6
Du kan prøve at udkommenter linien  On Error Resume Next  så kommer der en fejl for hvorfor den ikke vil connecte til databasen. Er du skikker på stien passer?


Men prøv at rette OpenDB til dette sådan objConn definers uden for funktionen.


Set objConn = Server.CreateObject("ADODB.Connection")
Sub OpenDB

  On Error Resume Next
  Const cnstDBPath = "d:\web\localuser\domæne.dk\database\database.mdb"
  Dim strProvider
  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & cnstDBPath & ";"
  strProvider = strProvider & "Persist Security Info=False"
  kontaktOk = true
 
  set fso = Server.CreateObject("Scripting.FileSystemObject")
  if (fso.FileExists(cnstDBPath))=true Then
    objConn.Open strProvider
    if objConn.State = 0 then kontaktOk = false
  else
    kontaktOk = false
  end if
  if kontaktOk = false then
    response.Write "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."
  end if
  On Error goto 0
End Sub
Avatar billede eagleeye Praktikant
01. december 2005 - 21:26 #7
du skal have rette linien teksten  domæne:

Const cnstDBPath = "d:\web\localuser\domæne.dk\database\database.mdb"

Til dit donmænenavn, altså noget i stil med dette:

Const cnstDBPath = "d:\web\localuser\billundfodbold.dk\database\database.mdb"
Avatar billede aero Nybegynder
01. december 2005 - 21:30 #8
hvis jeg bruger det du gav mig tilsidst så sker det samme men prøvede at sætte et ' foran fejl koden og nu er den væk men så vil den jo ikke skrive en fejl mere hvis der ikke er kontakt til min db.
Avatar billede aero Nybegynder
01. december 2005 - 21:31 #9
se evt link igen så kan da se at nu virker det men hvis jeg fjerner ' så skriver den det igen.

Ved godt det med mit domæne, men tak ^^ men hvor kan fejlen ligge ang det andet !?
Avatar billede eagleeye Praktikant
01. december 2005 - 21:34 #10
Så prøv sådan her at rette OpenDB til dette uden helt uden On Error Resume Next:


Set objConn = Server.CreateObject("ADODB.Connection")
Sub OpenDB

'  On Error Resume Next
  Const cnstDBPath = "d:\web\localuser\domæne.dk\database\database.mdb"
  Dim strProvider
  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & cnstDBPath & ";"
  strProvider = strProvider & "Persist Security Info=False"
  kontaktOk = true
 
  set fso = Server.CreateObject("Scripting.FileSystemObject")
  if (fso.FileExists(cnstDBPath))=true Then
    objConn.Open strProvider
    if objConn.State = 0 then kontaktOk = false
  else
    kontaktOk = false
  end if
  if kontaktOk = false then
    response.Write "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."
  end if
'  On Error goto 0
End Sub


Hvis den ikke skrive en fejl ud skulle der være kontatkt til databasen. Du kan evt. prøve at udskrive connection objectet state. Står dre et tal >0 er connection åben.

Response.Write "ConnState=" & objConn.State
Avatar billede aero Nybegynder
01. december 2005 - 22:01 #11
http://www.billundfodbold.dk/site/

så gør den sådan igen !!
Avatar billede eagleeye Praktikant
01. december 2005 - 22:08 #12
Så tyder det på at stien til databasen ikke passer.

Er du sikker på stien er rigtig?
Avatar billede eagleeye Praktikant
01. december 2005 - 22:15 #13
Prøv som test at lave koden sådan her, uden alt det tjek:


Set objConn = Server.CreateObject("ADODB.Connection")
Sub OpenDB

'  On Error Resume Next
  Const cnstDBPath = "d:\web\localuser\domæne.dk\database\database.mdb"
  Dim strProvider
  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & cnstDBPath & ";"
  strProvider = strProvider & "Persist Security Info=False"
  objConn.Open strProvider
'  On Error goto 0
End Sub
Avatar billede aero Nybegynder
01. december 2005 - 22:20 #14
det virker som det skal, kunne dog være mere sjovt med det hvor den kan give en fejl meddelse hvis databasen ikke virker eller ikke findes.

http://www.billundfodbold.dk/site/
Avatar billede eagleeye Praktikant
01. december 2005 - 22:24 #15
Ok, så kunne det type på at FSO ikke kan tilgå filer som er uden for root folderen.

Hvad sker der hvis du prøver dette:


Set objConn = Server.CreateObject("ADODB.Connection")
Sub OpenDB

'  On Error Resume Next
  Const cnstDBPath = "d:\web\localuser\domæne.dk\database\database.mdb"
  Dim strProvider
  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & cnstDBPath & ";"
  strProvider = strProvider & "Persist Security Info=False"
  kontaktOk = true
 
  set fso = Server.CreateObject("Scripting.FileSystemObject")
  if (fso.FileExists(cnstDBPath))=true Then
    objConn.Open strProvider
    if objConn.State = 0 then kontaktOk = false
  else
    kontaktOk = false
    Response.Write "Database filen kunne ikke findes!<br>"
  end if
  if kontaktOk = false then
    response.Write "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."
  end if
'  On Error goto 0
End Sub
Avatar billede aero Nybegynder
01. december 2005 - 22:34 #16
så henter den dataen og kommer med fejlen på engang igen.
Avatar billede aero Nybegynder
01. december 2005 - 22:34 #17
se evt link
Avatar billede aero Nybegynder
01. december 2005 - 22:37 #18
prøvede lige at sætte et 1 tal foran min database.mdb og så fik jeg flg. fejl

Fejl kunne ikke få kontakt til databasen, prøv at reloade siden.
ADODB.Connection error '800a0e78'

Operation is not allowed when the object is closed.

/site/Default.asp, line 94

men er rettet tilbage så jeg får den gamle site igen med fejl kode og data
http://www.billundfodbold.dk/site/
Avatar billede eagleeye Praktikant
01. december 2005 - 22:39 #19
Ok så er det .state som driller. Prøv lige at tilføje så den skrive state ud.


Set objConn = Server.CreateObject("ADODB.Connection")
Sub OpenDB

'  On Error Resume Next
  Const cnstDBPath = "d:\web\localuser\domæne.dk\database\database.mdb"
  Dim strProvider
  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & cnstDBPath & ";"
  strProvider = strProvider & "Persist Security Info=False"
  kontaktOk = true
 
  set fso = Server.CreateObject("Scripting.FileSystemObject")
  if (fso.FileExists(cnstDBPath))=true Then
    objConn.Open strProvider
    Response.Write "ConnState=" & objConn.State & "<br>"
    if objConn.State = 0 then
      kontaktOk = false
    end if
  else
    kontaktOk = false
    Response.Write "Database filen kunne ikke findes!<br>"
  end if
  if kontaktOk = false then
    response.Write "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."
  end if
'  On Error goto 0
End Sub
Avatar billede aero Nybegynder
01. december 2005 - 22:43 #20
så skriver den det hele igen samt ConnState=1
http://www.billundfodbold.dk/site/
Avatar billede eagleeye Praktikant
01. december 2005 - 22:50 #21
ok, prøv lige sådan her, det er muligt at objConn.State tolkes som en streng for den skulle så jeg kan se ikke skrive fejl teksten ud når state=1 de betyder der er connection til databasen.:



Set objConn = Server.CreateObject("ADODB.Connection")
Sub OpenDB

'  On Error Resume Next
  Const cnstDBPath = "d:\web\localuser\domæne.dk\database\database.mdb"
  Dim strProvider
  Dim kontaktOk
  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & cnstDBPath & ";"
  strProvider = strProvider & "Persist Security Info=False"
  kontaktOk = true
 
  set fso = Server.CreateObject("Scripting.FileSystemObject")
  if (fso.FileExists(cnstDBPath))=true Then
    objConn.Open strProvider
    Response.Write "ConnState=" & objConn.State & "<br>"
    if int(objConn.State) = 0 then
      kontaktOk = false
    end if
  else
    kontaktOk = false
    Response.Write "Database filen kunne ikke findes!<br>"
  end if
  if kontaktOk = false then
    response.Write "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."
  end if
'  On Error goto 0
End Sub
Avatar billede aero Nybegynder
01. december 2005 - 22:53 #22
okay nu skrev den ikke "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."

men selvf. ConnState=1

betyder det at vi har ordnet det nu !? kan jeg evt frem provokerer en fejl så den skriver "fejl kunne ikke..." eller behøves det ikke !?

http://www.billundfodbold.dk/site/
Avatar billede eagleeye Praktikant
01. december 2005 - 22:56 #23
Ja så skal linien som udskriver objConn.State  fjernes igen.

Ja så skulle det virke. Du kan prøve et rette stien til databasen men det kan være du bliver nød til at havde en Response.End  efter fejlen er udskrevet for at undgå andre fejl på siden.
Avatar billede eagleeye Praktikant
01. december 2005 - 23:01 #24
Som test af DB ikke blev åbnet rigtigt kan du prøve at udkommenter .open:

'    objConn.Open strProvider




Funktionen rettes så tilbage så den ser sådan her ud:

Set objConn = Server.CreateObject("ADODB.Connection")
Sub OpenDB

  On Error Resume Next
  Const cnstDBPath = "d:\web\localuser\domæne.dk\database\database.mdb"
  Dim strProvider
  Dim kontaktOk
  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & cnstDBPath & ";"
  strProvider = strProvider & "Persist Security Info=False"
  kontaktOk = true
 
  set fso = Server.CreateObject("Scripting.FileSystemObject")
  if (fso.FileExists(cnstDBPath))=true Then
    objConn.Open strProvider
    if int(objConn.State) = 0 then
      kontaktOk = false
    end if
  else
    kontaktOk = false
  end if
  if kontaktOk = false then
    response.Write "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."
    'response.End  'Kan være nødvendig for at undgå andre fejl på siden.
  end if
  On Error goto 0
End Sub
Avatar billede aero Nybegynder
01. december 2005 - 23:01 #25
1000 tak det virker jeg lavede et 1 tal foran min database.mdb og har så Response.End() efter:
Response.Write "Database filen kunne ikke findes!<br>"
og
response.Write "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."

den skrev fejl kode 2, så 1000 tak vil du lev. et svat.
Avatar billede eagleeye Praktikant
01. december 2005 - 23:04 #26
Ok her et svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester