Toon posts:

[ASP] Syntax error in INSERT INTO statement

Pagina: 1
Acties:
  • 31 views sinds 30-01-2008

Verwijderd

Topicstarter
Goedenacht,

Ik kom er even niet meer uit... Wat gaat er mis?

Foutmelding:

Microsoft JET Database Engine error '80040e14'

Syntax error in INSERT INTO statement.

cp/actie.asp, line 87

Line 87 is de op één na onderste regel.

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Set rsaddprod = Server.CreateObject("ADODB.Recordset")
strSql = "INSERT INTO PRODUCTEN (" &_
"NUMMER," &_
"MERK," &_
"CATEGORIE," &_
"NAAM," &_
"OMSCHRIJVING," &_
"MAAT," &_
"KLEUR) VALUES (" &_
"" & fixQuotes( nummer ) & ", " &_
"" & fixQuotes( merk ) & ", " &_
"" & fixQuotes( categorie ) & ", " &_
"'" & fixQuotes( naam ) & "', " &_
"'" & fixQuotes( omschrijving ) & "', " &_
"'" & fixQuotes( maat ) & "', " &_
"'" & fixQuotes( kleur ) & "')"
set rsaddprod = My_conn.Execute (strSql)
Set rsaddprod = nothing

[ Voor 59% gewijzigd door Verwijderd op 02-02-2005 00:17 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Druk de string in strSql maar eens af naar de browser in plaats van de query uit te voeren. Waarschijnlijk zie je dan wel waar het misgaat. Debuggen is ook een kunst. :)
Je kan moeilijk verwachten dat je hier je code dumpt en wij het zonder ook maar een klein beetje extra info voor je oplossen. Eigen inzet doet geen pijn. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Suaver
  • Registratie: Januari 2004
  • Laatst online: 08-05 09:11

Suaver

jokecoat

Vervang "set rsaddprod = My_conn.Execute (strSql)" door "rsaddprod.Execute strSql"
Dat moet zeker werken, maar als je nu een foutmelding krijgt ligt het zeker aan het SQL query.

edit:
Ik heb nog ff je INSERT veranderd naar hoe ik het altijd schrijf, zelf vind ik dit overzichtelijker, maar dat moet je zelf maar even kijken:

strSql = "INSERT INTO PRODUCTEN(NUMMER, MERK, CATEGORIE, NAAM, OMSCHRIJVING, MAAT, KLEUR) VALUES (" & fixQuotes(nummer) & ", " & fixQuotes(merk) & ", " & fixQuotes(categorie) & ", '" & fixQuotes(naam) & "', '" & fixQuotes(omschrijving) & "', '" & fixQuotes(maat) & "', '" & fixQuotes(kleur) & "')"

Weet je trouwens zeker dat alle namen kloppen ? of dat bij "fixQuotes(nummer)" bijvoorbeeld geen quotes bent vergeten ? Probeer dat eens eerst.

[ Voor 65% gewijzigd door Suaver op 02-02-2005 00:38 ]

You, me, us, together, me, us, you, we, us, you, me... DONE.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Suaver schreef op woensdag 02 februari 2005 @ 00:31:
Vervang "set rsaddprod = My_conn.Execute (strSql)" door "rsaddprod.Execute strSql"
Dat moet zeker werken, maar als je nu een foutmelding krijgt ligt het zeker aan het SQL query.
Haakjes boeien niet en die aanpassing zou ook niet consistent zijn met zijn foutmelding. Volgens de melding klopt de query niet, de ASP syntax is in orde.
edit:
Ik heb nog ff je INSERT veranderd naar hoe ik het altijd schrijf, zelf vind ik dit overzichtelijker, maar dat moet je zelf maar even kijken:

strSql = "INSERT INTO PRODUCTEN(NUMMER, MERK, CATEGORIE, NAAM, OMSCHRIJVING, MAAT, KLEUR) VALUES (" & fixQuotes(nummer) & ", " & fixQuotes(merk) & ", " & fixQuotes(categorie) & ", '" & fixQuotes(naam) & "', '" & fixQuotes(omschrijving) & "', '" & fixQuotes(maat) & "', '" & fixQuotes(kleur) & "')"
En dat vind jij overzichtelijker? Zet de zooi liever verdeeld over een aantal regels, dan is de query ook leesbaar. Topicstarter doet dat prima. Verder is het niet handig om voor veldnamen hoofdletters te gebruiken, aangezien die meestal worden gebruikt voor SQL-taalelementen. Het is erg vervelend om die door elkaar te lezen als je het niet op een standaard manier doet.
Weet je trouwens zeker dat alle namen kloppen ?
Als dat niet zo was, dan kreeg hij waarschijnlijk wel een melding dat er een onbekend veld is opgenomen in zijn query.
of dat bij "fixQuotes(nummer)" bijvoorbeeld geen quotes bent vergeten ? Probeer dat eens eerst.
Het lijkt me sterk dat er quotes om een nummer (integer) heen moeten. Volgens mij zijn de velden zonder quotes integervelden. zo niet, dan heb je inderdaad gelijk. :P

[ Voor 9% gewijzigd door NMe op 02-02-2005 01:32 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Eerste opmerking: gebruik parametrized queries!

Wat voor veldtypes is elk veld en horen daar wel (of geen) quotes omheen? Zoals eerder al gepost: druk je querystring eens af en kijk wat je probeert uit te voeren. Iets meer info over de opbouw van je tabel zou geen overbodige luxe zijn.

[ Voor 13% gewijzigd door OZ-Gump op 02-02-2005 09:36 ]

My personal website


  • wboevink
  • Registratie: September 2004
  • Laatst online: 20-04 18:20
-NMe- schreef op woensdag 02 februari 2005 @ 01:30:
[...]
Haakjes boeien niet en die aanpassing zou ook niet consistent zijn met zijn foutmelding. Volgens de melding klopt de query niet, de ASP syntax is in orde.
[...]
Vervang "set rsaddprod = My_conn.Execute (strSql)" door "rsaddprod.Execute strSql"

Het ging ook niet om de haakjes maar meer om de 'set rsaddprod = ' een INSERT INTO zal waarschijnlijk geen recordset returnen. Dan kan de bovenste regel ook weg 'Set rsaddprod = Server.CreateObject("ADODB.Recordset")'

Kun je eens een response.write strSql boven de execute zetten en deze info hier posten?

[ Voor 23% gewijzigd door wboevink op 02-02-2005 09:44 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:38

gorgi_19

Kruimeltjes zijn weer op :9

Zie dit over hoe te debuggen in ASP en wat je moet doen met SQL Statements.

Dan kom je er al wel achter dat strings in een SQL Statement omgeven moeten worden door single quotes; deze mis je in jouw SQL Statement.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.