Mr NilsMedlem sedan jan. 2000640 inlägg Hejsan, har en databas som skall uppdatera en post, här är koden.
<!-- #include virtual="/3at/adovbs.inc" -->
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DSN=xxx;Password=xxxxx"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Dim answer
answer = Request.Form("yesno")
If answer = "" then answer = "no"
Uppdatera = "SELECT * FROM textbas WHERE ID = " & "1"
RecSet.Open Uppdatera, Connect, adOpenStatic, adLockOptimistic
RecSet("rubrik") = Request.Form("rubrik")
RecSet("texten") = Request.Form("texten")
RecSet("popuptext") = Request.Form("popuptext")
RecSet("yesno") = answer
RecSet.Update
RecSet.Close
Connect.Close
Response.Redirect "visa.asp"
%>
</html>
Där felet är rad 25
ADODB.Recordset.1 error '80004005'
Statement with cursor named in this statement's CURRENT-OF-CURSOR clause is not a SELECT FOR UPDATE.
Någon som vet vad felet är? Ganska bråttom.. så.. =)
------------------
/Nils Wikberg
-"Law and order are for weak minds. Chaos requires management.
emissionMedlem sedan dec. 19996 721 inlägg Kan inte se felet just nu, eftersom jag inte riktigt känner till din databas.
Varför skriver du
"SELECT * FROM textbas WHERE ID = " & "1"
??
"SELECT * FROM textbas WHERE ID = 1"
är ju samma sak
Som alltid, undvik recordset-update, och skriv en riktig UPDATE-sats i SQL i stället. Jag brukar tjata om detta, men det tål att upprepas.
UPDATE textbas SET rubrik='" & Request.Form("rubrik") & "',texten='" & Request.Form("texten") & "',popuptext='" & Request.Form("popuptext") & "',yesno='" & answer & "' WHERE textbas.ID=1
Kan inte förstå varför nu MS (om det var dom) gör en sån klumpig grej för att göra UPDATE frågor. jag menar först hämta upp all skit i ett recordset för att sedan updatera recordsetet för att slutligen lägga in i databasen. vad tänkte dom egenligen på??. inte undra på att ASP får dåligt rykte för att det är slött. OK , åter till frågan.. jo nils , gör en proper SQL fråga istället. typ UPDATE tabell SET fält1=nydata1, fält2=nydata2 WHERE sökfält=sökbegrepp
RikardMedlem sedan dec. 199917 055 inlägg Man måste inte göra sökningen, utan kan knyta recordsetet direkt till tabellen. Tycker inte att det är en dum grej, tvärtom, men man ska undvika det i ASP.
Dessutom har det inget med ASP att göra, utan bara ADO.
Mr NilsMedlem sedan jan. 2000640 inlägg Ber om ursäkt för min kasshet men nu får jag:
ADODB.Connection.1 error '80004005'
Syntaxfel i UPDATE-uttryck.
/3at/tonteknik/beta.asp, line 16
Rad 16 består av:
SQL = "UPDATE textbas SET rubrik='" & Request.Form("rubrik") & "',texten='" & Request.Form("texten") & "',popuptext='" & Request.Form("popuptext") & "',yesno='" & answer & "' WHERE textbas.ID=1"
Connect.Execute(SQL)
Koden i övrigt är densamma som den jag postade i första inlägget.
------------------
/Nils Wikberg
-"Law and order are for weak minds. Chaos requires management.
[Redigerat av Mr Nils den 02 sep 2000]
emissionMedlem sedan dec. 19996 721 inlägg Ber om ursäkt för min kasshet men nu får jag:
Ingen kasshet i sikte, och inget att be om ursäkt för. :)
Kolla vad variablen SQL har för värde när du exekverar den.
Response.Write SQL
Jag utgår från att ID är av typen tal.
Rikard, visa hur du uppdaterar databasen utan att använda SQL och utan att göra en SELECT först.
emissionMedlem sedan dec. 19996 721 inlägg Inte Rikard. Råkade posta i hans namn (bytte dator med honom ett par minuter).
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "tabellen", conn, adOpenDynamic, adLockOptimistic, adCmdTable
rs.find "ID=50"
för att öppna resp. söka en tabell, utan SELECT. Sökningen är väldigt inneffektiv, men att öppna en tabell så här är helt okej. Som vanligt ska man dock inte göra det ändå. UPDATE, SELECT och INSERT är det som gäller.
[Redigerat av emission den 06 sep 2000]