webForumDet fria alternativet

Separat db.koppling strular!

ASP

2 svar · 224 visningar · startad av Troll

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

Hejsan!

Om man har en funktion för sin databaskoppling i tex: dbkoppling.asp och inklluderar den och sedan skriver följande så fungerar det inte, varför?

Funktionen:

Function dataOpen(Conn)

Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("datb/c34vvv5.mdb")&";"

End Function

Function dataClose(Conn)

objCon.Close
Set objCon = Nothing

End Function

Såhär hämtar jag:

<%
Call dataOpen(Conn)

Set objRs = Server.CreateObject("ADODB.Recordset")

strSQL = "SELECT * FROM tblGallery ORDER BY picVisad ASC"
objRs.Open strSQL, objCon, 3, 3

Response.write "<a href='showpic.asp?pCat="&objRs("picCat")&"&pMapp="&objRs("picMapp")&"&pSub="&objRs("picSub")&"&picID="&objRs("ID")&"'><img src='img/"&objRs("picCat")&"/"&objRs("picMapp")&"/"&objRs("picSub")&"/thmb/"&objRs("picFile")&"' width='100' class='border'></a>"

objRs.Close
Set objRs = Nothing

Call dataClose(Conn)

%>

Felmeddelande;
ADODB.Recordset error '800a0bb9'

The application is using arguments that are of the wrong type, are out of acceptable range, or are in conflict with one another.

/- - 0 0 0/right.asp, line 20

Rad 20: strSQL = "SELECT * FROM tblGallery ORDER BY picVisad ASC"

Om jag inte använder den funktionen utan bara skriver allt på samma ställe så funkar det, men varför funkar det inte nu?

Medlem sedan juni 200032 967 inlägg
#2

Funktioner skall returnera något. Skall du inte returnera något, använd subs istället.
Vad är Conn, som du påstår att du skickar in i funktionen, och som du påstår att funktionen tar emot?
Om du ska använda objekt / variabler du skapat i funktioner / subrutiner utanför desamma krävs att du definierar dessa utanför.

Således kan du göra på detta sätt:

Dim objCon
Sub dataOpen()
	Set objCon = Server.CreateObject("ADODB.Connection")
	objCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("datb/c34vvv5.mdb")&";"
End Sub

Sub dataClose()
	objCon.Close
	Set objCon = Nothing
End Sub

..

dataOpen

..

dataClose

I övrigt: Rad 20 som felmeddelandet pekar på är inte din SQL-fråga.

Medlem sedan dec. 2003229 inlägg
#3

aah, ok. Jag har aldrig testat att göra något liknande tidigare utan hittade en snutt som jag testa med. Men tack så mycket för infon/hjälpen!

274 ms totalt · 3 externa anrop · v20260731065814-full.f363f448
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)