update sats funkar ej!

ASP

17 svar · 312 visningar · startad av henrik2001

Medlem sedan dec. 2000241 inlägg
Trådstart#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

Medlem sedan juni 200032 967 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,

Medlem 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

Medlem 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*

Medlem sedan juni 200032 967 inlägg
#5

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

Medlem 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

Medlem sedan juni 200032 967 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,

Medlem 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

Medlem sedan dec. 2000241 inlägg
#9

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

henrik

Medlem sedan juni 200032 967 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? :)

Medlem 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

Medlem sedan juni 200032 967 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,

Medlem 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?

Medlem sedan juni 200032 967 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,

Medlem 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?

Medlem sedan juni 200032 967 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

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

Medlem sedan juni 200032 967 inlägg
#18

tack själv! :)

happy coding!

254 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)