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!
5 svar · 234 visningar · startad av doggelito
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'
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!
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.
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.
Vad menar du med att få bort sql-strängen ?
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?