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 Enkelfnuttar ;)
NEWSDATE = '2004-05-15 15:36:29'
Välkommen till wF :bire
@ndersMedlem sedan juni 200032 969 inlägg 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 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å?
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 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
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 (#).
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
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.
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
lillebror skrev:
Har jag rätt eller fel?
Du har rätt. :)
http://aspfaq.com/show.asp?id=2080