07. januar 2006 - 21:07Der 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?
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
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
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?
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.
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!
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.
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.
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?
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
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.