webForumDet fria alternativet

Update problem

8 svar · 331 visningar · startad av dirigenten

dirigentenMedlem sedan okt. 20068 inlägg
#1

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
#2

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.

dirigentenMedlem sedan okt. 20068 inlägg
#3

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
#4
  1. 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.

voigtann1Medlem sedan juni 20019 519 inlägg
#5

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?

dirigentenMedlem sedan okt. 20068 inlägg
#6

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
#7

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
#8

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!

dirigentenMedlem sedan okt. 20068 inlägg
#9

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!

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