Jag vill uppdatera flera rader samtidigt i min databas. Men vet inte riktigt hur jag gör. Förstår inte frågan riktigt men det verkar var en loop som du är ute efter, eller? Ja förstår knappt själv ;) men iaf.. ..d går kanske inte att göra som jag gjort. Men hur ska jag göra? Hmm... Du har inte funderat på att kolla i filarean? har försökt lite olika, men får inte det att funka :( Du saknar ett mellanslag i sql-satsen tror jag. Om du kör: d hände inget när ja skrev "Response.Write strSQL Response.End". Men jag la iaf till ett mellanrum. Då funkade resp.write grejen. : alltså... spelarNummer = 9, 324, 0 WHERE spelarID = 3, 1, 2 "Hur ser källkodan för resultatet av ASP sidan ut" här e hela koden iaf... Du måste väl namnge fälten så att du vet vilken rad de tillhör (lägga till rad-id i namnet) men har jag inte gjort d? JAg skulle skrivit det:Uppdatera flera "rader" samtidigt...
Så här ser koden ut som jag testade...
<code>
SQL = "Update spelare Set spelarNummer='" & Request.Form("nummer") & "', spelarMatcher='" & Request.Form("matcher") & "' Where spelarNamn in(" & Request.Form("namn") & ")
</code>
---
Här e "formul'rkoden"
<code>
<% do until recset.EOF %>
<form method="post" action="spelar_reg.asp?fix=andrat" name="change">
<tr>
<td><input type="text" name="nummer" size="1" value="<%=RecSet("spelarNummer")%>"></td>
<td><select name="namn">
<option><%=RecSet("spelarNamn")%></option>
</select></td>
<td width="30"> <input type="text" name="matcher" size="1" value="<%=RecSet("spelarMatcher")%>"></td>
<td width="35"> <input type="text" name="inhopp" size="1" value="<%=RecSet("spelarInhopp")%>"></td>
<td width="28"> <input type="text" name="minuter" size="2" value="<%=RecSet("spelarMinuter")%>"></td>
<td width="39"> <input type="text" name="minmatch" size="1" value="<%=RecSet("spelarMinMatch")%>"></td>
<td width="45"> <input type="text" name="snitt" size="1" value="<%=RecSet("spelarSnitt")%>"></td>
<td width="40"> <input type="text" name="form" size="1" value="<%=RecSet("spelarForm")%>"></td>
<td width="30"> <input type="text" name="mal" size="1" value="<%=RecSet("spelarMal")%>"></td>
<td width="35"> <input type="text" name="assist" size="1" value="<%=RecSet("spelarAssist")%>"></td>
<td width="30"> <input type="text" name="poang" size="1" value="<%=RecSet("spelarPoang")%>"></td>
<td width="37"> <input type="text" name="gula" size="1" value="<%=RecSet("spelarGula")%>"></td>
<td width="41"> <input type="text" name="roda" size="1" value="<%=RecSet("spelarRod")%>"></td>
</tr>
<%
RecSet.MOVENEXT
LOOP
%>
<tr>
<td> </td>
<td> <input type="Submit" name="andra" value="Ändra"> </td>
</code>Sv: Uppdatera flera "rader" samtidigt...
Exempel:
<code>
Dim objRS
Dim sSQL
objRS = Server.CreateObject("ADODB.RecordSet")
sSQL = "UPDATE..."
objRS.Open sSQL, myConnection, 3, 3
Do Until objRS.EOF OR objRS.BOF
MittFält1("Värde") = Request.Form("Värde")
MittFält2("Värde") = Request.Form("Värde")
MittFält3("Värde") = Request.Form("Värde")
objRS.MoveNext
Loop
objRS.Update
</code>
Hoppas detta hjälper!
//ChristerESv: Uppdatera flera "rader" samtidigt...
Jag har ett formulär som visar en spelare, hur många mål, matcher m.m Sen har jag loopat det så alla spelare visas på samma sätt. Därefter har jag en "submit" knapp...för alla spelare, så jag inte behöver uppdatera varje för sig.
Spelarens namn står redan där i en "list" ruta, som man inte kan ändra något i. Vet inte ens om man kan göra riktigt så här...
Jag tror att det är detta som e fel.
...Where spelarNamn in(" & Request.Form("namn") & ") Sv: Uppdatera flera "rader" samtidigt...
Sv: Uppdatera flera "rader" samtidigt...
Programarkivet:Redigerar flera poster på en sidaSv: Uppdatera flera "rader" samtidigt...
just nu får jag detta felmeddelande:
...Syntax error in UPDATE statement.
reg.asp, line 126
koden runt rad 126:
<code>
For Index = 1 To CLng(Request.Form("Count"))
strID = Request.Form("ID" & Index)
strNummer = Request.Form("nummer" & Index)
strSQL = "UPDATE spelare SET spelarNummer = " & strNummer & vbCrLf & _
"WHERE spelarID = " & strID
con.execute(strSQL)
Next
</code>Sv: Uppdatera flera "rader" samtidigt...
<code>
Response.Write strSQL
Response.End
</code>
så kommer du att se att spelarens nummer går ihop med where-satsen. Se till att få in ett mellanrum där så borde det fungera bättre. Glöm inte att markera tråden som löst när du kommit i mål..Sv: Uppdatera flera
UPDATE spelare SET spelarNummer = 9, 324, 0 WHERE spelarID = 3, 1, 2
Men det funkar ändå inte, tar jag bort resp.write så är det tyvärr fortfarande UPDATE fel
Microsoft JET Database Engine error '80040e14'
Syntax error in UPDATE statement. Sv: Uppdatera flera
jag ska ha en statistiksida där flera olika spelare (fotboll) ska visas. bl.a spelarnummer, mål, assist, poäng m.m.
jag sparar statistiken i en databas och därför vill jag kunna uppdatera den genom asp. ungefär så här ser det ut:
<code>
<%
Set fldName = rs("spelarNamn")
Index = Index + 1
%>
<form method="post" action="spelar_reg.asp?action=andrat" name="change">
<% do until rs.EOF %>
<tr>
<td><input type="hidden" name="ID<%=Index%>" size="1" value="<%=rs("spelarID")%>"></td>
<td><input type="text" name="nummer<%=Index%>" size="1" value="<%=rs("spelarNummer")%>"></td>
<td><%= Server.HTMLEncode(fldName.Value) %></td>
</code>
Och eftersom det är så många spelare så vill jag kunna uppdatera alla samtidigt, ("med en knapp").
<code>
</tr>
<%
rs.MOVENEXT
LOOP
%>
<input type="hidden" name="Count" value="<%=Index%>">
<tr>
<td> </td>
<td> <input type="Submit" name="andra" value="Ändra"> </td>
</code>
sen skickas man till detta:
<code>
<% ElseIf Request.Querystring("action") = "andrat" Then
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & Server.MapPath("statistik.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
For Index = 1 To CLng(Request.Form("Count"))
strID = Request.Form("ID" & Index)
strNummer = Request.Form("nummer" & Index)
strSQL = "UPDATE spelare SET spelarNummer = " & strNummer & vbCrLf & _
" WHERE spelarID = " & strID
con.execute(strSQL)
Next
</code>
ps. har bara lagt in spelarNummer i updaten så länge, därför ja tyckte att d verkade lättare än att börja lägga in alla direkt...
;)Sv: Uppdatera flera "rader" samtidigt...
Ser ut som om den har tre värden.
Hur ser källkodan för resultatet av ASP sidan ut?Sv: Uppdatera flera "rader" samtidigt...
vilken menar du?Sv: Uppdatera flera "rader" samtidigt...
<code>
<%@ Language=VBScript %><%
Option Explicit
Response.Buffer = True
Dim con
Dim rs
Dim strID
Dim fldName
Dim strNummer
Dim fldDiscontinued
Dim Index
Dim RecordCount
Dim strSQL
if Request.Querystring("action") = "change" Then
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & Server.MapPath("statistik.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT spelare.*" & vbCrLf & _
"FROM spelare" & vbCrLf & _
"ORDER BY spelare.spelarNamn", con
%>
<link href="css.css" rel="stylesheet" type="text/css">
<table width="700" class="unnamed1">
<tr>
<td width="18">#</td>
<td width="236"><b>Spelare:</b><br> </td>
<td width="30">Ma</td>
<td width="35">Inh.</td>
<td width="37">Min</td>
<td width="39">M\M.</td>
<td width="45">Snitt.</td>
<td width="40">Form</td>
<td width="30">Må.</td>
<td width="35">Ass.</td>
<td width="30">P.</td>
<td width="37">Gula</td>
<td width="41">Röda</td>
</tr>
<%
Set fldName = rs("spelarNamn")
Index = Index + 1
%>
<form method="post" action="spelar_reg.asp?action=andrat" name="change">
<% do until rs.EOF %>
<tr>
<td><input type="hidden" name="ID<%=Index%>" size="1" value="<%=rs("spelarID")%>"></td>
<td><input type="text" name="nummer<%=Index%>" size="1" value="<%=rs("spelarNummer")%>"></td>
<td><%= Server.HTMLEncode(fldName.Value) %></td>
<td width="30"> <input type="text" name="matcher" size="1" value="<%=rs("spelarMatcher")%>"></td>
<td width="35"> <input type="text" name="inhopp" size="1" value="<%=rs("spelarInhopp")%>"></td>
<td width="28"> <input type="text" name="minuter" size="2" value="<%=rs("spelarMinuter")%>"></td>
<td width="39"> <input type="text" name="minmatch" size="1" value="<%=rs("spelarMinMatch")%>"></td>
<td width="45"> <input type="text" name="snitt" size="1" value="<%=rs("spelarSnitt")%>"></td>
<td width="40"> <input type="text" name="form" size="1" value="<%=rs("spelarForm")%>"></td>
<td width="30"> <input type="text" name="mal" size="1" value="<%=rs("spelarMal")%>"></td>
<td width="35"> <input type="text" name="assist" size="1" value="<%=rs("spelarAssist")%>"></td>
<td width="30"> <input type="text" name="poang" size="1" value="<%=rs("spelarPoang")%>"></td>
<td width="37"> <input type="text" name="gula" size="1" value="<%=rs("spelarGula")%>"></td>
<td width="41"> <input type="text" name="roda" size="1" value="<%=rs("spelarRod")%>"></td>
</tr>
<%
rs.MOVENEXT
LOOP
%>
<input type="hidden" name="Count" value="<%=Index%>">
<tr>
<td> </td>
<td> <input type="Submit" name="andra" value="Ändra"> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</form>
</table>
<%
rs.Close
Set rs = Nothing
%>
<% ElseIf Request.Querystring("action") = "andrat" Then
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & Server.MapPath("statistik.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
For Index = 1 To CLng(Request.Form("Count"))
strID = Request.Form("ID" & Index)
strNummer = Request.Form("nummer" & Index)
strSQL = "UPDATE spelare SET spelarNummer = " & strNummer & vbCrLf & _
" WHERE spelarID = " & strID
con.execute(strSQL)
Next
Response.Redirect "spelar_reg.asp?action=change"
%>
<% else %>
Du är inte inloggad!
<% end if %>
</code>Sv: Uppdatera flera "rader" samtidigt...
Sv: Uppdatera flera "rader" samtidigt...
ex." name="nummer<%=Index%>" " om det är så du menar... Sv: Uppdatera flera "rader" samtidigt...
<code>
<%@ Language=VBScript %><%
Option Explicit
Dim con
Dim rs
Dim strID
Dim fldName
Dim strNummer
Dim fldDiscontinued
Dim Index
Dim RecordCount
Dim strSQL
Response.Buffer = True
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & Server.MapPath("statistik.mdb")
If Request.Querystring("action") = "andrat" Then
For Index = 1 To CLng(Request.Form("Count"))
strID = Request.Form("ID" & Index)
strNummer = Request.Form("nummer" & Index)
strSQL = "UPDATE spelare SET spelarNummer = " & strNummer & vbCrLf & _
"WHERE spelarID = " & strID
con.Execute strSQL
Next
End If
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT spelare.*" & vbCrLf & _
"FROM spelare" & vbCrLf & _
"ORDER BY spelare.spelarNamn", con
%>
<link href="css.css" rel="stylesheet" type="text/css">
<form method="post" action="spelar_reg.asp?action=andrat" name="change">
<table width="700" class="unnamed1">
<tr>
<td width="18">#</td>
<td width="236">Spelare:<br> </td>
<td width="30">Ma</td>
<td width="35">Inh.</td>
<td width="37">Min</td>
<td width="39">M\M.</td>
<td width="45">Snitt.</td>
<td width="40">Form</td>
<td width="30">Må.</td>
<td width="35">Ass.</td>
<td width="30">P.</td>
<td width="37">Gula</td>
<td width="41">Röda</td>
</tr>
<%
Set fldName = rs("spelarNamn")
Do until rs.EOF
Index = Index + 1
%>
<tr>
<td><input type="hidden" name="ID<%=Index%>" size="1" value="<%=rs("spelarID")%>"></td>
<td><input type="text" name="nummer<%=Index%>" size="1" value="<%=rs("spelarNummer")%>"></td>
<td><%= Server.HTMLEncode(fldName.Value) %></td>
<td width="30"><input type="text" name="matcher" size="1" value="<%=rs("spelarMatcher")%>"></td>
<td width="35"><input type="text" name="inhopp" size="1" value="<%=rs("spelarInhopp")%>"></td>
<td width="28"><input type="text" name="minuter" size="2" value="<%=rs("spelarMinuter")%>"></td>
<td width="39"><input type="text" name="minmatch" size="1" value="<%=rs("spelarMinMatch")%>"></td>
<td width="45"><input type="text" name="snitt" size="1" value="<%=rs("spelarSnitt")%>"></td>
<td width="40"> <input type="text" name="form" size="1" value="<%=rs("spelarForm")%>"></td>
<td width="30"> <input type="text" name="mal" size="1" value="<%=rs("spelarMal")%>"></td>
<td width="35"> <input type="text" name="assist" size="1" value="<%=rs("spelarAssist")%>"></td>
<td width="30"> <input type="text" name="poang" size="1" value="<%=rs("spelarPoang")%>"></td>
<td width="37"> <input type="text" name="gula" size="1" value="<%=rs("spelarGula")%>"></td>
<td width="41"> <input type="text" name="roda" size="1" value="<%=rs("spelarRod")%>"></td>
</tr>
<%
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
con.Close
Set Con = Nothing
%>
<tr>
<td> </td>
<td><input type="Submit" name="andra" value="Ändra"> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<input type="hidden" name="Count" value="<%=Index%>">
</form>
</code>