INSERT - INTO - Statement - Problem

norbertz

Grünschnabel
...stundenlang Foren durchsucht, viele Varianten probiert, und ich hab den Fehler noch immer nicht...

Also:

Ich möchte Werte aus einem Formular in eine Datenbank hinüberschreiben. Einfachheitshalber habe ich den gesamten Code hierherkopiert (unter anderem deswegen, weil der Fehler auch außerhalb des SQL - Statements liegen kann):

set conn=Server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=D:\webdb\bestellungen.mdb"
Conn.Open
set rs = server.createobject ("ADODB.Recordset")

rs.Open "tbl_bestellung", Conn, 3, 3

SQL = "INSERT INTO tbl_bestellung (laden, produkt, marke, packung, anzahl, ersatz) VALUES ("
SQL=SQL &"'" & Request.form("Geschaeft") & "', " & "'"& Request.form("Produkt")
SQL=SQL & "', " & "'" & Request.form("marke") & "', "& "'"& Request.form("packung")
SQL=SQL & "', " & "'"& Request.Form("anzahl") & "', " & "'"& Request.form("alternative") & "');"

conn.execute SQL

conn.close
%>

Jetzt kriege ich folgende Fehlermeldung:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Feld 'tbl_bestellung.laden' darf keine Zeichenfolge der Länge Null sein.

Der Querystring (in der URL - Leiste) lautet:

http://localhost/bestellung2.asp?Geschaeft=egal&Produkt=123&...[nicht mehr relevant]

Das dürfte also eigentlich nicht NULL sein (oder heißt das numerisch null?).

Die Frage ist: Wie krieg ich das hin?

Danke!
norbertz
 
Hi

schau Dir doch nochmal die Formularnamen an. Evtl. liegt ein Tippfehler vor.
Weiterhin kannst Du Dir sql auch mal ausprinten lassen, bevor es ausgeführt wird.

Response.write sql
'conn.execute SQL
 
Danke Luzie!

Das sql - statement ist wirklich leer - so was läuft unter Anfängerprobleme (hoffentlich - weil eigentlich ist das peiiinlich :))

lg,
norbertz
 
Jaaaa!

Für alle, die als Anfänger ähnliche Probleme haben sollten... net ärgern ;-)

Jetzt mal im Ernst: Im SQL - Statement nicht Request.Form, sondern Request.Querystring. Und dann gehts auf einmal...

Jetzt noch eine Verständnisfrage: Muß ich überhaupt die Tabelle als ADODB.Recordset als Objekt instanzieren wenn ich dann eh nicht darauf zugreife?

Danke!

norbertz
 
norbertz hat gesagt.:
Jaaaa!

Für alle, die als Anfänger ähnliche Probleme haben sollten... net ärgern ;-)

Jetzt mal im Ernst: Im SQL - Statement nicht Request.Form, sondern Request.Querystring. Und dann gehts auf einmal...

Jetzt noch eine Verständnisfrage: Muß ich überhaupt die Tabelle als ADODB.Recordset als Objekt instanzieren wenn ich dann eh nicht darauf zugreife?

Danke!

norbertz

Hi

Ob Request.Form() oder Request.QueryString(), das kommt ja immer auf die Übergabemethode aus dem Formular an. In der Regel wird mit POST übergeben, was auch Sinn macht, und da ist Request.Form() richtig. Übergibst Du mit GET, geht alles über die Browserzeile, besser ist POST.

Du brauchst ein Recordset-Objekt, wenn Du ein Selectstatement hast, wenn Du das nicht hast, brauchst Du auch kein RS.
 
Zurück