Det första man gör när man får ett felmeddelande på en SQL-fråga är att skriva ut den med Response.Write istället för att exekvera den. Då kan man lätt se om variabelvärden saknas, exempelvis.
Alltså: hur ser det ut?
14 svar · 309 visningar · startad av voigtann1
Jag kör:
<%
if request.querystring("change") = "true" then
SQL = "select * from forums"
Set RS22 = Databas.Execute(SQL)
Do Until RS22.eof
SQL = "UPDATE forums set topics = "& trim(request.form("order")) &" where ID = "& trim(request.form("id"))
Set RS223 = Databas.Execute(SQL)
RS22.MoveNext
Loop
RS22.close
end if
%>
på denna kod:
<%
SQL = "select * from forums order by topics"
Set RS = Databas.Execute(SQL)
SQL = "select count(*) as antal from forums"
Set RS2 = Databas.Execute(SQL)
%>
<table><form method="post" action="sort.asp?change=true">
<% Do While NOT RS.EOF%><tr>
<% if rs("url") <> "" then %>
<td class="mess3">
<% elseif rs("info") <> "" then %>
<td>
<%else%>
<td class="topic">
<% end if%>
<%=rs("namn")%></td><td><input value="<%=rs("ID")%>" name="ID"><select name="order" size="1" class=mess3>
<% for i = 1 to rs2("antal") %><option value="<%=i %>"<% if rs("topics") = i then response.write " selected"%>><%=i%></option>
<%next%>
</select>
</td>
</tr>
<%
rs.movenext
Loop
%>
Problemet är när jag ska updatera min fina RS22 kod.. får jag:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement
ID = räknare
topics = tal
Det första man gör när man får ett felmeddelande på en SQL-fråga är att skriva ut den med Response.Write istället för att exekvera den. Då kan man lätt se om variabelvärden saknas, exempelvis.
Alltså: hur ser det ut?
Du lägger ut många fält med samma namn (ID). Värdet i det fältet blir då en komma-separerad lista med alla idnummer.
Din update ser nog ut som
update forums set topics = 1,2,3,4 where id = 3,4,5,6
Du får antingen döpa fälten till olika namn (ID1,ID2,...) och hålla reda på hur många det finns eller så kan du göra split på värdet för att få tag på enskilda idnumrem eller så kan du indexera dig i fältet eller använda for each eller ...
UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25
får jag... saken är.. jag ska kunna lägga in fler ID och sånt hela tiden...
Det hade kanske räckt med en av SQL-strängarna. :)
SQL = " UPDATE forums set topics = "& request.form("skins") & " where ID = "& request.form("id")
response.write SQL
Set RS223 = Databas.Execute(SQL)
får detta:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.
SQL:
UPDATE forums set topics = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 12, 13, 14, 16, 2, 3, 6, 7, 1, 4, 5, 9, 8, 21, 22, 19, 23, 24, 10, 11, 20, 15, 17, 18, 25
Voigtan: Du får nog köra en For each Item In Request.Form loop eller nåt, kika på denna tråden: http://www.webforum.nu/showthread.php?s=&threadid=50175
jag får det inte att fungera.. och nu e allt helt knäppt :/
Vad är själva målet med det hela? Hur ser tabellerna ut? Vad ska in och varför?
Du har en loop...
SQL = "select * from forums"
Set RS22 = Databas.Execute(SQL)
Do Until RS22.eof
SQL = "UPDATE forums set topics = "& trim(request.form("order")) &" where ID = "& trim(request.form("id"))
Set RS223 = Databas.Execute(SQL)
RS22.MoveNext
Loop
RS22.close
Vad är syftet med den? Som den ser ut nu så kör den exakt samma SQL-sats X antal gånger, där X är antalet rader i tabellen "forums".
mvh
emission
jag ska med hjälp av denna kod kunna "byta" ordning i ett forum...
Ok, men vad är förutsättningarna?
vad menar du med det?
Hur ser tabellerna ut, och vad vill du ska ändras i dem?
ah!:
ID - räknare
namn - Namn på forum
topics - Vilken ordning som forumet ska lista..
Jag ska bara kunna ändra om "Topics" i denna kod..
någon?
SQL =
UPDATE forums set topics = 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 where ID = 3, 4, 5, 7, 23, 24, 18, 19, 22, 25, 17, 21, 20, 12, 13, 10, 14, 15, 1, 2, 11, 6, 8, 9, 16
detta måste fungera på något sätt
SQL = "UPDATE forums set topics = "& trim(request.form("order")) &" where ID = "& trim(request.form("id"))