Sabine: Datensätze filtern per Checkbox, die nicht in DB ist?

Hi,

ich weiß, dass die Frage hier schon tausendmal gestellt wurde, aber ich habe nichts passendes im Archiv oder sonst wo gefunden.

Und zwar habe ich in einer Datenbank, auf die ich über ASP zugreife eine Tabelle, von der ich manche Datensätze ausdrucken möchte. Alles per Webinterface.

Nun habe ich eine Seite mit HTML / ASP programmiert, die alle Datensätze (sie wurden teilweise vorher schon gefiltert) ausgibt und vor jeden Datensatz eine Checkbox setzt.

Nun kann man die CBs anklicken und auf "Drucken" klicken, so das alles angeklickte ausgedruckt wirde. Zumindest sollte es so sein.

Mein Problem besteht nun darin, dass ich nicht weiß, wie ich mittels SQL diese Datensätze, bei denen die CB angeklickt ist, rauszufiltern, ohne ein Extra-Feld in die DB aufzunehmen.

Bin auch für Alternativen offen, habe echt ein riesen Brett vorm Kopf.

Vielen Dank schonmal für Eure Hilfe.

:-)

  1. Nun habe ich eine Seite mit HTML / ASP programmiert, die alle Datensätze (sie wurden teilweise vorher schon gefiltert) ausgibt und vor jeden Datensatz eine Checkbox setzt.

    Nun kann man die CBs anklicken und auf "Drucken" klicken, so das alles angeklickte ausgedruckt wirde. Zumindest sollte es so sein.

    Mein Problem besteht nun darin, dass ich nicht weiß, wie ich mittels SQL diese Datensätze, bei denen die CB angeklickt ist, rauszufiltern, ohne ein Extra-Feld in die DB aufzunehmen.

    Wieso gibst Du den CB's nicht als Wert die Unique ID mit - dann kannst Du doch wunderbar durch den Request laufen und Dir Dein SELECT zusammenbasteln...

    1. Vielen Dank,
      aber ich habe immernoch ein Brett vorm Kopf´. Weiß zwar, was Ihr beide meint und frage mich auch warum ich nicht darauf gekommen bin, aber ich hab irgendwie Probleme mit der Realisierung.

      <% Response.Write("<td><input type=checkbox name=PosOK value=" & objRs3.Fields("PosID").Value &"></td>") %>

      So sieht mein Code für die CBs aus - in eine Schleife eingebettet, so dass VALUE immer den Wert der ID hat.

      Soweit so gut, aber um sie einzulesen brauch ich doch wieder eine Schleife, oder nicht? Ich steh aufm Schlauch - aber wie...

      Könntet Ihr mir nochmal helfen?

      1. <% Response.Write("<td><input type=checkbox name=PosOK value=" & objRs3.Fields("PosID").Value &"></td>") %>

        So sieht mein Code für die CBs aus - in eine Schleife eingebettet, so dass VALUE immer den Wert der ID hat.

        Soweit so gut, aber um sie einzulesen brauch ich doch wieder eine Schleife, oder nicht? Ich steh aufm Schlauch - aber wie...

        Du baust in der Schleife Dein SELECT-Statement als String zusammen, und schickst das gegen den Servierer. Die Seite wird schließlich erst nach Ausführung des Server-Skripts an den Client geschickt.

        1. Du baust in der Schleife Dein SELECT-Statement als String zusammen, und schickst das gegen den Servierer. Die Seite wird schließlich erst nach Ausführung des Server-Skripts an den Client geschickt.

          Es tut mir wahnsinnig leid, aber irgendwie hilft mir das nicht weiter.

          Die Schleife soll in der Zieldatei sein, richtig?
          Aber wenn ich in die Schleife den SQL-Befehl einbette, muss ich auch objRs.open drin einbetten - sonst wird der SQL-Befehl ja nicht ausgeführt. Und das ist ja irgendwo Blödsinn, oder?!?

          1. Hallo Sabine,

            ist es Ziel, für jeden Satz ein neues Recordset (Resultset) aufzubauen, dann muß auch das objRs.open und die Verarbeitung des gefundenen Datensatzes in die Schleife.
            Doch das willst Du sicher nicht.
            Vor der Schleife baust Du deinen SQL-Befehl soweit auf, dass nur die IDs und die abschließende Klammer fehlt:

            z.B.

            sqlstr="Select * from saetze where id in("

            In der Schleife hängst Du durch Komma voneinander getrennt die von der Formularseite übergebenen ID's an. Anschließend (nach der Schleife) hängst Du das Ende des Befehls an die Zeichenkette an und
            verbratest ihn wie Du willst (meinetwegen in einem objRs.open)

            Gruß Ralf

            1. Vielen vielen Dank, das war genau das, was ich gebraucht habe.

              Aber die Anzahl der Checkboxen und somit Datensätze ist immer unterschiedlich. Kann ich in das

              sqlstr="Select * from saetze where id in("

              wieder eine Schleife reinhängen?

              Sabine

              1. Hallo Sabine,

                Du kannst es tun, doch wenn es nicht mehrere Checkboxgruppen mit unterschiedlichen Namen der Checkboxen gibt, sehe ich keinen Sinn darin.
                Für jede Checkboxgruppe mit gleichem Namen der Checkboxen wird Dir bei der Auswertungsseite ein Array (bzw. eine Collection übergeben, deren Elementanzahl Du mit der Methode Count ermitteln kannst (Du bekommst ja sowieso nur die Werte für die angeklickten Checkboxen).

                Diesen Wert nimmst Du dann als Obergrenze der Schleife.

                Gruß Ralf

          2. Du baust in der Schleife Dein SELECT-Statement als String zusammen, und schickst das gegen den Servierer. Die Seite wird schließlich erst nach Ausführung des Server-Skripts an den Client geschickt.

            Es tut mir wahnsinnig leid, aber irgendwie hilft mir das nicht weiter.

            Die Schleife soll in der Zieldatei sein, richtig?
            Aber wenn ich in die Schleife den SQL-Befehl einbette, muss ich auch objRs.open drin einbetten - sonst wird der SQL-Befehl ja nicht ausgeführt. Und das ist ja irgendwo Blödsinn, oder?!?

            This behaviour is by design. Möchtest Du auf Daten zugreifen, mußt Du eine Verbindung aufbauen. Wenn es natürlich Blödsinn ist, per SQL abzufragen, kann ich Dir auch nicht helfen. Wo ist Dein Problem?

  2. Hi,

    Mein Problem besteht nun darin, dass ich nicht weiß, wie ich mittels SQL diese Datensätze, bei denen die CB angeklickt ist, rauszufiltern, ohne ein Extra-Feld in die DB aufzunehmen.

    jeder Datensatz muss eindeutig identifizierbar sein, am besten über eine ID - dafür ist sie schließlich da. Die Checkbox enthält diesen Identifier dann als Wert, welchen Du z.B. per IN-Operator an die DB schickst. That's it.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes