Avatar billede tblaster Nybegynder
07. januar 2006 - 21:07 Der er 13 kommentarer og
1 løsning

Problem med at udføre sql udtræk i mysql database

Hejsa

Jeg har et problem med at få lov til at udføre et kald til min database. Jeg har følgende funktion:

Function dbOpen()
    ' Undersøger om der er fejl i database forbindelsen
    On Error Resume Next
    Connection_string = "driver={MySQL ODBC 3.51 Driver};pwd="& cSql_Password &";uid="& cSql_Login &";database="& cSql_Database &";server="& cSql_Serverip
    Set Conn = Server.CreateObject("ADODB.Connection")
    Set RS = Server.CreateObject("ADODB.Recordset")
    Conn.Open Connection_string
   
    ' Hvis der var fejl i database forbindelsen så sendes brugeren til en fejl side
    If Err.Number > 0 Or Err.Number < 0 Then
        Response.redirect "dbFejl.asp"
    End If
   
End Function

Denne kalder jeg med:
dbOpen()

Og derefter har jeg følgende kode:
Sql = "UPDATE Data Set nr = '1' Where ID = '" & RQ_ID & "'"
Set Rs = Conn.Execute(Sql)

Når jeg så kørere min kode får jeg følgende fejl:
Microsoft VBScript runtime error '800a01a8'
Object required: ''

Fejlen meldes i følgende linie:
Set Rs = Conn.Execute(Sql)

Hvis jeg nu så udmarker følgende dele af min kode, således at jeg ikke kalder det hele som en funktion, så virker det fint:
Function dbOpen()
End Function
dbOpen()

Hvad kan jeg gøre for at få den til at accepter min funktion?
Avatar billede nielle Nybegynder
07. januar 2006 - 21:13 #1
Coon pg Rs skal være kendte uden for funktionen:

Dim Conn
Dim Rs

Function dbOpen()
    ' Undersøger om der er fejl i database forbindelsen
    On Error Resume Next
    Connection_string = "driver={MySQL ODBC 3.51 Driver};pwd="& cSql_Password &";uid="& cSql_Login &";database="& cSql_Database &";server="& cSql_Serverip
    Set Conn = Server.CreateObject("ADODB.Connection")
    Set Rs = Server.CreateObject("ADODB.Recordset")
    Conn.Open Connection_string
   
    ' Hvis der var fejl i database forbindelsen så sendes brugeren til en fejl side
    If Err.Number > 0 Or Err.Number < 0 Then
        Response.Redirect "dbFejl.asp"
    End If
End Function
Avatar billede tblaster Nybegynder
07. januar 2006 - 21:37 #2
Bingo! Smid endelig et svar ... takker for hjælpen.
Avatar billede nielle Nybegynder
07. januar 2006 - 21:38 #3
Svar :^)
Avatar billede tblaster Nybegynder
07. januar 2006 - 21:43 #4
Jeg var vist lige lidt for hurtig. Det hjalp mht. problemet et af de 2 steder jeg fik fejlen.

Der hvor jeg stadig har problem, er et sted hvor funktionen loades igennem en funktiona.asp side. Min side, side1.asp kan loades på 2 måder:
1. Igennem index.asp (som i forvejen har defineret Conn og Rs)
2. Som en seperat side hvor Conn og Rs ikke er defineret.

Så hvis jeg laver en Dim Conn, Rs så får jeg nu følgende fejl:
Name redefined

Min dim, er placeret et sted for en kode som kun udføres hvis siden ikke inkluderes på index.asp, så derfor kan jeg ikke se hvorfor den skal brokke sig når den inkluderes igennem index.asp. Hvordan kan jeg løse dette?
Avatar billede nielle Nybegynder
07. januar 2006 - 22:01 #5
Prøv at flyte dine 2 Dim'er, samt funktionen, over på en separat side (f.eks. dn.asp) som du så includer på de steder hvor du skal kunne tilgå databasen.
Avatar billede tblaster Nybegynder
07. januar 2006 - 22:10 #6
Det vil jo give samme problem, idet at jeg jo så kommer til at inkluder dn.asp 2 gange: 1 gang i index.asp og 1 gang i side.asp hvilket betyder at den inkluderes 2 gange i index.asp da denne jo inkluder side.asp.

Og jeg kan ikke bare nøjes med at inkluder den i side.asp da det ikke er altid at denne bliver inkluderes i min index.asp!
Avatar billede nielle Nybegynder
07. januar 2006 - 22:13 #7
Du bruger ikke nogen resourcer ved konsekvent at inkludere filen i side.asp. Det er først når du kalder funktionen dbOpen() at du rent faktisk lægger beslag på en database-resource.
Avatar billede tblaster Nybegynder
07. januar 2006 - 22:27 #8
Det er mine koder ikke enige i :-)

Så snart jeg inkluder eks dn.asp anden gang så får jeg fejlen om at navnet er 'omdefineret'
Avatar billede nielle Nybegynder
07. januar 2006 - 22:44 #9
Du skal ogås kun inkludere filen een gang i alt. Pointen var at du sagtens kunne inkludere den på "mastersiden" - også selv om du måske ikke skal bruge database i det aktuelle tilfælde; For hvis du ikke kalder funktionen dbOpen() så beruger du ikke databaseresourcerne.
Avatar billede tblaster Nybegynder
07. januar 2006 - 22:50 #10
Enig, men kan ikke lige se hvordan jeg kan gøre det. Mit problem er at jeg til tider loader side.asp som en inklude i index.asp og til tider loades side.asp som en selvstændig side i IE. Så hvis jeg inkluder dn.asp i index.asp så får side.asp kun indholde fra denne når den inkluderes i index.asp og ikke når den loades som en seperat side. Hvis jeg på den anden side inkluder dn.asp i side.asp, så får index.asp loadet denne 2 gange hvis den selv inkluder denne. Og inkluder jeg den kun i side.asp, så får index.asp aldrig indholdet af dn.asp når index.asp ikke inkluder side.asp.

Det lyder måske meget indviklet, men forstår du hvor jeg står?
Avatar billede nielle Nybegynder
08. januar 2006 - 12:08 #11
Prøv med dette i din db.asp

Dim DbAspLoaded
DbAspLoaded = "Loaded"

Dim Conn

Function dbOpen()
    ' Undersøger om der er fejl i database forbindelsen
    On Error Resume Next
    Connection_string = "driver={MySQL ODBC 3.51 Driver};pwd="& cSql_Password &";uid="& cSql_Login &";database="& cSql_Database &";server="& cSql_Serverip
    Set Conn = Server.CreateObject("ADODB.Connection")
    ' Vist ikke nødvendig - Set Rs = Server.CreateObject("ADODB.Recordset")
    Conn.Open Connection_string
   
    ' Hvis der var fejl i database forbindelsen så sendes brugeren til en fejl side
    If Err.Number > 0 Or Err.Number < 0 Then
        Response.Redirect "dbFejl.asp"
    End If
End Function

- og så prøv at includ'e med dette:

If Not DbAspLoaded = "Loaded" Then
    <!--#include file="inc_title.asp"-->
End If
Avatar billede nielle Nybegynder
15. januar 2006 - 18:46 #12
Har du fået kigget på det?
Avatar billede nielle Nybegynder
23. januar 2006 - 19:29 #13
??
Avatar billede nielle Nybegynder
07. februar 2006 - 23:00 #14
Takker for point :^)
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