Avatar billede bobbedude Nybegynder
08. oktober 2001 - 10:59 Der er 5 kommentarer og
2 løsninger

SQL Insert Syntax fejl

tak ellebaek fordi du ikke varede http://www.eksperten.dk/spm/118391

jeg har en syntax fejle i min sql sætning men kan ikke finde den:

Function ChkString(string)
  If string = \"\" Then string = \" \"
  ChkString = Replace(string, \"\'\", \"\'\'\")
  End Function

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"dandy/dandy.mdb\")
SQL = \"INSERT INTO navne (Navn, Adresse, By, Postnummer, Alder, Valg) VALUES (\'\" & Request.Form(\"navn\") & \"\',\'\" & Request.Form(\"adresse\")& \"\',\'\" & Request.Form(\"by\") & \"\',\" & Request.Form(\"postnummer\") & \",\" & Request.Form(\"alder\") & \",\'\" & Request.Form(\"valg\") & \"\')\"
Set RS = Conn.Execute( SQL )
RS.Close
Set RS = Nothing

response.write \"Tak for din stemme\"

Det er i linien :
SQL = \"INSERT INTO navne Det går galt
Avatar billede mortrr Praktikant
08. oktober 2001 - 11:21 #1
Der ser ikke ud til at være noget galt i linien med SQL=...
Det er nok nærmere execute det er galt med.

Du har et felt der hedder By - det er et reserveret ord i de fleste databaser.
Prøv at skrive [By] i INSERT INTO.
Du behøver heller ikke bruge SET RS= en execute når den ikke returnerer et recordset.

- Morten
Avatar billede bobbedude Nybegynder
08. oktober 2001 - 11:33 #2
Efter at have skrevet [by] får jeg fejlen:

[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 2.

Scriptet ser nu sådan ud:


Function ChkString(string)
If string = \"\" Then string = \" \"
ChkString = Replace(string, \"\'\", \"\'\'\")
End Function
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"dandy/dandy.mdb\")
SQL = \"INSERT INTO navne (Navn, Adresse, [By], Postnummer, Alder, Valg, Ip) VALUES (\'\" & Request.Form(\"navn\") & \"\',\'\" & Request.Form(\"adresse\")& \"\',\'\" & Request.Form(\"by\") & \"\',\" & Request.Form(\"postnummer\") & \",\" & Request.Form(\"alder\") & \",\'\" & Request.Form(\"valg\") & \"\',\'\" & Request.Form(\"ip\") & \"\')\"
Set RS = Conn.Execute( SQL )
RS.Close
Set RS = Nothing
Avatar billede bobbedude Nybegynder
08. oktober 2001 - 11:35 #3
Jeg har ændret By til byen og får nu fejlen :

[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.

Function ChkString(string)
If string = \"\" Then string = \" \"
ChkString = Replace(string, \"\'\", \"\'\'\")
End Function
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"dandy/dandy.mdb\")
SQL = \"INSERT INTO navne (Navn, Adresse, Byen, Postnummer, Alder, Valg, Ip) VALUES (\'\" & Request.Form(\"navn\") & \"\',\'\" & Request.Form(\"adresse\")& \"\',\'\" & Request.Form(\"byen\") & \"\',\" & Request.Form(\"postnummer\") & \",\" & Request.Form(\"alder\") & \",\'\" & Request.Form(\"valg\") & \"\',\'\" & Request.Form(\"ip\") & \"\')\"
Set RS = Conn.Execute( SQL )
RS.Close
Set RS = Nothing

response.write \"Tak for din stemme\"
Avatar billede bobbedude Nybegynder
08. oktober 2001 - 11:37 #4
Her er hele scriptet:

<%
Dim mode
mode = request.QueryString(\"mode\")
%>
<html>
<head>
<title>Stem</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>

<body bgcolor=\"#FFFFFF\" text=\"#000000\">

<%
Select Case mode

Case \"test\"
response.write \"test\"

Case \"update\"

Function ChkString(string)
If string = \"\" Then string = \" \"
ChkString = Replace(string, \"\'\", \"\'\'\")
End Function
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"dandy/dandy.mdb\")
SQL = \"INSERT INTO navne (Navn, Adresse, Byen, Postnummer, Alder, Valg, Ip) VALUES (\'\" & Request.Form(\"navn\") & \"\',\'\" & Request.Form(\"adresse\")& \"\',\'\" & Request.Form(\"byen\") & \"\',\" & Request.Form(\"postnummer\") & \",\" & Request.Form(\"alder\") & \",\'\" & Request.Form(\"valg\") & \"\',\'\" & Request.Form(\"ip\") & \"\')\"
Set RS = Conn.Execute( SQL )
RS.Close
Set RS = Nothing

response.write \"Tak for din stemme\"

Case \"vote\"
%>
<form name=\"form1\" method=\"post\" action=\"stem.asp?mode=update\">
<table width=\"200\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
    <td>Navn</td>
    <td>
        <input type=\"text\" name=\"navn\">
      </td>
  </tr>
  <tr>
    <td>Adresse</td>
    <td>
        <input type=\"text\" name=\"adresse\">
      </td>
  </tr>
  <tr>
    <td>By</td>
    <td>
        <input type=\"text\" name=\"byen\">
      </td>
  </tr>
  <tr>
    <td>Postnummer</td>
    <td>
        <input type=\"text\" name=\"postnummer\">
      </td>
  </tr>
  <tr>
    <td>Alder</td>
    <td>
        <input type=\"text\" name=\"alder\">
      </td>
  </tr>
  <tr>
    <td>Valg</td>
    <td>
        <input type=\"text\" name=\"valg\">
      </td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>
        <input type=\"hidden\" name=\"ip\" value=\"<%=Request.ServerVariables(\"REMOTE_HOST\")%>\">
      </td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>
        <input type=\"submit\" name=\"Submit\" value=\"Stem\">
      </td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</form>
<%
Case Else
%>
<br>
<a href=stem.asp?mode=vote>Stem</a>
<br>
<a href=stem.asp?mode=test>Test</a>
<%
End Select
%>
</body>
</html>
Avatar billede nordclc Nybegynder
08. oktober 2001 - 11:55 #5
Prøv at udskrive SQL lige før du kalder \"Set RS = Conn.Execute( SQL )\", så vi kan se hvad der står i den:

response.write SQL

//Claus
Avatar billede eagleeye Praktikant
08. oktober 2001 - 12:10 #6
Hej
Hvis du benytter Access Database så er BY reserveret ord i SQL. Så du kan lave Kolonne navnet om til eks.vis bynavn. Du kan evt i SQL-sætningen sætte [] omkring : [by].
Avatar billede bobbedude Nybegynder
08. oktober 2001 - 12:17 #7
jeg manglede nogle \' i SQLen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester