Request.QueryString("id") returnerar en tom sträng eftersom id inte finns med.
Skall id plockas från session istället, som du gör vid addnew?
11 svar · 327 visningar · startad av ampy
När jag har fyllt i en sak i ett formulär får jag detta felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'id ='.
/80/dagbok.asp, line 10
FORM-taggen i formuläret ser ut så här:
<form name="form1" method="post" action="dagbok.asp?vad=laggtill">
Då kommer man till detta ställe:
If Request.Querystring("vad") = "laggtill" Then
Addera = "Select * From dagbok"
RS.Open Addera, Connect, adOpenStatic, adLockOptimistic
RS.AddNew
RS("datum") = Now
RS("text") = Request.Form("text")
RS("skribent") = session("username")
RS("skribentnr") = session("id")
RS.Update
rs.close
Response.Redirect("dagbok.asp?id="&idnr&"")
End If
Men informationen hinner inte sparas för jag får det felmeddelande jag skrev i början. Rad 10 det syftar på ser ut så här:
SQL = "Select * From members WHERE id = " &Request.QueryString("id") & ""
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
Varför får jag felmeddelande om den raden när jag skickas till dagbok.asp?vad=laggtill
Hoppas någon kan hjälpa mig med detta.
Request.QueryString("id") returnerar en tom sträng eftersom id inte finns med.
Skall id plockas från session istället, som du gör vid addnew?
Request.QueryString("id") returnerar en tom sträng eftersom id inte finns med.
Vart menar du detta?
På rad 11 eller?
Där kan jag iaf inte hämta id från session eftersom man ska kunna komma till olika dagböcker och det kan man ju inte om jag använder det session man har. Utan jag måste ha Request.QueryString("id") där.
Jo, på rad 11.
Om du vill använda request.querystring("id") så måste den vara med i din formtagg
<form name="form1" method="post" action="dagbok.asp?vad=laggtill&id=4711">
eller vill du hoppa över selecten på rad 10 om id inte är medskickat?
if request.querystring("id") <> "" then
SQL = "Select * From members WHERE id = " &Request.QueryString("id") & ""
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
'...
Tror du har missuppfattat en sak. Den där sql-strängen som ligger på rad 11. Den ligger ju nästan högst upp på sidan och när jag sparar informationen i formuläret, det är då det blir fel. Men felet är på rad 11, varför det blir fel på rad 11 vet jag inte, den koden hör ju inte till när jag sparar informationen. Men det skulle vara snällt om du kunde kolla igenom filen, den är inte så lång.
den koden hör ju inte till när jag sparar informationen
Den koden kommer alltid att köras.
Om du vill undvika det så får du lägga till en if omkring den kodbiten.
OK, men såg du ngt fel i koden, varför får jag det felmeddelandet?
Lyssna nu på pappa LarsG, ampy så ska du se att det löser sig.
Om jag skriver så här i formtaggen:
<form name="form" method="post" action="dagbok.asp?vad=laggtill&id=1">
Då kommer jag till adressen dagbok.asp?vad=laggtill&id=1, alltså till sidan som om jag hade skrivit dagbok.asp?id=1
När jag kom till sidan dagbok.asp?vad=laggtill&id=1 så hade ingenting lagts till i databasen. Som om den hoppade över If Request.Querystring("vad") = "laggtill" Then och gick direkt till den vanliga sidan (dagbok.asp?id=1)
Varför blir det så här?
Posta mer kod så fixar vi det där direkt.
Ja just det, koden fanns redan ja.
Din första databas öppning körs ju hur du än skriver såvida du inte ställer ett villkor tex:
If Request.QueryString("id") <> "" then
tex precis innan du kör din sqlsats. (typ rad 11 el liknande)
Sen måste du även ha en:
End If
till den plats där den kod som visar dagboken slutar.
kolla vad ditt uppdaterings recordset heter, det som ligger längst ned.......du borde nog byta RS > RecSet
cya,
PatrikB