15. februar 2006 - 18:38
Der er
8 kommentarer og 1 løsning
Kan ik indsætte i DB "It is either closed or invalid"
Kan ik få lov at lave sende data til en db får bare denne her fejl: "ADODB.Recordset error '800a0e7d' The connection cannot be used to perform this operation. It is either closed or invalid in this context. /post_process_form.asp, line 56 " Linie 56 i min kode er: rs.Open strSQL Hele min post kode er: Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From gb" rs.Open strSQL rs.AddNew If Request.Form("Name") > "" Then rs("Name") = Request.Form("Name") If Request.Form("Email") > "" Then rs("Email") = Request.Form("Email") If Request.Form("Homepage") > "" Then rs("Homepage") = Request.Form("Homepage") If Request.Form("Entry") > "" Then rs("Entry") = Request.Form("Entry") rs("Date") = date() rs("ip") = Request.ServerVariables("REMOTE_ADDR") rs.Update rs.Close Set rs = Nothing Connect.Close set Connect = Nothing hele min connect kode er: <% Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "Select ID, Name, Email, Homepage, Date, Entry, ip, Kommentar From gb ORDER BY ID DESC" strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/db/fipsGbook.mdb") rs.Open strSQL, strDSN, 1 %> nogle der kan sige hva jeg gør galt?
Annonceindlæg fra Deloitte
15. februar 2006 - 18:55
#1
har prøvet at ændre lidt i det til: Const adOpenKeyset = 1 Const adLockOptimistic = 3 Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From gb" rs.Open strSQL, oConn, adOpenKeyset, adLockOptimistic rs.AddNew If Request.Form("Name") > "" Then rs("Name") = Request.Form("Name") If Request.Form("Email") > "" Then rs("Email") = Request.Form("Email") If Request.Form("Homepage") > "" Then rs("Homepage") = Request.Form("Homepage") If Request.Form("Entry") > "" Then rs("Entry") = Request.Form("Entry") rs("Date") = date() rs("ip") = Request.ServerVariables("REMOTE_ADDR") rs.Update rs.Close Set rs = Nothing Connect.Close set Connect = Nothing og så får jeg følgende fejl: ADODB.Recordset error '800a0bb9' Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. /post_process_form.asp, line 57
15. februar 2006 - 19:40
#2
Du åbner aldrig en database-connection. Prøv dette i stedet: strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/db/fipsGbook.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN strSQL = "SELECT ID, Name, Email, Homepage, Date, Entry, ip, Kommentar FROM gb ORDER BY id DESC" Set rs = Conn.Execute(strSQL)
16. februar 2006 - 08:36
#3
Ok nu ser min kode sådan her ud: Connect delen: <% Set rs = Server.CreateObject("ADODB.RecordSet") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/db/fipsGbook.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN %> og post delen Const adOpenKeyset = 1 Const adLockOptimistic = 3 strSQL = "SELECT ID, Name, Email, Homepage, Date, Entry, ip, Kommentar FROM gb ORDER BY id DESC" Set rs = Conn.Execute(strSQL) rs.Open strSQL, oConn, adOpenKeyset, adLockOptimistic rs.AddNew If Request.Form("Name") > "" Then rs("Name") = Request.Form("Name") If Request.Form("Email") > "" Then rs("Email") = Request.Form("Email") If Request.Form("Homepage") > "" Then rs("Homepage") = Request.Form("Homepage") If Request.Form("Entry") > "" Then rs("Entry") = Request.Form("Entry") rs("Date") = date() rs("ip") = Request.ServerVariables("REMOTE_ADDR") rs.Update rs.Close Set rs = Nothing Connect.Close set Connect = Nothing så får jeg denne fejl: ADODB.Recordset error '800a0e79' Operation is not allowed when the object is open. /post_process_form.asp, line 57 linie 57 er: rs.Open strSQL, oConn, adOpenKeyset, adLockOptimistic
16. februar 2006 - 15:14
#4
Når du laver en set rs = conn.Execute() så åbner den dit resultset. Hvis du vil bruge rs.open skal du fjerne den ovenstående linje.
16. februar 2006 - 15:15
#5
husk iøvrigt at din connection ikke hedder oConn men Conn. og senere at den ikke hedder Connect men Conn. Du skal nok rydde lidt op i dine variable navne.. :)
16. februar 2006 - 17:09
#6
ok har nu rydet op i det, og det ser nu sådan her ud: strSQL = "SELECT ID, Name, Email, Homepage, Date, Entry, ip, Kommentar FROM gb ORDER BY id DESC" Set rs = Conn.Execute(strSQL) rs.AddNew if Request.Form("Name") <> "" then rs("Name") = Request.Form("Name") end if if Request.Form("Email") <> "" then rs("Email") = Request.Form("Email") end if if Request.Form("Homepage") <> "" then rs("Homepage") = Request.Form("Homepage") else rs("Homepage") = "X" end if if Request.Form("Entry") <> "" then rs("Entry") = Request.Form("Entry") end if rs("Date") = date() rs("ip") = Request.ServerVariables("REMOTE_ADDR") rs.Update rs.Close Set rs = Nothing Conn.Close set Conn = Nothing connect del er det samme som før. men jeg får nu: ADODB.Recordset error '800a0cb3' Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype. /post_process_form.asp, line 38 linie 38 er: rs.AddNew bliver snart sindsyg ... :(
19. februar 2006 - 08:14
#7
Med den måde, du åbner forbindelsen til dit recordset på, kan det ikke opdateres. Det er det der giver dig fejlen. Det kan rettes, men så vidt jeg kan bedømme ud for resten af din kode, så ville resultatet faktisk være at du overskrev noget du allerede havde i databasen, og det gætter jeg på ikke er meningen? I stedet ville jeg anbefale at du laver en INSERT sætning og så eksekvere denne: sql = "INSERT INTO gb (Name, Email, Homepage, Entry, Date, Ip) VALUES (" If Request.Form("Name") <> "" Then sql = sql & "'" & Replace(Request.Form("Name"), "'", "''") & ", " Else sql = sql & "'X', " End If If Request.Form("Email") <> "" Then sql = sql & "'" & Replace(Request.Form("Email"), "'", "''") & ", " Else sql = sql & "'X', " End If If Request.Form("Homepage") <> "" Then sql = sql & "'" & Replace(Request.Form("Homepage"), "'", "''") & ", " Else sql = sql & "'X', " End If If Request.Form("Entry") <> "" Then sql = sql & "'" & Replace(Request.Form("Entry"), "'", "''") & ", " Else sql = sql & "'X', " End If sql = sql & "'" & Date() & "', " sql = sql & "'" & Request.ServerVariables("REMOTE_ADDR") & "'" sql = sql & ")" Conn.Execute(sql) Conn.Close Set Conn = Nothing
19. februar 2006 - 16:46
#8
nielle smid et svar
19. februar 2006 - 17:47
#9
Svar :^)
Kurser inden for grundlæggende programmering