jwradheMedlem sedan juni 2002711 inlägg jag försöker att göra så att koden visar inlagget med id blabla och samtidigt updatera last fältet med +1 .
min kod ser ut så här
<%
Set Connect = Server.CreateObject("ADODB.connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/forum.mdb")
SQL = "SELECT * from forum WHERE id= " & (Request.Querystring("id")) &" "
SQL = "UPDATE forum SET last=last+1 WHERE id "& (Request.Querystring("id")) &" "
Set RecSet = Connect.execute(SQL)
%>
får felmeddelande
Microsoft JET Database Engine error '80040e14'
Syntax error in UPDATE statement.
/las_trad.asp, line 26
hur ska jag skriva....??
nikoMedlem sedan juni 20022 599 inlägg WHERE id =" & Request.Querystring("id")
Kanske?
SkarreMedlem sedan apr. 20012 427 inlägg Du har glömt ett likhetstecken i den andra SQL-frågan.
nikoMedlem sedan juni 20022 599 inlägg
niko skrev:
WHERE id =" & Request.Querystring("id")
Första gången jag citerar mig själv.
AnkmanMedlem sedan juni 2002116 inlägg Den första SQL-satsen körs aldrig
??
solbulleMedlem sedan mars 20015 287 inlägg Som sagt, den första sqlsatsen körs aldrig eftersom du först ger variabeln SQL ett värde och sen på nästa rad ett nytt värde för att sen köra det sista värdet.
- Fast det har väl iofs inte riktigt med ditt problem att göra.
<%
Set Connect = Server.CreateObject("ADODB.connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/forum.mdb")
SQL = "UPDATE forum SET last=last+1 WHERE id ="& (Request.Querystring("id"))
Connect.Execute SQL,,128
%>
CoolDudeMedlem sedan aug. 2000304 inlägg Re: Hur gör man ??
<%
Set Connect = Server.CreateObject("ADODB.connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/forum.mdb")
SQL = "SELECT * from forum WHERE id= " & (Request.Querystring("id")) &" "
SQL = "UPDATE forum SET last=last+1 WHERE id "& (Request.Querystring("id")) &" "
Set RecSet = Connect.execute(SQL)
%>
Tror den strängen kan bli väldigt jobbig att ta sig igenom. :OO
Så här skulle jag ha gjort typ.... :stud
Set Connect = Server.CreateObject("ADODB.connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/forum.mdb")
SQL = "SELECT * from forum WHERE id= " & (Request.Querystring("id")) &" "
[b]Set RecSet = Connect.execute(SQL)
sista=RecSet("last")+1[/b]
SQL = "UPDATE forum SET [b]last='" & sista & "' WHERE id =" & Request.Querystring("id")[/b]
Connect.execute(SQL)
/r Markerat förändringarna... :r
SkarreMedlem sedan apr. 20012 427 inlägg Att köra t.e.x. "SET foo = foo + 1 ..." har aldrig varit några problem för min del. Väldigt smidigt, till skillnad från din "lösning", CoolDude. :P ;) Men jag är säkert ute och cyklar som vanligt när det gäller ASP.
AnkmanMedlem sedan juni 2002116 inlägg Det går alldeles utmärkt att köra "SET foo = foo + 1..." Att först skapa ett recordset och sen infoga värdet med ett nytt anrop är ganska onödigt.
nikoMedlem sedan juni 20022 599 inlägg Inte bara onödigt dessutom potentiellt fel. Om flera personer surfar samtidigt så riskerar man att få ett för lågt värde på "last" i databasen.
För att lösa det så skulle man behöva rama in koden med:
Application.Lock
....
Application.UnLock
Som sagt .. ?