Försöker göra en update men måste missa något...
-------------------------------------------------------------------
Dim MinCon,rs,SQL,idnummer
idnummer= Request.form("ID")
Set MinCon = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MinCon.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\inetpub\wwwroot\xxxxxxxx\db\databasen.mdb"
MinCon.Execute "Update tabellen Set kolumn = '" & Request.Form("kolumn") & "' WHERE ID = " & idnummer
-------------------------------------------------------------------
Felmeddelandet:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID ='.
xxxxxxxx/xxxx.asp, line 17
------------------------------------------------------------------------
Rad 17 markerad
@ndersMedlem sedan juni 200032 969 inlägg Felmeddelandet tyder på att variabeln idnummer är tom, alltså skickas inget från formuläret i fältet ID.
Regel 1 om man har problem med SQL-frågor: skriv ut den färdiga SQL-frågan med response.write istället för att exekvera den, så får man se om det saknas något värde, eller om något annat ser konstigt ut.
Ok. Hur går jag tillväga för att skriva ut den.
Kollat så att jag får info från formuläret med <%=request.form("id")%> och då upptäckte jag en liten miss :r , men nu får jag iaf fram ett värde. Dock får jag felmeddelande iaf ,ser ut enl. nedan:
-------------------------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.
/xxxxx/xxx.asp, line 17
@ndersMedlem sedan juni 200032 969 inlägg
- Lägg SQL-frågan i en variabel, så är det lättare och sexigare.
strSQL = "Update tabellen Set kolumn = '" & Request.Form("kolumn") & "' WHERE ID = " & idnummer
Sedan kan du välja om du vill skriva ut:
Response.Write strSQL
Response.End
, eller exekvera:
MinCon.Execute strSQL
- - - - - - - -
Om vi ska kunna hjälpa dig med ditt nya felmeddelande måste vi se den färdiga SQL-frågan.
som @nders skriv:
vad änder om du prova skriva ut hela SQL strängen med en response.write
kollar om ID är ett tal / räknare i din databas?
Kör jag response.write StrSQL får jag:
Update rapport Set antal= '14',aktiv= 'Ja',Datum= '2006-12-08', Övrigt = 'Inget ' WHERE ID = '179
Byter jag ut response.write mot MinCon.Execute blir det felmeddelande
-----------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement
-----------------------------------------------
StrSQL = "Update rapport Set antal= '" & Request.Form("antal") & _
"', aktiv= '" & Request.Form("aktiv") & "', Datum= '" & Request.Form("Datum")& _
"', Övrigt = '" & Request.Form("ovrigt") & "' WHERE ID = '" & idnummer
@ndersMedlem sedan juni 200032 969 inlägg Du har en apostrof precis före ditt ID-värde i SQL-frågan. Inte ska den vara där?
J.N.Medlem sedan apr. 20031 660 inlägg HEJ!
Som @nders skriver, tillägger dessutom att du ska ha # runt datumvärden, och inte fnuttar. fält=#" & värde & "#
Jag är även skeptisk mot att kalla ett fält för 'Övrigt', men det kanske fungerar.
dirigenten skrev:
Byter jag ut response.write mot MinCon.Execute blir det felmeddelande
Ja, för då kör du 'strSQL', som ju är frågan, precis som du gjorde i början. Anledningen till att man gör såhär är för att se vad man håller på med!
Fixat och trixat och nu verkar det fungera.
Visade sig dessutom att ett fält som hette "01-12" störde så det får heta 0112. Tack för hjälpen!