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?
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.