Jag hämtar 2 st värden samt datum från en databas månadsvis och vill kunna uppdatera dessa. Du har fel i din uppdatte SQL. Nja, det känner jag till men det är nog inte här problemet är då satsen här nedan ger: Menar du att t ex f + nummer = Request.Form("tabellnr") blir t ex 2,2,2,2 så är det ju som så, att du måste splita den strängen, och istället för For Each item In Request.Form så måste du gära en do loop. Jag tror att Du är på helt rätt spår, men mina kunskaper räcker tydligen inte när det gäller att "splita upp" och köra loopen trots det fina exemplet från dig. Kanske du kan se vad jag gör för tokigt?Uppdatera flera poster samtidigt från Recordset i formulär, får ej "till det"...
Värt att notera: "raknare" är ID-begrepp i databas(använder jag ej i "mottagande sida"). Datum är unikt och jag använder mig av denna för att uppdatera i databasen.
Så här ser första sidan ut med formuläret:
<%
sql="SELECT * FROM[scrap" & scrapnr & "] WHERE datum LIKE '" & ar & "-" & manad & "-%' "
sql=sql & "order by datum"
Set rs=Server.CreateObject("ADODB.Recordset")
'Response.write "SQL-query:"&sql&""
'Response.End
rs.Open sql,conn,3,3
%>
<table border="0" cellpadding="0" cellspacing="0" width="550">
<form name="scrapform" method="POST" action="scrapmonth3.asp">
<tr>
<td width="20" class="text"></td>
<td width="120" class="text"></td>
<td width="110" class="text">
<div align="left">
<b>USD $</b></div>
</td>
<td width="300" class="text"><b>RMB</b></td>
</tr>
<%Do until rs.EOF%>
<tr>
<td width="20" class="text3"><input type="hidden" value="<%=scrapnr%>" name="tabellnr">
<input type="hidden" value="<%=rs("raknare")%>" name="raknare"></td>
<td width="120" class="text3"><b><font size="2"><input type="text" name="datum"
value="<%=rs("datum")%>" size="10" readonly></font></b></td>
<td width="110" class="text3"><input type="text" name="usd"
value="<%=rs("f" & scrapnr & "v")%>" size="10"></td>
<td width="300" class="text3"><input type="text" name="rmb"
value="<%=rs("f" & scrapnr & "r")%>" size="10"></td>
</tr>
<%
Rs.MoveNext
Loop
rs.Close
conn.Close
set rs=nothing
set conn=nothing
%>
Mottagande sida har följande script:
<%
Set conn=Server.createObject("ADODB.Connection")
conn.open "scrap"
For Each item In Request.Form
nummer = Request.Form("tabellnr")
datum = Request.Form("datum")
usd = Request.Form("usd")
rmb = Request.Form("rmb")
sql="Update scrap" & nummer & " Set f" & nummer & "v="&usd&", f" & nummer & "r="&rmb&" WHERE datum = #" & datum & "#"
'Response.Write(sql)
'Response.End
conn.execute(sql)
Next
conn.Close
%>
Får felmeddelande om "syntaxfel i uppdateringen"
Sv: Uppdatera flera poster samtidigt från Recordset i formulär, får ej "till det
Titta på detta exemplet:
<code>
SQL = "Update t_amne Set Amne ='" & sKat & "',Info ='" & sInfo & "' WHERE ID ="& Request("Id") </code>
Komm ihåg, är det en sträng som du skall uppdatera skall du ha enkelfnuttar och dubbelfnuttar
runt din variabel.
Är det ett tal, skall du enbart ha dubbelfnuttar.Sv:Uppdatera flera poster samtidigt från Recordset i formulär, får ej "till det
nummer = Request.Form("tabellnr") ' variabel som ändras beroende på val av tabell från annan sida
datum = Request.Form("datum") ' datumformat yyyy-mm-dd
usd = Request.Form("usd") ' innehåller ett belopp
rmb = Request.Form("rmb") ' innehåller ett belopp
sql="Update scrap" & nummer & " Set f" & nummer & "v="&usd&", f" & nummer & "r="&rmb&" WHERE datum = #" & datum & "#"
Ger :
sql=Update scrap2 Set f2v=usd, f2r=rmb WHERE datum = 2005-06-11
f2v samt f2r är kolumner i tabell scrap2
f3v samt f3r är kolumner i tabell scrap3 osv. Endast en tabell uppdateras åtgången.
Jag tror det är något med "loopen" i updaten som inte fungerar, jag får alla värdena efter varandra
typ: Set f2,2,2,2,2,2, osv dessa skall ju delas upp per datum
Sv: Uppdatera flera poster samtidigt från Recordset i formulär, får ej "till det
OBS nedanför exempel ifrån min egen kod, du måste ändra den:
<code>
sNmedBild = split(smedBild, ",", -1, 1)
For i = 0 to ubound(sNmedBild)
SQL = ("Insert INTO t_medBild(Id,Bild)VALUES( " & RS(0) & ",'" & TRIM(sNmedBild(i)) & "' )")
Connection.Execute(SQL)
'response.write SQL &"<BR>"
Next
</code>
I mitt fall så är sNmedBild en variabel ifrån en requestform.
Hjälper detta dig?Sv:Uppdatera flera poster samtidigt från Recordset i formulär, får ej "till det
Mottagande sida ser ut som följer med felkod "Inkompatibla typer" på strängen "Update....
<%
Set conn=Server.createObject("ADODB.Connection")
conn.open "scrap"
datum = Request.Form("datum")
nummer = Request.Form("tabellnr")
usd = Request.Form("usd")
rmb = Request.Form("rmb")
datum1 = split(datum, ",", -1, 1)
nummer1 = split(nummer, ",", -1, 1)
usd1 = split(usd, ",", -1, 1)
rmb1 = split(rmb, ",", -1, 1)
For i = 0 to ubound(datum1)
sql="Update scrap" & nummer1 & " Set f" & nummer1 & "v="&usd1&", f" & nummer1 & "r="&rmb1&"
WHERE datum = #" & datum1 & "#"
Response.Write(sql)
Response.End
conn.execute(sql)
Next
conn.Close
%>