20. januar 2003 - 00:17Der 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
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)
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.
Synes godt om
Ny brugerNybegynder
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.