Oli Radde: Checkboxen werden nicht in DB geschrieben..

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...

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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

            1. 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

              1. 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

                1. 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