webForumDet fria alternativet

Problem med SQL UPDATE-kommandot

ASPur ASP

10 svar · 356 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

Hej! Jag har ett problem när jag försöker uppdatera min nyhetsdatabas efter att jag har redigerat ett tidigare inlägg. Då får jag följande fel...

Microsoft JET Database Engine error '80040e14'
Syntax error in UPDATE statement.

SQL-svaret jag får med response.write ser ut som följer...

SQL-sats: UPDATE t_news SET SECTION = '/Hem', SUBJECT = 'test', NEWSDATE = 2004-05-15 15:36:29, PUBLIC = 1, CONTENT = 'Test' WHERE ID = 43

... och själva sql-satsen i kodform ser ut så här

[SQL = "UPDATE t_news SET SECTION = '"&str_news_SECTION&"', SUBJECT = '"&str_news_SUBJECT&"', NEWSDATE = "&str_news_DATE&", PUBLIC = "&str_news_PUBLIC&", CONTENT = '"&str_news_CONTENT&"' WHERE ID = "&str_news_ID&""]

Slutligen så använder jag mig av en MS-access-databas.

Några idéer? :)

Medlem sedan dec. 20003 563 inlägg
#2

Enkelfnuttar ;)

NEWSDATE = '2004-05-15 15:36:29'

Välkommen till wF :bire

Medlem sedan juni 200032 967 inlägg
#3

Först och främst:
Välkommen till webForum! :)

Du saknar brädgårdar runt datumvärdet.

Jag passar också på att tipsa om SQL-forumet

Mvh

Medlem sedan mars 20015 287 inlägg
#4

Välkommen till wF!

Denna bit ser knasig ut om fälttypen är datum:

NEWSDATE = "&str_news_DATE&"

Borde vara:

NEWSDATE = #"&str_news_DATE&"#,

red/ hur kunde jag bli så där sen då?

Medlem sedan apr. 20041 597 inlägg
#5

Tack så mycket för ett trevligt mottagande :)

Nu prövade jag att först sätta dit "enkelfnuttar". Då får jag följande respons...

UPDATE t_news SET SECTION = '/Hem', SUBJECT = 'Test', NEWSDATE = '&str_news_DATE&', PUBLIC = 1, CONTENT = 'Test' WHERE ID = 43

Felmeddelandet är samma som tidigare. När jag provat andra lösningen där jag ska ha kvar "dubbelfnuttarna" och dessutom lägga till # så får jag följande respons...

UPDATE t_news SET SECTION = '/Hem', SUBJECT = 'Hej', NEWSDATE = #2004-05-15 15:36:29#, PUBLIC = 1, CONTENT = 'Testing testing testing' WHERE ID = 43

Any ideas now? :)

Medlem sedan dec. 20003 563 inlägg
#6

Om kolumnen PUBLIC är av text-typ ska det vara enkelfnuttar kring det också.

integertyp: Inte enkelfnuttar
text/datumtyp: Enkelfnuttar.

Medlem sedan dec. 20025 871 inlägg
#7

cyprys skrev:

text/datumtyp: Enkelfnuttar.

Om fältet ifråga är ett datumfält i en Access-databas ska inparametern omges, som @nders skrev, med brädgårdar (#).

Medlem sedan apr. 20041 597 inlägg
#8

Hmm...jag får det fortfarande inte att fungera. Jag är dock helt med på vad som sagts tidigare vad gäller enkelfnuttar, dubbelfnuttar och brädgårdar. Skickar med aktuellt kodstycke så kanske det är lättare att se helheten :)

<% 
If request.form("filled_nyheter_uppdaterad") = "news_update" Then

	
	'If strLoggedOn = "yes" or login_RoleID =< SITE_login_ROLEID Then

		dim str_news_ID, SQL_news
		
		Set Conn = Server.CreateObject("ADODB.Connection")
		Conn.Open "Provider=Microsoft.JET.OLEDB.4.0;Data Source=DATABASNAMN;"

		Set objRS = Server.CreateObject("ADODB.RecordSet")
		objRS.open "t_news", Conn, 3, 3 
		
		str_news_SECTION = request.form("form_section")
	 	str_news_SUBJECT = request.form("form_subject")
	 	str_news_DATE = request.form("form_date")
	 	str_news_PUBLIC = request.form("form_public")
	 	str_news_CONTENT = request.form("form_content")
		str_news_ID = request.form("form_newsid")
		
		If str_news_SUBJECT = "" or str_news_DATE = "" or str_news_CONTENT = "" Then

			If str_news_SUBJECT = "" then
				stdNewsSubjectMissing = 1
				
				Else
					stdNewsSubjectMissing = 0
			End if
		End if

		If stdNewsSubjectMissing = 0 then
			
			SQL_news = "UPDATE t_news SET
 SECTION = '"&str_news_SECTION&"', SUBJECT
 = '"&str_news_SUBJECT&"', NEWSDATE
 = '#&str_news_DATE&#', PUBLIC = "&str_news_PUBLIC&",
 CONTENT = '"&str_news_CONTENT&"' WHERE ID
 = "&str_news_ID&"" 
			response.write "SQL-sats: " &SQL_news& ""
			Conn.Execute(SQL_news)
			'Conn.Execute  SQL_news,,128
			'Set objRS = Conn.execute(SQL_news)
			End If

	
		objRS.Close
		Conn.Close
		Set objRS = Nothing
		Set Conn = Nothing
		
	'	End if
	
End if
%>

Sedan har jag ytterligare en fråga. Vilket uttryck ska jag använda mig av när jag exekverar SQL-frågan. Jag har tre olika alternativ i min kod, vara två är remmade. Är det någon som inte fungerar överhuvudtaget eller är det någon som är mindre bra?

Medlem sedan dec. 20003 563 inlägg
#9

LeonL skrev:

cyprys skrev:

text/datumtyp: Enkelfnuttar.

Om fältet ifråga är ett datumfält i en Access-databas ska inparametern omges, som @nders skrev, med brädgårdar (#).

Mjo, till skillnad från resten av världen :OO ;) men visst stämmer det.

Medlem sedan apr. 20041 597 inlägg
#10

Efter att nästan har slitit av mig allt hår jag har på skallen har jag nu lyckats komma till rätta med mitt UPDATE-problem. :e

Förutom de saker jag fått hjälp med tidigare ang. # vid datum och enkel- och dubbelfnuttar visade det sig att PUBLIC och SECTION som jag använder på varsitt ställe i min tabell och SQL-sats förefaller vara reserverade ord i SQL. Har jag rätt eller fel? Hur som helst fungerar det nu när jag ändrat dessa två namn till PUBLICS och SECTIONS :birp

Medlem sedan juni 200032 967 inlägg
#11

lillebror skrev:

Har jag rätt eller fel?

Du har rätt. :)

http://aspfaq.com/show.asp?id=2080

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