Avatar billede swiffer Nybegynder
27. april 2003 - 17:10 Der er 13 kommentarer og
1 løsning

Lave en funktion som åbner en databaseforbindelse?

Jeg har en fil som er inkluderet på en anden side. I den fil, vil jeg lave en funktion som kan kaldes fra den side den er inkluderet på. Hvordan gør jeg det?

Jeg har prøvet:

function Connect(SQL)
    Dim bc,db,rs
    Set bc = Server.CreateObject("MSWC.BrowserType")
    Set DB = Server.CreateObject("ADODB.Connection")
    DB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=d:webs\minside.dk\access\db.mdb;" & "DefaultDir=d:webs\minside.dk\access\;" & "FIL=MS Access;"
    DB.Open
    if SQL = "" then
    SQL = "SELECT * FROM login WHERE Brugernavn ='" & Session("brugernavn") & "'"
    end if
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.Open SQL, DB, 3, 3
End function

---------

Men når jeg kalder den, får jeg bare en fejl (type mismatch 'rs')

Hvordan gør jeg??
Avatar billede hossein Nybegynder
27. april 2003 - 17:14 #1
ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=d:webs\minside.dk\access\db.mdb;" & "DefaultDir=d:webs\minside.dk\access\;" & "FIL=MS Access;"
    DB.Open ConnectionString
Avatar billede swiffer Nybegynder
27. april 2003 - 17:43 #2
Det er ikke i forbindelsen den er gal.. Det virker fint hvis jeg laver det uden for en funktion.
Avatar billede oasen Nybegynder
27. april 2003 - 17:46 #3
if SQL = "" then
    SQL = "SELECT * FROM login WHERE Brugernavn ='" & Session("brugernavn") & "'"
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.Open SQL, DB, 3, 3
end if
Avatar billede fet321 Nybegynder
27. april 2003 - 17:47 #4
Lav det i en Sub.
Avatar billede oasen Nybegynder
27. april 2003 - 17:47 #5
Sikken en gang sludder - du får den lige igen:

SQL = "SELECT * FROM login WHERE Brugernavn ='" & Session("brugernavn") & "'"
if SQL = "" then
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.Open SQL, DB, 3, 3
end if
Avatar billede swiffer Nybegynder
27. april 2003 - 19:36 #6
Jeg har prøvet at lave det i en Sub, men med samme resultat :( oasen's kunne jeg heller ikke få til at virke :(
Avatar billede burningice Nybegynder
27. april 2003 - 20:12 #7
swiffer>> du bruger vel ikke RS andre steder på din side, udenfor din sub ?
Avatar billede swiffer Nybegynder
27. april 2003 - 20:53 #8
Hvad mener du? Altså det var meningen at jeg ville lave det sådan at man bare kunne skrive:

Connect()
rs("etellerende") = "etelelrandet"
'luk forbindelse

Kan man da ikke det??
Avatar billede oasen Nybegynder
27. april 2003 - 23:38 #9
swiffer --> Jeg tror også, det var noget vrøvl, jeg sagde igen. Du kalder vel funktionen med dit SQL-statement.
Avatar billede burningice Nybegynder
28. april 2003 - 00:25 #10
swiffer>> det kan du ikke... så skal du have dim'et din rs UDEN for din sub, ellers vil den kun eksistere som en privat variabel.
Avatar billede heyde Nybegynder
28. april 2003 - 15:30 #11
Prøv det her:
*********** Include.asp ***********
Private sub Connection
Dim bc,db,rs
    Set bc = Server.CreateObject("MSWC.BrowserType")
    Set DB = Server.CreateObject("ADODB.Connection")
    DB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=d:webs\minside.dk\access\db.mdb;" & "DefaultDir=d:webs\minside.dk\access\;" & "FIL=MS Access;"
    DB.Open
end sub
**********************************

*********** siden du kalder koden fra ***********
<!-- #include file="include/include.asp" -->

<%
Connection
%>

SQL = "SELECT * FROM login WHERE Brugernavn ='" & Session("brugernavn") & "'"
set rs = db.execute(SQL)
*************************************************

På denne måde kalder du bare "connection" i toppen af de sider hvor du skal bruge databasen. Det er i hvert fald nogenlunde sådan jeg gør det.
Du kan også have mange forskellige functions og subs liggende, som du kan kalde når der er brug for det...
Avatar billede heyde Nybegynder
28. april 2003 - 15:33 #12
...jeg er desuden gået ud fra at det ikke er den samme SQL-sætning du vil køre hver gang...

Når du vil lukke forbindelsen igen skriver du bare <% Con-Close %>.
Så har du nemlig følgende i include.asp:

Private Sub Con.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
end sub
Avatar billede swiffer Nybegynder
28. april 2003 - 16:28 #13
Jamen det er jo perfekt :)
Avatar billede heyde Nybegynder
28. april 2003 - 16:32 #14
Det var da godt at jeg kunne hjælpe :)
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