Checkboxen werden nicht in DB geschrieben..
Oli Radde
- asp.net
Hallo zusammen,
ich hab folgendes Problem:
ich möchte die ausgewählten Checkboxen eines Formulares in eine DB schreiben.
Folgender Code:
html Formular:
<input type=checkbox name="BID" value="1">Elektrik<br>
<input type=checkbox name="BID" value="2">Baustoffe<br>
<input type=checkbox name="BID" value="3">Metallbau<br>
asp Seite:
anzahl = Request.form("BID").Count
For intI = 1 to Anzahl
arrCheck(Inti) = Request.Form("BID").Item(Inti)
wert = clng(arrcheck(inti))
Response.Write wert
Response.Write (TypeName(wert))
response.Write sqlnew
rs.Open sqlnew, conn
sqlnew="INSERT INTO wer_in_test (BranchenID,FirmenID) VALUES ( ' "& wert &" ', '2' )"
Als Ausgabe erhalte ich die SQL Anweisung,
INSERT INTO wer_in_test (BranchenID,FirmenID) Values ('','2')
Da steht jetzt aber kein Wert drin. Warum nicht?
Und es kommt die Fehlermeldung das die Datentypen im Kriterienausdruck unverträglich sind.
Das Datenfeld in der DB ist als long integer definiert. Und ich hab den Array doch in Long konvertiert.
Ich werd noch wahnsinnig...
Danke im Vorraus...
Hallo Oli!
Du brauchst den Datentyp nicht im Array umzuwandeln.
Du musst das dementsprechend im SQL String übergeben.
also so:
Falsch:
INSERT INTO wer_in_test (BranchenID,FirmenID) Values ('','2')
Richtig:
INSERT INTO wer_in_test (BranchenID,FirmenID) Values ('',2)
Integer werden nicht in Hochkomas übergeben.
Viele Grüsse
Hups!
Nicht aufgepasst...
So ist es richtig:
sqlnew="INSERT INTO wer_in_test (BranchenID,FirmenID) VALUES ("& wert &",2)"
also trotzdem ohne Hochkommas oder kommata oder wie auch immer....
Viele Grüsse
Hups!
Nicht aufgepasst...
So ist es richtig:
sqlnew="INSERT INTO wer_in_test (BranchenID,FirmenID) VALUES ("& wert &",2)"
also trotzdem ohne Hochkommas oder kommata oder wie auch immer....
Viele Grüsse
^Hallo Stampferl,
erstmal Danke für deine Tipp, aber leider hat es nicht geklappt
JEtzt zeigt er mir als Ausgabe folgendes an:
Insert Into wer_in_test (BranchenID,FirmenID) Values ( ,2)
Ich habe wert durch 3 ersetz,das funktioniert tadelos.
Die Variabnle wert wird irgendwie nicht richtig übergeben. Er schreibt nichts in die Variable rein.
Deswegen kommt dann als Fehlermeldung:
Fehler in der INSERT Anweisung
Hast du noch eine IDee???
Danke
OLI
Hallo Oli!
So, wie ich das sehe, möchtest du alle angeklickten Checkboxen mit übertragen.
Es gib dann ja den Wert 1 und/oder 2 und/oder 3.
Wenn du auf Request.form("Bid") abfragst, müsstest du, wenn 1 und 2 gecheckt worden ist, dieses erhalten: 1,2
Das ist aber kein Integer sondern eigentlich ein Array.
Wie soll das in die DB geschrieben werden?
Ich konnte das aus deiner Funktion nicht richtig entnehmen.
Erklär mal...
Was ist arrCheck()
Was erhälts du, bei Response.Write Wert?
Viele Grüsse
Hallo Oli!
So, wie ich das sehe, möchtest du alle angeklickten Checkboxen mit übertragen.
Es gib dann ja den Wert 1 und/oder 2 und/oder 3.
Wenn du auf Request.form("Bid") abfragst, müsstest du, wenn 1 und 2 gecheckt worden ist, dieses erhalten: 1,2
Das ist aber kein Integer sondern eigentlich ein Array.
Wie soll das in die DB geschrieben werden?
Ich konnte das aus deiner Funktion nicht richtig entnehmen.
Erklär mal...
Was ist arrCheck()
Was erhälts du, bei Response.Write Wert?
Viele Grüsse
Hallo Stampferl,
ich hab mir das so gedacht:
er zählt zuerst die anzahl der angeklickten felder.
anzahl = Request.form("BID").Count
Dann geht er die angeklickten Felder durch liest den Wert in den Array ein.
arrCheck(Inti) = Request.Form("BID").Item(Inti)
Liegt hier der Fehler? Bekommt er hier einen falschen Wert in den Array?
Jetzt soll er mir den aktuellen Wert auspucken.
wert = arrcheck(inti)
Response.Write wert
Das funktioniert auch. er gibt als Ausgabe:
Response.Write wert 'IE Ausgabe = 4
Response.Write (TypeName(wert)) 'IE Ausgabe = String
response.Write sqlnew 'IE Ausgabe = INSERT INTO wer_in_test (BranchenID,FirmenID) VALUES (,2) <-- vor dem Komma müßte jetzt die 4 stehen...
er schreibt mir das einfach nicht in die SQL Anweisung rein.
Hast Du ne LÖsung? Falls ich es überhaupt ein igermaßen verständlich ausgedrückt habe...*g*
Danke OLI
Hallo Oli!
Verstehe...
Jede Checkbox soll als einzelner Datensatz geschrieben werden.
Probier das mal:
Set Conn = Server.CreateObject("Adodb.Connection")
Conn.Open DSN_String
for i = 1 to Request.form("Bid").count
wert = Request.Form("Bid").Item(i)
Conn.Execute("INSERT INTO wer_in_test (BranchenID,FirmenID) VALUES (" & wert & ",2)")
next
Conn.Close
Set Conn = Nothing
Bei mir klappt´s so
Viele Grüsse
Hallo Oli!
Verstehe...
Jede Checkbox soll als einzelner Datensatz geschrieben werden.
Probier das mal:
Set Conn = Server.CreateObject("Adodb.Connection")
Conn.Open DSN_String
for i = 1 to Request.form("Bid").count
wert = Request.Form("Bid").Item(i)
Conn.Execute("INSERT INTO wer_in_test (BranchenID,FirmenID) VALUES (" & wert & ",2)")
next
Conn.Close
Set Conn = Nothing
Bei mir klappt´s so
Viele Grüsse
Hallo Stampferl,
Du hast meinen vollen Respekt, Neid, Anerkennung und alles. *gg*
Das Problem ist gelöst. Du hast meine Nerven und Stresshormone wieder auf ein normales LEvel gebracht. *g*
er schreibt mir jetzt die Werte in die Datenbank rein.
Thanxs
OLI
Gerngeschehen! :-)
Hallo Stampferl,
Du hast meinen vollen Respekt, Neid, Anerkennung und alles. *gg*
Das Problem ist gelöst. Du hast meine Nerven und Stresshormone wieder auf ein normales LEvel gebracht. *g*
er schreibt mir jetzt die Werte in die Datenbank rein.
Thanxs
OLI