webForumDet fria alternativet
Logga in / Bli medlem

Update

ASP

7 svar · 286 visningar · startad av hatti

Medlem sedan jan. 200164 inlägg
Trådstart#1

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"

%>

Medlem sedan juni 200032 967 inlägg
#2

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

Medlem sedan jan. 200164 inlägg
#3

löste det hade satt formulärfältet efter textboxen lite klantigt men det var tackvare dig jag märkte det tack

Medlem sedan sep. 20026 425 inlägg
#4

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. :)

Medlem sedan dec. 20003 887 inlägg
#5

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.

Medlem sedan sep. 20026 425 inlägg
#6

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

%>
Medlem sedan juni 20022 599 inlägg
#7

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å.

Medlem sedan sep. 20026 425 inlägg
#8

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! :)

261 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)