webForumDet fria alternativet

update sats funkar ej!

17 svar · 284 visningar · startad av henrik2001

henrik2001Medlem sedan dec. 2000241 inlägg
#1

hejsan...ett problem har uppstått!!
med den här koden ska det bli så här:
fälten ska uppdateras, men ALLA poster uppdateras då - det är bara där t.ex id=56, som det ska ändras.
när det "fungerade", alltså då ALLA poster uppdaterades, funkade det dessutom inte med en textarea.

koden för formuläret:

<%ID=Request.Querystring("ID")%>

<% Set conn=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.Recordset")
conn.Open "DSN=dsn20"

SQL="Select * From [Tabell] Where ID Like '" & ID & "%'"
rs.Open SQL, conn %>

<form method="POST" action="change.asp">
  <p>
  <input type="text" name="b1" size="20" value="<%=rs("[Fält1]")%>"><br>
  <input type="text" name="b2" size="20" value="<%=rs("[Fält2]")%>"><br>
  <input type="text" name="b3" size="20" value="<%=rs("[Fält3]")%>"><br>
  <input type="text" name="b4" size="20" value="<%=rs("[Fält4]")%>"><br>
  <textarea rows="20" cols="40" name="b5"><%=replace(rs("[Fält5]"),"<br>",vbCrLf)%></textarea><br>
  <input type="submit" value="Skicka!" name="send">
  <input type="reset" value="Rensa!" name="tabort"></p>
</form>

ovanstående kod funkar, dvs man får upp rätt uppgifter, men det är "change.asp" som inte funkar!

koden för sidan som anropas, change.asp:

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=dsn20"
conn.Execute("UPDATE [Tabell] SET [Fält1] = '" & Request.Form("b1") & "', [Fält2] = '" & Request.Form("b2") & "', [Fält3] = '" & Request.Form("b3") & "', [Fält4] = '" & Request.Form("b4") & "', [Fält5] = '" & Replace(Request.Form("b5"),vbCrLf,"<br>") & "'")
conn.Close
%>

obs, klammrarna runt Fält1 osv är bara tillfälliga, de tas bort sen, jag vet att det inte funkar med dem!
:)
tackar på förhand!

henrik

------------------
Min hemsida kommer snart...den som väntar på något gott...!

@ndersMedlem sedan juni 200032 969 inlägg
#2

först och främst måste du ju skicka med id från formulärsidan. sedan måste du också ha med en where i din sql-fråga.

jag föreslår att du slänger med id som ett hiddenfält i formuläret med namnet id och sedan plockar upp det med request.form("id").

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

henrik2001Medlem sedan dec. 2000241 inlägg
#3

det är just where-satsen som det är problem med, hidden fältet har jag fått in, men where-satsen går bara inte!
kan ngn vara snäll och skriva hela sql-frågan åt mej?

tackar på förhand

henrik

------------------
Min hemsida kommer snart...den som väntar på något gott...!

jispirMedlem sedan maj 20011 343 inlägg
#4
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=dsn20"
conn.Execute("UPDATE [Tabell] SET [Fält1] = '" & Request.Form("b1") & "', [Fält2] = '" & Request.Form("b2") & "', [Fält3] = '" & Request.Form("b3") & "', [Fält4] = '" & Request.Form("b4") & "', [Fält5] = '" & Replace(Request.Form("b5"),vbCrLf,"<br>") & "' where id= '" & Request.Form("id") & "' ")
conn.Close
%>

*ska funka*

------------------
verktygslådan

Ett gott trams förlänger
livet :e

[Redigerat av jispir den 06 feb 2001]

@ndersMedlem sedan juni 200032 969 inlägg
#5

om id är ett textfält.
annars får du ta bort apostroferna runt värdet i id.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

henrik2001Medlem sedan dec. 2000241 inlägg
#6

okej, tack för all hjälp, men det har inte löst sej än med textarea'n
jag har en sida...som ser ut så här:

<%ID=Request.Querystring("ID")%>
<% Set conn=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.Recordset")
conn.Open "DSN=dsn20"

SQL="Select * From [Tabell] Where ID Like '" & ID & "%'"
rs.Open SQL, conn %>

<form method="POST" action="change.asp">
<p>
<input type="text" name="b1" size="20" value="<%=rs("[Fält1]")%>"><br>
<input type="text" name="b2" size="20" value="<%=rs("[Fält2]")%>"><br>
<input type="text" name="b3" size="20" value="<%=rs("[Fält3]")%>"><br>
<input type="text" name="b4" size="20" value="<%=rs("[Fält4]")%>"><br>
<textarea rows="20" cols="40" name="b5"><%=replace(rs("[Fält5]"),"<br>",vbCrLf)%></textarea><br>
<input type="submit" value="Skicka!" name="send">
<input type="reset" value="Rensa!" name="tabort"></p>
</form>

den funkar perfekt, jag får upp alla värden. men den sida som anropas funkar ej:
(change.asp)

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=dsn20"
conn.Execute("UPDATE [Tabell] SET [Fält1] = '" & Request.Form("b1") & "', [Fält2] = '" & Request.Form("b2") & "', [Fält3] = '" & Request.Form("b3") & "', [Fält4] = '" & Request.Form("b4") & "', [Fält5] = '" & Replace(Request.Form("b5"),vbCrLf,"<br>") & "' where id= '" & Request.Form("id") & "' ")
conn.Close
%>

får följande felmeddelande:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket ''test-text<br>test-text<br>test-text'. 

/change.asp, rad 4

man ska alltså kunna ändra uppgifterana som kommer upp i textarea'n, mendet går bara inte!
hoppas ngn vet svaret!

tack på förhand

henrik

------------------
Min hemsida kommer snart...den som väntar på något gott...!

@ndersMedlem sedan juni 200032 969 inlägg
#7

det råkar inte dyka med en apostrof från textarean?

apostrofer får man ju inte utan vidare slänga in i ett fält, eftersom apostrofer är strängomslutare i sql.

du måste ersätta alla apostrofer till två stycken enligt följande:

replace (strängen, "'", "''")

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

henrik2001Medlem sedan dec. 2000241 inlägg
#8

okej...men jag fattar inte hur du menar...det vore snällt om du kunde visa hela den raden du menar...

tack

henrik

------------------
Min hemsida kommer snart...den som väntar på något gott...!

henrik2001Medlem sedan dec. 2000241 inlägg
#9

ingen som vill hjälpa mej?!?
:)

henrik

------------------
Min hemsida kommer snart...den som väntar på något gott...!

@ndersMedlem sedan juni 200032 969 inlägg
#10

joda, så klart att det är! :)

det blir lite svårt att hänga med på om man gör all replace i sql-strängen, så jag fixar lite variabler först för att förenkla.

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=dsn20"
b1 = replace(request.form("b1"),"'","''")
b2 = replace(request.form("b2"),"'","''")
b3 = replace(request.form("b3"),"'","''")
b4 = replace(request.form("b4"),"'","''")
b5 = replace(request.form("b5"),"'","''")
b5 = replace(b5,vbcrlf,"<br>")
id = request.form("id")
conn.Execute("UPDATE [Tabell] SET [Fält1] = '" & b1 & "', [Fält2] = '" & b2 & "', [Fält3] = '" & b3 & "', [Fält4] = '" & b4 & "', [Fält5] = '" & b5 & "' where id= '" & id & "' ")
conn.Close
%>

nånting sånt kanske? :)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

henrik2001Medlem sedan dec. 2000241 inlägg
#11

så här ser sidan ut, som visar uppgifterna...den funkar, man får upp rätt uppgifter.
men "update-sidan" change.asp - funkar fortfarande inte!!!
jag blir galen snart!

<form method="POST" action="change.asp" name="test">
  <p>
  <input type="hidden" name="id" value="<%=rs("ID")%>">
  <input type="text" name="b1" size="20" value="<%=rs("[Fält1]")%>" class="forms"><br>
  <input type="text" name="b2" size="20" value="<%=rs("[Fält2]")%>" class="forms"><br>
  <input type="text" name="b3" size="20" value="<%=rs("[Fält3]")%>" class="forms"><br>
  <input type="text" name="b4" size="20" value="<%=rs("[Fält4]")%>" class="forms"><br>
  <textarea rows="20" cols="40" wrap="virtual" name="b5" class="forms"><%=Replace(rs("[Fält5]"),"<br>",vbCrLf)%></textarea><br>
  <input type="submit" value="Skicka!" name="send" class="forms">
  <input type="reset" value="Rensa!" name="tabort" class="forms"></p>
</form>

change.asp...ska uppdatera uppgifterna....:

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=dsn20"
b1 = replace(request.form("b1"),"'","''")
b2 = replace(request.form("b2"),"'","''")
b3 = replace(request.form("b3"),"'","''")
b4 = replace(request.form("b4"),"'","''")
b5 = replace(request.form("b5"),"'","''")
b5 = replace(b5,vbcrlf,"<br>")
id = request.form("id")

<!--Rad 12 Nedan-->
conn.Execute("UPDATE Skivor SET [Fält1] = '" & b1 & "', [Fält2] = '" & b2 & "', [Fält3] = '" & b3 & "', [Fält4] = '" & b4 & "', [Fält5] = '" & b5 & "' Where ID = '" & id & "'")
conn.Close
%>

för följande felmeddelande:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e07' 

[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck. 

change.asp, rad 12

som sagt: jag blir galen snart, det funkar inte!!!
hoppas ngn kan hjälpa mej, innan jag blir galen asså!

tack på förhand

henrik

------------------
Min hemsida kommer snart...den som väntar på något gott...!

@ndersMedlem sedan juni 200032 969 inlägg
#12

är id av text- eller tal-typ?

om det är tal ska du inte ha apostrofer runt, alltså:

conn.Execute("UPDATE Skivor SET [Fält1] = '" & b1 & "', [Fält2] = '" & b2 & "', [Fält3] = '" & b3 & "', [Fält4] = '" & b4 & "', [Fält5] = '" & b5 & "' Where ID = " & id)

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

henrik2001Medlem sedan dec. 2000241 inlägg
#13

har jag fattat rätt nu: id-kolumnen i databasen är numrerad...alltså andra.asp?id=56 tex...fattade jag rätt?

------------------
Min hemsida kommer snart...den som väntar på något gott...!

@ndersMedlem sedan juni 200032 969 inlägg
#14

nja, jag vet inte vad du snackar om. :e

det är alltså din update-sats som är fel. vad har du för datatyper på alla dina fält i tabellen?

jag vet ju liksom inte vad du får för data. är fältet av text-typ skall det vara apostrofer runt värdet, precis som du har skrivit på alla fält. är det av typen tal, skall det inte vara några apostrofer. är fältet av typen datum skall det omgärdas av brädgårdar. #.

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

henrik2001Medlem sedan dec. 2000241 inlägg
#15

id-kolumnen är av typen räknare
fyra st. av kolumnerna är av typen text
en kolumn är av typen PM

vad det så du mena?

------------------
Min hemsida kommer snart...den som väntar på något gott...!

@ndersMedlem sedan juni 200032 969 inlägg
#16

japp.

om du provar koden i mitt inlägg som börjar är id av text- eller tal-typ? funkar inte det då :q

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

henrik2001Medlem sedan dec. 2000241 inlägg
#17

@nders: du ä bäääääst!!!
du anar inte hur många timmar jag har suttit med det där "lilla" problemet, du är bäst!!!!!

Tack! :)

henrik :)

------------------
Min hemsida kommer snart...den som väntar på något gott...!

@ndersMedlem sedan juni 200032 969 inlägg
#18

tack själv! :)

happy coding!

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)