Stefan: Formulardaten in Datenbank

Hallo,
ich bin ein relativer Neuling (auf jeden Fall in diesem Forum), was ASP angeht. Ich möchte Formulardaten in eine Datenbank einfügen.
Folgendes Script bereitet mir Probleme. Vielleicht hat jemand einen
Tip. Über Hilfe würde ich mich freuen. Grüße Stefan
Die Fehlermeldung die kommt, lautet:
Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e10'

[Microsoft][ODBC Microsoft Access Driver] 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.

/Artikeleingabe.asp, Zeile 64

Hier das Script dazu:

<html>
<head>

<title></title>
<meta name="author" content="Bendi">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
<!-- #include file="adovbs.inc" -->

</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<form method="POST" action="Artikeleingabe.asp">
<table border="0">
<tr>
    <td>Name</td>
    <td><input type="text" name="Name"></td>
</tr>
<tr>
    <td>Anbieter</td>
    <td><input type="text" name="Anbieter"></td>
</tr>
<tr>
<td><input type="button" value="los" onclick="check();"></td>
</tr>
</table>
</form>
<script language="JavaScript">

function check() {
        ok = true;
        meldung = "Folgende Angaben stimmen noch nicht:\n\n";
        if (document.forms[0].Name.value == "") {
                ok = false;

meldung = meldung + "Das Name-Feld wurde nicht ausgefüllt.\n";
        }

meldung = meldung + "\nBitte korrigieren Sie die Angaben!"
        if (ok) {
                alert("Formular ist in Ordnung und wird abgeschickt!");
                document.forms[0].submit();
        } else {
                alert(meldung);
        }
}
</script>

<%
strName=Request.Form("Name")
 strAnbieter=Request.Form("Anbieter")
if not Request.Form.Count=0 then
ok = true
if ok then
' ADO Connection-Objekt erzeugen und öffnen
Set Conn = Server.CreateObject("ADODB.Connection")
strDSN = "driver={Microsoft Access-Treiber (*.mdb)};" & _
          "dbq=" & Server.MapPath("db1.mdb")
        Conn.Open strDSN

strSQL = "INSERT INTO angebote (Name, Anbieter) VALUES (" & strName & ", " & strAnbieter & ")"
Conn.execute(strSQL)
end if
end if
Conn.close
Set Conn = Nothing
%>

</body>
</html>

  1. Hallo,

    strDSN = "driver={Microsoft Access-Treiber (*.mdb)};"

    Also für meinen Geschmack sollte der String für Deine DSN-lose Verbindung besser so aufgebaut werden:

    strDSN = "driver={Microsoft Access Driver (*.mdb)};"

    Aber ich denke nicht, daß das der eigentliche Fehler ist und wenn doch, wirst Du vermutlich in den nächsten reinlaufen. Du möchtest Deine Tabelle mit Strings füllen. Die normale SQL Anweisung würde lauten:

    INSERT INTO angebote ( Name, Anbieter ) VALUES ("Heinz", " Oskar");

    Dabei müssen die "Gänsefüsschen" zwingend mit übergeben werden. Daher sollte Deine SQl Anweisung so aussehen:

    strSQL = "INSERT INTO angebote (Name, Anbieter) VALUES ('" & strName & "','" & strAnbieter & "')"

    Und noch etwas:
    Name ist in vielen Programmiersprachen, Scriptsprachen und ähnlichem ein reserviertes Wort. Daher würde ich grundsätzlich empfehlen auf solche Feldnamen zu verzichten.

    Gruß
    Markus

    1. Jetzt hab ich doch glatt noch etwas vergessen:

      Genauso zwingend benötigt die SQL-Anweisung ihr Semikolon am Ende.

      strSQL = "INSERT INTO angebote (Name, Anbieter) VALUES ('" & strName & "','" & strAnbieter & "');"

      Gruß
      Markus

    2. hallo Markus,
      tausend Dank, das wars.
      Du hast mir sehr geholfen.
      Stefan