webForumDet fria alternativet

Insert into ännu en gång

ASP

11 svar · 915 visningar · startad av lillsture

Medlem sedan dec. 200217 inlägg
Frågan#1

Hej!

Har sökt och läst men får iaf inte det här att fungera.. har inte många timmars asp kodande att se tillbaka på så det gör inte saken bättre :OO

Felmeddelandet är: (conn.execute raden = rad 12)

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntaxfel i INSERT INTO-uttryck.
add_book.asp, line 12

 <!-- #include file="../includes/connect.asp" -->
<%
	' Put the form values in variables
	category = Request.Form("category")
	title = Request.Form("title")
	writer = Request.Form("writer")
	the_year = Request.Form("year")

	Set rs = Server.CreateObject("ADODB.Connection")
	sql = ("INSERT INTO BookTbl (category_id, title, writer, year) VALUES ('" & category & "', '" & title & "', '" & writer & "', '" & the_year & "')")

	conn.execute(sql)
%>

Har även försökt med följande kod:

<!-- #include file="../includes/connect.asp" -->
<%
	' Put the form values in variables
	category = Request.Form("category")
	title = Request.Form("title")
	writer = Request.Form("writer")
	the_year = Request.Form("year")

	Set rs = Server.CreateObject("ADODB.Connection")
	sql = ("INSERT INTO BookTbl (category_id, title, writer, [year]) VALUES ('" & category & "', '" & title & "', '" & writer & "', '" & the_year & "')")

	conn.execute(sql)
%>

Får felmeddelandet på samma rad fast då av typen:
Error Type:
Microsoft JET Database Engine (0x80004005)
Operationen måste använda en fråga som kan uppdateras.
add_book.asp, line 12

Någon vänlig själ som kan ha en lösning på detta?

Gott Nytt år :bire :birp

Medlem sedan nov. 20017 144 inlägg
#2

Fråga: vad är detta?

Set rs = Server.CreateObject("ADODB.Connection")

Välkommen till WF!

Medlem sedan dec. 20001 626 inlägg
#3

hur ser din inklud fil??

har du
Set conn = Server.CreateObject("ADODB.Connection")
??

och som jesper sa, så här ska den raden vara

Set rs = Server.CreateObject("ADODB.Recordset")

Medlem sedan nov. 20017 144 inlägg
#4

...om du skall skapa ett recordset vill säga.

Medlem sedan nov. 20017 144 inlägg
#5

Testa att enhetsformatera "year" och "categori" om det inte är strängar.

Medlem sedan dec. 200217 inlägg
#6

Inklude filen ser ut på följande sätt:

<%
Set conn=Server.CreateObject("ADODB.Connection")
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Request.ServerVariables("APPL_PHYSICAL_PATH")&"libr.mdb; Persist Security Info=False"
conn.Open strConnect 
%>
Medlem sedan nov. 20017 144 inlägg
#7

"title" skall inte vara något reserverat ord, men du kan ju testa att klammra det med.
Vad händer om du skriver ut den då?:

category = Request.Form("category")
	title = Request.Form("title")
	writer = Request.Form("writer")
	the_year = Request.Form("year")

	sql = ("INSERT INTO BookTbl (category_id, title, writer, year) VALUES ('" & category & "', '" & title & "', '" & writer & "', '" & the_year & "')")
response.write sql
response.end
Medlem sedan dec. 200217 inlägg
#8

Samma problem om jag klammrar title. :(

Utskriften blir:

INSERT INTO BookTbl (category_id, title, writer, year) VALUES ('1', 'test', 'test', '1111')

Medlem sedan nov. 20017 144 inlägg
#9

Testa detta då:

category = cInt(Request.Form("category"))
	title = Request.Form("title")
	writer = Request.Form("writer")
	the_year = Request.Form("year")

	sql = ("INSERT INTO BookTbl (category_id, title, writer, year) VALUES (" & category & ", '" & title & "', '" & writer & "', '" & the_year & "')")

Vad har du för datatyper på kolumnerna?

Medlem sedan dec. 200217 inlägg
#10

Funkar inte med den koden heller :(

category = cInt(Request.Form("category"))
	title = Request.Form("title")
	writer = Request.Form("writer")
	the_year = Request.Form("year")

	sql = ("INSERT INTO BookTbl (category_id, title, writer, year) VALUES (" & category & ", '" & title & "', '" & writer & "', '" & the_year & "')")

Datatyperna:
category = tal
title = text
writer = text
year = text

Medlem sedan juni 20022 599 inlägg
#11

lillsture skrev:

Error Type:
Microsoft JET Database Engine (0x80004005)
Operationen måste använda en fråga som kan uppdateras.

Det är inte ett syntaxfel utan ett rättighetsproblem.

Högerklicka på mappen där databasen ligger välj Egenskaper->Säkerhet lägg till IUSER_DITTDATORNAMN i listan och tilldela kontot skrivrättigheter. Högerklicka sen på mdb-filen och upprepa samma sak. Om du kör XP kan du eventuellt behöva avmarkera Använd förenklad fildelning . Kör inte själv XP men har för mig du kan hitta den under Verktyg->Mappalternativ i ett vanligt Explorerfönster.

Medlem sedan dec. 200217 inlägg
#12

Man tackar för all snabb hjälp! :birp
Det va rättigheterna som det berodde på.

274 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)