webForumDet fria alternativet

Separat db.koppling strular!

2 svar · 224 visningar · startad av Troll

TrollMedlem sedan dec. 2003229 inlägg
#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?

@ndersMedlem sedan juni 200032 969 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.

TrollMedlem 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!

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