webForumDet fria alternativet

SQL sats fel..

17 svar · 333 visningar · startad av voigtann1

voigtann1Medlem sedan juni 20019 519 inlägg
#1
<%
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
#2

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.

voigtann1Medlem sedan juni 20019 519 inlägg
#3

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
#4

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.

voigtann1Medlem sedan juni 20019 519 inlägg
#5

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
#6

Ä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
#7

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
#8

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.

voigtann1Medlem sedan juni 20019 519 inlägg
#9

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
#10

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.

voigtann1Medlem sedan juni 20019 519 inlägg
#11

får fel... ska kolla lite mer på det inatt..

voigtann1Medlem sedan juni 20019 519 inlägg
#12

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
#13

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,

voigtann1Medlem sedan juni 20019 519 inlägg
#14

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
#15

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?

voigtann1Medlem sedan juni 20019 519 inlägg
#16

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
#17

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
voigtann1Medlem sedan juni 20019 519 inlägg
#18

nu fungera det :) tack!

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)