webForumDet fria alternativet

Sub och funktion för databas

ASP

5 svar · 234 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Varför kan man inte göra så här?

Public Function get_connection()
Dim objConn, strConn
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = xxxxxxxxxxxxx
objConn.open strConn
Set get_connection = objConn
End Function

Public Function close_connection()
Dim objConn
[b]objConn.Close()[/b]
Set objConn = Nothing
Set close_connection = objConn
End Function

Public Sub get_post(Byval strSql, Byval arrayname)
Dim objconn, rs
Set objConn = get_connection()
Set rs = objconn.Execute(strSql)
  If not rs.eof then
  arrayname = rs.getrows()
  end if
rs.Close()
Set rs = Nothing
Set objConn = close_connection()
End Sub

Felmess: Object required: 'objConn'

Medlem sedan apr. 2001126 inlägg
#2

Hmm.. det känns som om det borde funka..

Lägg objConn variabeln globalt.. och gör en SUB som inte returnerar objektet.. utan bara öppnar det... eftersom variabeln är publik så bör det funka!

Medlem sedan dec. 200012 464 inlägg
#3

Använd inte globala variabler. Skicka objConn som en parameter.

Public sub close_connection(objConn)
objConn.Close()
Set objConn = Nothing
End Sub

'...
'...
'...

close_connection(objConn)

Jag ser ingen anledning till att close_connection är en funktion eftersom den alltid returnerar nothing.

Medlem sedan juni 20003 076 inlägg
#4

Ahhh! Tackar. :bire

Annars då, är det använbart kodmässigt, eller ska jag göra om något?

Private Function get_connection()
Dim objConn, strConn
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = xxxxxxxxxxxxxxx
objConn.open strConn
Set get_connection = objConn
End Function

Private Sub close_connection(objConn)
objConn.Close()
Set objConn = Nothing
End Sub

Public Sub get_post(Byval strSql, Byref arrayname)
Dim objConn, rs
Set objConn = get_connection()
Set rs = objConn.Execute(strSql)
If not rs.eof then
arrayname = rs.getrows()
end if
rs.Close()
Set rs = Nothing
call close_connection(objConn)
End Sub

'hämtas sedan på aktuell sida
strSql = "SELECT bla bla FROM bla bla ;"
Call get_post(strSql, arrBla)

red/ Jag skulle gärna få bort sql-strängen på nått smidigt sätt.

Medlem sedan dec. 200012 464 inlägg
#5

Vad menar du med att få bort sql-strängen ?

Medlem sedan juni 20003 076 inlägg
#6

Jo, som jag gör nu så skapar jag en includefil per mapp som jag har och i den filen lägger jag samtliga sql-strängar alla med olika variabelnamn, typ:

Dim bla, blä, blö
strBla = "Select bla"
strblä = "Select blä"
strBlö = "Select blö"

Och sen när jag behöver en sql-sträng så skriver jag bara:
Call get_post(strblä, arrBlä)
Jag tycker det är lättredigerat samt att man slipper 100 rader sqlkod på varje sida man har.
Nackdelen är att man skapar en massa sql-variablar som man kanske inte använder jämt.
På så vis skulle jag vilja ha typ en sub eller en funktion för strängarna så de bara skapas när de behövs, men jag vet inte hur de skulle kunna se ut.
Tips?

295 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
149 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
149 ms — ändringar (db)