Avatar billede starf Nybegynder
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?
Avatar billede starf Nybegynder
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
Avatar billede nielle Nybegynder
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)
Avatar billede starf Nybegynder
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
Avatar billede thomas_yde Nybegynder
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.
Avatar billede thomas_yde Nybegynder
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.. :)
Avatar billede starf Nybegynder
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 ... :(
Avatar billede nielle Nybegynder
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
Avatar billede starf Nybegynder
19. februar 2006 - 16:46 #8
nielle smid et svar
Avatar billede nielle Nybegynder
19. februar 2006 - 17:47 #9
Svar :^)
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