Avatar billede cypherdenmark Nybegynder
25. september 2004 - 14:41 Der er 16 kommentarer og
1 løsning

Connect og disconnect funktion til access db (include)

Hej Alle,

Jeg er ved at lave en connect og disconnet funktion såldes at jeg kun skal kalde på dem når jeg skal bruge dem (connect og disconnect)

Men jeg får flg. fejlmeddelse.
Microsoft VBScript runtime error '800a01a8'

Object required: 'rs'



//Her er min kode
<%
Dim conn,rs

Function Connect()
    set conn = server.CreateObject("adodb.connection")         
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\home\mindb\db\mindb.mdb;"
    conn.Open
End Function

Function Disconnect()   
    If conn.State <> adStateClosed Then
          conn.Close ()
          Set conn = Nothing
    End if
    If rs.State = adStateOpen Then
        rs.Close ()       
    End if
End function
%>

Håber i har mulighed for at hjælpe.....

På forhånd tak....
Avatar billede fun22 Nybegynder
25. september 2004 - 15:08 #1
Det er fordi at når du lukke conn så lukker den også rs. Så kommer fejlen når du spørger om rs er lukket.. for der findes på det tidspunkt ikke noget der hedder rs.

hvorfor egentlig bruge resurcer på at lukke? Den lukker jo selv når du skifter side..
Avatar billede cypherdenmark Nybegynder
25. september 2004 - 15:11 #2
okay dvs at jeg bare kan nøjes med at lukke min conn, så burde det være ok eller hvad ?
Avatar billede fun22 Nybegynder
25. september 2004 - 15:13 #3
ja..
du får jo ikke noget ud af at lukke den..
Avatar billede cypherdenmark Nybegynder
25. september 2004 - 15:19 #4
okay jeg syntes bare når man suser rundt på mange sider, så siger de husk at luk forbindelse og luk dit record bagefter samt sætte det til nothing...........hvorfor mener du ikke at jeg behøver dette ???
Avatar billede cypherdenmark Nybegynder
25. september 2004 - 15:32 #5
Desuden hvis jeg bytter om på begge udtryk, jamen så får jeg stadigvæk samme fejl ?
Avatar billede cypherdenmark Nybegynder
25. september 2004 - 16:07 #6
Andre der kan hjælpe eller komme med noget indput :-)
Avatar billede cypherdenmark Nybegynder
26. september 2004 - 11:19 #7
Ingen der kan bidrage med lidt info omkring open, close, nothing som er relateret til dette spørgsmål
Avatar billede fun22 Nybegynder
26. september 2004 - 12:15 #8
nååå.. det er jo fordi at når du bruger connect() så opretter du jo ikk rs..

Når du så bruger luk funktionen så kan den ikke finde rs..
Avatar billede thesurfer Nybegynder
27. september 2004 - 01:29 #9
Forbindelser skal lukkes efter brug.

Din Disconnect() skal deles op i 2 funktioner.. f.eks.:

Function DisRS()
    If rs.State = adStateOpen Then
        rs.Close ()       
    End if
DisConn ' luk conn automatisk
End function

Function DisConn()   
    If conn.State <> adStateClosed Then
          conn.Close ()
          Set conn = Nothing
    End if
End Function


Hvis du ikke har oprettet RS, skal du selvfølgelig ikke prøve på at lukke den = kald på DisConn().

Hvis du har oprettet RS, skal den også lukkes = kald på DisRS(), som automatisk lukker conn.
Avatar billede cypherdenmark Nybegynder
29. september 2004 - 21:15 #10
Hey thesurfer, super du gide at svare :-) Men behøver man at dele den op i 2 funktioner? kunne man ikke bare skrive:

Function Disconnect() 
    If conn.State <> adStateClosed Then
          rs.Close () 
          conn.Close ()           
          Set conn = Nothing
    End if   
End function

eller det noget sjusk? har nemlig prøvet og nu får jeg ingen error??
Avatar billede cypherdenmark Nybegynder
29. september 2004 - 21:21 #11
Nå nu er jeg med......det er jo sjældent man åber en forbindelse uden at bruge et recordsæt men I get your point (thesurfer).....Kan man ikke check på om rs er brugt eller sådan noget så man er fri for at dele den op i 2
Avatar billede thesurfer Nybegynder
30. september 2004 - 01:19 #12
mht forbindelse uden recordset.. man bruger/behøver ikke recordset, når man skal indsætte nye data, opdatere gamle eller slette data..
da hedder det jo bare åben, insert/update/delete, luk..

Jeg ved ikke, om man kan checke, om rs bruges.. jeg har vist aldrig brugt noget ".state"..
Jeg mener at jeg har prøvet på det 1 gang (checke om rs bruges)..uden held.. så fandt jeg på de 2 funktioner..
Avatar billede cypherdenmark Nybegynder
30. september 2004 - 19:58 #13
Okay, jeg takker for din hjælp thesurfer.

Lige et spørgsmål mere som drejer sig om min conn funktion. Kan man ikke lægge en try/catch (eller hvad det hedder i vb) rundt om den så man kan skrive nogle "pæne" fejlbeskeder hvis nu uheldet skulle være ude.??
Avatar billede thesurfer Nybegynder
01. oktober 2004 - 21:43 #14
I toppen (efter Option Explicit, som man altid skal bør bruge -> definer/dim alle variabler) kan du skrive:

On Error Resume Next

Det betyder at hvis der er fejl, skal den bare fortsætte.

Du kan så bruge:

If Err then ' hvis der er en fejlmeddelelse ("OK" er også en "fejlmeddelelse", kode 0)
  If Err <> 0 then ' hvis der virkeligt er en "fejl", og ikke bare en "ok"-meddelelse
    Response.Write "Der opstod en fejl..<br><br>" & Err.Number & " - " & Err.Description
  End If
End If

Nu er det ikke testet.. jeg er ikke helt sikker på, om det hedder Err.Number og Err.Description.. men det mener jeg at det hedder i Visual Basic.
Avatar billede cypherdenmark Nybegynder
16. januar 2005 - 14:28 #15
Hej thesurfer.....ligger du lige et svar så jeg kan lukke dette spg....tak :-)
Avatar billede thesurfer Nybegynder
16. januar 2005 - 17:28 #16
OK :-)
Avatar billede cypherdenmark Nybegynder
25. januar 2005 - 21:40 #17
takker :-)
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