hattiMedlem sedan jan. 200165 inlägg
Har problem med att göra en update det som finns i fältet förs´vinner men inget nytt läggs till vad gör jag för fel??
<!-- #include file="adovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("forumet.mdb")&";"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From personligt Where ID=" &Request.QueryString("id")
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet("description") = Request.Form("description")
RecSet.Update
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
Response.Redirect "forum.asp"
%>
@ndersMedlem sedan juni 200026 914 inlägg
Tja, det kan vara så att du har angett fel formulärfält vid uppdateringen eller att du glömt att sätta metoden till post i formuläret.
Använd [kod]-taggar när du postar kod, så blir den lättare för oss att läsa.
Mvh
hattiMedlem sedan jan. 200165 inlägg
löste det hade satt formulärfältet efter textboxen lite klantigt men det var tackvare dig jag märkte det tack
m_soderlundMedlem sedan sep. 20024 733 inlägg
Förutom @nders svar, så kan följande kod vara att föredra:
<!-- #include file="adovbs.inc" -->
<%
Function fix(str)
str = Replace(str,"'","''")
fix = str
End Function
Dim Connect, SQL
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("forumet.mdb")&";"
SQL = "UPDATE personligt SET description = '" & fix(Request.Form("description")) & "' WHERE Id = " & fix(Request.Querystring("id"))
Connect.Execute(SQL)
Connect.Close : Set Connect = nothing
Response.Redirect "forum.asp"
%>
Jag använder inget Recordset, vilket är bättre för prestandan, plus att jag eliminerar eventuella felmeddelanden som kan komma av att det finns '.tecken i description från formuläret, samt i querystringen. :)
Engine^Medlem sedan dec. 20002 861 inlägg
Ett annat sätt att göra samma uppdatering på
<!-- #include file="adovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("forumet.mdb")
Uppdatera = "UPDATE personligt SET description = '" & Replace(Request.Form("description"), "'", "''") & _
"' WHERE ID = " & Request.QueryString("id")
Connect.Execute Uppdatera, , adExecuteNoRecords
Connect.Close
Set Connect = nothing
Response.Redirect "forum.asp"
%>
Använder du den här metoden, så bör du få ett tydligare felmeddelande om det är frågan det är fel på. Det ska dock fungera lika bra att använda Recordset.Update.
m_soderlundMedlem sedan sep. 20024 733 inlägg
Engine^s kod är att föredra, men använd min funktion fix på description. :) Det blir lättare i slutändan när du sen uppdaterar fler fält, då slipper man skriva Replace(.....) en massa gånger, och kan återanvända fix().
Dessutom kan det vara bra att kolla ifall om Id är numeriskt, annars blir det ett felmeddelandet till. Och slutligen - att inkludera hela adovbs.inc för en konstant är väl inte så bra, varför inte bara lägga till 128 i stället för adExecuteNoRecords och skippa inkluderingen av adovbs.inc? ;)
<%
Function fix(str)
str = Replace(str,"'","''")
fix = str
End Function
Dim Connect, Uppdatera, Id
Id = Request.Querystring("id")
If Not IsNumeric(id) Then
Response.Write("Id måste vara numeriskt")
Else
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("forumet.mdb")
Uppdatera = "UPDATE personligt SET description = '" & fix(Request.Form("description")) WHERE ID = " & id
Connect.Execute Uppdatera,, 128
Connect.Close : Set Connect = nothing
Response.Redirect "forum.asp"
End If
%>
nikoMedlem sedan juni 20022 415 inlägg
Att definiera om den inbyggda funktionen Fix kan ge rätt så svårfunna buggar den dag man kommer på att inkludera den i annan kod. Mindre lyckat namn, alltså.
m_soderlundMedlem sedan sep. 20024 733 inlägg
niko skrev:
Att definiera om den inbyggda funktionen Fix kan ge rätt så svårfunna buggar den dag man kommer på att inkludera den i annan kod. Mindre lyckat namn, alltså.
Ajdå, det var inte så lyckat. Tack för uppmärksamheten! :)