Avatar billede swiffer Nybegynder
20. januar 2003 - 00:17 Der er 7 kommentarer og
1 løsning

Kald Acess-database funktion...

Jeg har prøvet at få det her ind i en funktion:

<%  ' Her oprettes forbindelsen 
Set DataConn = Server.CreateObject("ADODB.Connection") 
conStr = "Provider=Microsoft.Jet.OLEDB.4.0;" 
conStr = conStr & "Data Source=d:\webs\domæne.dk\database.mdb" 
DataConn.Open conStr   
SQL = "SELECT * FROM tabelnavn WHERE ID=1" 
Set Rs = DataConn.Execute(SQL) 
' KODE KODE KODE... og luk: 
DataConn.Close 
Set DataConn = Nothing
%>

----------------
Sådan her:
----------------

Function ConnectToDB(db,sql)
  Set DataConn = Server.CreateObject("ADODB.Connection") 
  conStr = "Provider=Microsoft.Jet.OLEDB.4.0;" 
  conStr = conStr & "Data Source=d:\webs\domæne.dk\access\"&db&".mdb" 
  DataConn.Open conStr
  Set rs = DataConn.Execute(SQL)
end function

Function ChangeSQL(sql)
  Set rs = DataConn.Execute(SQL)
end function

Function CloseDB()
DataConn.Close 
Set DataConn = Nothing
End function

-----------------------

Som så skulle proppes ind i en include-fil, men jeg får en fejlmeddelese, når jeg kalder funktionen... hvad gør jeg galt?

Når jeg kalder sådan her:

ConnectToDB("data","user")
CloseDB()

får jeg fejl:

Microsoft VBScript compilation error '800a0414'

Cannot use parentheses when calling a Sub

D:\WEBS\MOTE.DK\WWWROOT\MOTECHAT\ENTER\..\..\..\INCLUDE.ASP, line 125

ConnectToDB("data","user")
--------------------------^
Avatar billede swiffer Nybegynder
20. januar 2003 - 00:20 #1
Jeg mener kalder sådan her:

ConnectToDB("data","SELECT * FROM bla WHERE bla = '" & request.Cookies("jkj") & "'" )
CloseDB()
Avatar billede eagleeye Praktikant
20. januar 2003 - 13:44 #2
Prøv at fjerne () fra den linie hvor du kalder functionen der skal ikek være paranteser omkring paramter ved kald af Sub:


ConnectToDB "data","user"
Avatar billede swiffer Nybegynder
20. januar 2003 - 16:34 #3
Det har jeg prøvet.. så skriver den:

Microsoft VBScript runtime error '800a01a8'

Object required: 'DataConn'

D:\WEBS\DOMÆNE.DK\INCLUDE.ASP, line 121
Avatar billede eagleeye Praktikant
20. januar 2003 - 16:37 #4
Hvilken linie er 121??'

Det kunne tyde på den ikke kan se DataConn er et Conection Objetk.
Avatar billede swiffer Nybegynder
20. januar 2003 - 17:12 #5
Det er DataConn.Close
Avatar billede eagleeye Praktikant
20. januar 2003 - 17:20 #6
Du har denne linie i funktionen som opretter forbindelsen til databasen...:

Set DataConn = Server.CreateObject("ADODB.Connection")

Prøv at flytte den variable defination ud af functionen så den er global variable, det kunne vist tyde på function som lukker forbidelsen ikke kan se variablen DataConn


Du kan vist bare putte rundt på disse to linier:
Function ConnectToDB(db,sql)
  Set DataConn = Server.CreateObject("ADODB.Connection") 


Til:
Set DataConn = Server.CreateObject("ADODB.Connection") 
Function ConnectToDB(db,sql)
Avatar billede swiffer Nybegynder
20. januar 2003 - 22:48 #7
Så ryger fidusen jo med at det skal være i en funktion... for så opretter den jo også forbindelse på de sider, hvor jeg ikke bruger databasen...
Avatar billede eagleeye Praktikant
20. januar 2003 - 23:50 #8
Det er mulig men for det virker så skal det laves ordenligt.

De variable som defieners i en function er kun i den function og kan ikke bruge af andre functioner. Det er hele fidusen med en function.

Du bruger også et recordset som er defineret globalt i denne linie eller vi du ikke havde mulighed for at tilgå recordsetet.
Set rs = DataConn.Execute(SQL)

Så du er nød til at havde et globat connection object´og så kan din function åbne det. Så må du lave et tjek på om connection er åben i den function som lukker for connection.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester