webForumDet fria alternativet

Öppna databas med en sub

ASP

4 svar · 220 visningar · startad av Jacob

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

Jag har en fil som innehåller några subbar som jag inkluserar på en sida. En sub är till för att starta en db connection, men det verkar inte fungera:
sub.asp

Sub dbstart()
	Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open "PROVIDER=MSDASQL;" & _
		"DRIVER={SQL Server};" & _
		"SERVER=(local);DATABASE=homevision_nu;" & _
		"UID=jacob;PWD=****;"

End Sub

Sub film(typ)

	[b]Set film = conn.execute("SELECT titel, ingress, bildid FROM film WHERE typid=6 OR typid=6")[/b]
	If typ=5 then Response.Write("<h1 class=""blue_rubrikr"">Senaste VideoRecension</h1>")
	If typ=4 then Response.Write("<h1 class=""blue_rubrikr"">Senaste DVDRecension</h1>")%>
	<img src="image/db/<%=film("bildid")%>.jpg" align="left"><%=film("titel")&"<br>"&film("ingress")%>
<%
End Sub

test.asp

<!--#include file="sub.asp" -->
<%call dbstart()
call film(4)%>%>

Men det står att objektet conn behövs på den feta raden

Medlem sedan juni 200032 967 inlägg
#2

Har du dimmat Conn utanför subben?
Om du inte har gjort det är objektet lokalt och kan inte användas utanför subben.

Dim Conn
Sub dbstart()
	Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open "PROVIDER=MSDASQL;" & _
		"DRIVER={SQL Server};" & _
		"SERVER=(local);DATABASE=homevision_nu;" & _
		"UID=jacob;PWD=****;"

End Sub

Ett alternativ är ju att ha en funktion som returnerar ett connectionobjekt:

function dbstart()
	Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open "PROVIDER=MSDASQL;" & _
		"DRIVER={SQL Server};" & _
		"SERVER=(local);DATABASE=homevision_nu;" & _
		"UID=jacob;PWD=****;"
	Set dbstart = Conn
End Function

Du använder du följande i koden:

Set Conn = dbstart()

Mvh,

Medlem sedan dec. 2000503 inlägg
#3

Ok jag förstår mitt misstag, men det är något som itne fungerar ändå. Jag få felmesset:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: 'dbstart()'

Medlem sedan dec. 2000503 inlägg
#4

Glöm det det vara bara jag som strulade.

Medlem sedan maj 2002560 inlägg
#5

om du skriver så här då?

[red]Sub dbstart()
	Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open "PROVIDER=MSDASQL;" & _
		"DRIVER={SQL Server};" & _
		"SERVER=(local);DATABASE=homevision_nu;" & _
		"UID=jacob;PWD=****;"

End Sub

Sub film(typ)
	[b]call(dbstart)[/b]
	Set film = conn.execute("SELECT titel, ingress, bildid FROM film WHERE typid=6 OR typid=6")
	If typ=5 then Response.Write("<h1 class=""blue_rubrikr"">Senaste VideoRecension</h1>")
	If typ=4 then Response.Write("<h1 class=""blue_rubrikr"">Senaste DVDRecension</h1>")%>
	<img src="image/db/<%=film("bildid")%>.jpg" align="left"><%=film("titel")&"<br>"&film("ingress")%>
<%
End Sub[/red]

och så anropar du film(typ) istället...

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