webForumDet fria alternativet

Problem med SQL UPDATE-kommandot

10 svar · 356 visningar · startad av lillebror

lillebrorMedlem sedan apr. 20041 597 inlägg
#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? :)

cyprysMedlem sedan dec. 20003 563 inlägg
#2

Enkelfnuttar ;)

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

Välkommen till wF :bire

@ndersMedlem sedan juni 200032 969 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

solbulleMedlem 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å?

lillebrorMedlem 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? :)

cyprysMedlem 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.

LeonLMedlem 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 (#).

lillebrorMedlem 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?

cyprysMedlem 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.

lillebrorMedlem 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

@ndersMedlem sedan juni 200032 969 inlägg
#11

lillebror skrev:

Har jag rätt eller fel?

Du har rätt. :)

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

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