Har sökt runt lite här på webforum men inte hittat något.
Jag har gjort en function som kopplar upp sig mot en databas. Jag inkluderar funktionen genom ssi till sidan default.asp. Funktionen returnerar sen objektet Conn som jag försöker plocka upp på default.asp men då får jag ett felmeddelande.
Microsoft VBScript runtime error '800a01a8'
Object required: 'Provider=MSDASQL.1;E'
/Default.asp, line 18
Jag sökte runt lite på weben och hittade att många använt Call innan funktionen. Men jag hade för mig på nått ställe här i webforum att man inte behövde använda Call utan att det var en gammal kvarleva från VB-tiden?
Är det nån som vet vad felet kan bero på?
conn.asp
<%
'---------------------------------------------------------------------
'OpenConn - Opens connection to database and returns connection handle
'---------------------------------------------------------------------
Function OpenConn()
Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "driver={SQL Server};server=;uid=;pwd=;database="
Conn.Open
Response.Write (Conn)
OpenConn = Conn
End Function
'--------------------------------------------------------------------------
'CloseConn - Closes the connection to database set by the connection handle
'--------------------------------------------------------------------------
Function CloseConn(Conn)
Conn.Close
Set Conn = Nothing
End Function
%>
default.asp
<!-- #include virtual="/scripts/conn.asp" -->
<!-- #include virtual="inc_header.asp" -->
<table width="520" align="center" cellpadding="0" cellspacing="0" border="0">
<tr><td> </td></tr>
<tr>
<td align="center"><img src="bilder/rubrik/news.gif" alt="News" width="89" height="33" border="0"></td>
</tr>
<%
Dim Conn, SQL, rs
Conn = OpenConn()
SQL = "spGetNews"
Set rs = Conn.Execute(SQL)
If rs.EOF Then
Response.Write "<tr><td> </td></tr><tr><td><table>"
Response.Write "<tr><td><b>Kunde inte hitta några nyheter! Var god försök igen senare eller kontakta administratören!</td></tr></table></td></tr>"
Else
Do Until rs.EOF
Response.Write "<tr><td> </td></tr><tr><td><table>"
Response.Write "<tr><td><b>" & rs("Title") & "</b></td><td align=""right"">" & Left(rs("Insertdate"), 16) & "</td></tr>"
Response.Write "<tr><td colspan=""2"">" & rs("Body") & "</td></tr></table></td></tr>"
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
CloseConn(Conn)
%>
</table>
Conn är ett objekt, varför försöker du skriva ut det med response.write? Det kan du inte.
Annars, eftersom Conn är ett objekt, skall du använda Set när du ska returnera objektet från funktionen.
Function OpenConn()
Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "driver={SQL Server};server=;uid=;pwd=;database="
Conn.Open
[b]Set[/b] OpenConn = Conn
End Function
Call kan du använda när du ska anropa en funktion som inte returnerar någonting, eller en sub. Det går dock lika bra att strunta i att använda call.