webForumDet fria alternativet

Använda call?

ASP

2 svar · 256 visningar · startad av Janspeed

Medlem sedan jan. 2001510 inlägg
Frågan#1

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>&nbsp;</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>&nbsp;</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>&nbsp;</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>

Någon som har nått förslag?

//JANspeed

Medlem sedan juni 200032 967 inlägg
#2

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.

Mvh,

Medlem sedan jan. 2001510 inlägg
#3

Ah... tackar! Jag hade bara Set i antingen default.asp eller i conn.asp. Tastade aldrig att ha det i bägge. Nu funkar det guld.

Jodå, visst kan du responsa Conn men den returnerar bara i princip connectionstringen.

Tack igen.

/JANspeed

265 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)