<%
If Request.Querystring("skickat") = "japp" then
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("****.mdb")
Session("dbasepath") = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
Databas.Open Session("dbasepath")
Session.LCID = 1053
namn = Request.Cookies("login")("username")
inlagg = Request.Form("inlagg")
forum_id = Request.Querystring("forum_id")
datum = now()
svar_id = Request.Querystring("inlagg_id")
ID = 0
SQL = "INSERT INTO answers"
SQL = SQL & "(id, svar_id, topic_id, skribent, inlagg, datum) "
SQL = SQL & "VALUES('" & id & "','" & svar_id & "', '" & topic_id & "', '" & skribent & "', '" & inlagg & "', '" & datum & "')"
SQL = "UPDATE topics SET senast_svar="& namn &", senast_datum="& datum &" WHERE id="& forum_id
Databas.Execute(SQL)
response.redirect "readpost.asp?forum_id="& Request.Querystring("forum_id") &"&inlagg_id="& Request.Querystring("inlagg_id")
End If
%>
får fel på rad 19:
Databas.Execute(SQL)
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '2002-07-01 14:06:35'.
/test.asp, line 19
LarsGMedlem sedan dec. 200012 464 inlägg Vilka datatyper har kolumnerna? Om senast_svar är text och datum är datetime så
SQL = "UPDATE topics SET senast_svar='"& namn &"', senast_datum=#"& datum &"# WHERE id="& topic_id
Varför har du med detta,
SQL = "INSERT INTO answers"
SQL = SQL & "(svar_id, skribent, datum, svar_id, epost, amne, inlagg) "
SQL = SQL & "VALUES('" & svar_id & "', '" & topic_id & "', '" & skribent & "', '" & inlagg & "', '" & datum & "')"
?
Du utför aldrig den inserten.
varför jag har med det??? det är där inlägget ska läggas upp... får inte det att fungera... :(
solbulleMedlem sedan mars 20015 287 inlägg Det ser ut som om du blandar ihop 2st SQL-satser, först börjar du btgga den ena men sen innan du har kört den (Databas.Execute(SQL)) Börjar du bygga den andra och därmed "radera" det första stycket.
Precis som LarsG skriver.
jag satter ' på "SQL = "UPDATE topics SET senast_svar='"& namn &"', senast_datum=#"& datum &"# WHERE id="& topic_id"
och jag har pillat lite på den:
SQL = "INSERT INTO answers "
SQL = SQL & "(svar_id, topic_id, skribent, inlagg, datum) "
SQL = SQL & "VALUES('" & svar_id & "', '" & topic_id & "', '" & skribent & "', '" & inlagg & "', '" & datum & "')"
' SQL = "UPDATE topics SET senast_svar='"& namn &"', senast_datum=#"& datum &"# WHERE id="& topic_id
Databas.Execute(SQL)
men jag får error ändå:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/test.asp, line 19
LINE 19:
Databas.Execute(SQL)
hur ska jag göra så att den gör båda SQL satserna? och få det att fungera?? vad är felet?
@ndersMedlem sedan juni 200032 969 inlägg Är inte svar_id och topic_id numeriska (av typen tal i tabellen)? I så fall, ta bort apostroferna runt värdena.
För att exekvera båda satserna är det ju bara att lägga in en Databas.Execute(SQL) precis ovanför UPDATE-satsen också.
Mvh,
UlfTMedlem sedan maj 20018 027 inlägg I din insert-sats försöker du lagra "datum" som om det vore en sträng. Du kanske skulle byta dina enkelfnuttar mot fyrkanter även i den satsen.
LarsGMedlem sedan dec. 200012 464 inlägg Om du vill utföra 2 olika sql-satser så får du göra 2 st executeanrop.
Exakt hur satserna skall se ut beror på vilken datatyp de olika kolumnrna har.
Date: # omkring värdena
Text: ' omkring värdena
Number: Inget
SQL = "INSERT INTO answers "
SQL = SQL & "(svar_id, topic_id, skribent, inlagg, datum) "
SQL = SQL & "VALUES(" & svar_id & ", " & topic_id & ", '" & skribent & "', '" & inlagg & "', #" & datum & "#)"
Databas.Execute SQL
SQL = "UPDATE topics SET senast_svar='"& namn &"', senast_datum=#"& datum &"# WHERE id="& topic_id
databas.execute SQL
Nu antar jag att svar_id och topic_id är number.
får error fortfarande.. men när man kör insert måste
(svar_id, topic_id, skribent, inlagg, datum)
vara den följden i databasen?
LarsGMedlem sedan dec. 200012 464 inlägg Det viktiga är bara att ordingen efter tabellnamnet är samma som ordningen efter values. Hur det är definierat i tabellen har ingen betydelse.
Blir det samma fel? Du får gå igenom alla kolumnerna och kontrollera typerna.
får fel... ska kolla lite mer på det inatt..
måste man ha ID med i insert???? får inte något att fungera.. även "Update" ... knäppt.
@ndersMedlem sedan juni 200032 969 inlägg Det beror väl på vad ID är för något. Är det en räknare får du inte ha med det, då skapas det ju automatiskt.
Mvh,
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
/test.asp, line 20
SQL = "INSERT INTO answers "
SQL = SQL & "(svar_id, topic_id, skribent, inlagg, datum) "
SQL = SQL & "VALUES(" & svar_id & ", " & topic_id & ", '" & skribent & "', '" & inlagg & "', #" & datum & "#)"
Databas.Execute SQL
alla namn stämmer..
datum är datum
svar_id och topic_id är tal
och inlägg är PM
och användarnamnet text...ändå stämmer det inte...
LarsGMedlem sedan dec. 200012 464 inlägg Kan du lägga till en utskrift av sql-satsen
SQL = "INSERT INTO answers "
SQL = SQL & "(svar_id, topic_id, skribent, inlagg, datum) "
SQL = SQL & "VALUES(" & svar_id & ", " & topic_id & ", '" & skribent & "', '" & inlagg & "', #" & datum & "#)"
response.write sql
'Databas.Execute SQL
Är svar_id och topic_id definierade?
nu har jag fixat vad som var fel och sånt.. tack LarsG
Men nu har jag problem med den andra UPDATE:
SQL = "UPDATE topics "
SQL = SQL & "WHERE ID = "& vsvar_id &" "
SQL = SQL & "SET senast_svar = '"& vnamn &"', senast_datum= #"& vdatum &"#"
response.write SQL
databas.execute SQL
Den klarar skriva ut hela inlägget ser ut som att det stämmer.. får inga error men den updatera inte...
LarsGMedlem sedan dec. 200012 464 inlägg Du borde ha fått fel på den satsen
SQL = "UPDATE topics "
SQL = SQL & "SET senast_svar = '"& vnamn &"', senast_datum= #"& vdatum &"#"
SQL = SQL & " WHERE ID = "& vsvar_id
response.write SQL
databas.execute SQL