Frågan 26 jan. 2004 17:41 #1 Hej hej!
När jag kör denna kod
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("forum.mdb")
SQL = "SELECT* FROM forum WHERE Id = '" & Request.Querystring("trad") & "'"
Set rs = db.Execute(SQL)
%>
<%
Do until rs.EOF
%>
<%=rs("Namn")%>
<%
rs.MoveNext
Loop
%>
Får jag detta meddelande:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/slauson/db/test/las.asp, line 5
Jag har prövat att skriva ut Querystringen och får då rätt värde!
Vad är fel?
Mvh Magnus Fernström
Om du tar bort enkelfjuttarna i SQL frågan på tabellen ID!
Fungerar det då? För jag antar att ID innehåller siffra/siffror
samt ha gärna ett mellanslag mellan SELECT och *
SQL = "SELECT * FROM forum WHERE Id = " & Request.Querystring("trad") & ""
Set rs = db.Execute(SQL)
Visst serru, det fungerar utmärkt. Tack så mycket!
magnusfernstrom skrev:
Visst serru, det fungerar utmärkt. Tack så mycket!
Varsågod :) Markera som slutgiltigt svar om det fungerade!
Men nya problem har dykt upp :)
Jag postar dom här:
När jag ska posta nytt så får jag detta meddelande:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/slauson/db/test/new.asp, line 5
Koden ser ut så här:
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("forum.mdb")
SQL = "INSERT INTO forum (Namn,Rubrik,Inlagg,Svar) VALUES ('" & Request.Form("Namn") & "', '" & Request.Form("Rubrik") & "', '" & Request.Form("Inlagg") & "', '" & Request.Form("Svar") & "')"
Set rs = db.Execute(SQL)
Response.Redirect "forum.asp"
%>
Jag har 0 som standard värde på Svar i databasen, som är av typen Tal.
Om man postar ett nytt inlägg har Querystringen inget värde, och jag gissar att det är därför det spökar.
@nders Medlem sedan juni 2000 32 967 inlägg Men alltså. Som M.Cheraghi skriver i sitt inlägg ovan, du skall icke ha apostrofer runt ett värde som tillhör ett fält av numerisk datatyp.
Om man postar ett nytt inlägg har Querystringen inget värde, och jag gissar att det är därför det spökar.
Vilken querystring?
du skall ICKE ha enkelfjuttar kring dem som har siffra/siffror som värde :)
Ocksen om du har standardvärde 0 som sätts av databasen! Varför ens ha med det fältet i SQL frågan och definera värdet 0 när databasen endå kommer att tilldela värdet 0 för den kolumnen!
r:/ Marsvin + hårtrimmer = sant :)
Men alltså, ska jag då ha:
" & Request.Form("Svar") & " eller?
@nders Medlem sedan juni 2000 32 967 inlägg Ja, alltså. ;)
& " på slutet ska du dock bara ha om du ska lägga till fler saker till strängen med sql-frågan (som i det här fallet, där du ska avsluta en parentes.)
Mvh
magnusfernstrom skrev:
Men alltså, ska jag då ha:
" & Request.Form("Svar") & " eller?
Om typen på kolumnen är TAL / NUMBER och "Svar" innehåller numeriskt värde, så ja :)
r:/Marsvin + häcksax = sant
jag hänger inte med i svängarna!
@nders skrev:
Vilken querystring?
Oj, glömde att säga det.
Sidan som formuläret finns på har denna kod:
<input type="hidden" name="Svar" value="<%=Request.Querystring("svar")%>">
Och om man kommer från en "tråd sida" och ska svara på tråden, förljer Id numret med så man vet vad man svarat på :D
Om man däremot ska skriva nytt inlägg så är strängen tom, då är det ett svar.
Eller ja, de poster med värder 0 på svar är huvudtrådar.
Hur ska jag då lösa detta då?
Om typen på kolumnen är TAL / NUMBER och "Svar" innehåller numeriskt värde, så ja
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
/slauson/db/test/new.asp, line 5
:)
Nu har jag även tagit bort standardvärde 0 i databasen.
@nders Medlem sedan juni 2000 32 967 inlägg Ok. Då är det en querystring på förra sidan, men inte nu längre ju. Nu kommer ju värdet från ett formulärfält. :)
Antingen så utelämnar du fältet svar ur SQL-frågan, eller så får du kolla att du får ett värde.
If request.form("svar") <> "" then svar=request.form("svar") else svar=0
Använd sedan svar istället för request.form("svar") i SQL-frågan.
Javisst, nu fungerar det!
Tack så hemskt mycket för hjälpen grabbar, och ursäkta om jag inte begriper allt :) ;)
Hej!
Ännu ett litet problem har dykt upp.
När man postat sitt svar vill jag att man ska skickas tillbkas till tråden man svarade i.
Response.Redirect "las.asp?trad=<%=request.querystring("trad")%>"
Denna kod fungerar inte, jag har även prövat att ta bort citationstecken mm. men det vill inte fungera.
Tacksam för svar // MF
@nders Medlem sedan juni 2000 32 967 inlägg På vilket sätt fungerar det inte? Var finns värdet för trad ? Varifrån hämtar du det?
Detta är den fullständiga koden:
<%
If request.form("Svar") <> "" then svar=request.form("Svar") else svar=0
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("forum.mdb")
SQL = "INSERT INTO forum (Namn,Rubrik,Inlagg,Svar) VALUES ('" & Request.Form("Namn") & "', '" & Request.Form("Rubrik") & "', '" & Request.Form("Inlagg") & "', " & svar & ")"
Set rs = db.Execute(SQL)
Response.Redirect "las.asp?trad=<%=Request.Form("Svar")%>"
%>
Detta felmeddelande får jag:
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/slauson/db/test/new.asp, line 9
Response.Redirect "las.asp?trad=<%=Request.Form("Svar")
-------------------------------------------------^
När jag endast skriver <%=Request.Form("Svar")%> på sidan som ska sätta in datan i databasen och sedan skickar iväg från sidan med förmuläret får jag rätt värde, det vill säga trådens ID.
@nders Medlem sedan juni 2000 32 967 inlägg Jag ber om ursäkt, det är jag som läser slarvigt. Du ska inte ha asp-contextswitchar (<% %>) inuti asp-kod, utan du ska konkatenera med &.
Response.Redirect "las.asp?trad=" & Request.Form("Svar")
Mvh
Och ja, det var fel innan. Jag hade Querystring istället för Form, men det funkar ändå inte!