Robert: Mehrere Felder mit SQL updaten

Hallo!

Der Morgen ist noch halbwegs frisch und ich hab mal wieder ein Problem mit ASP ;-)

Und zwar möchte ich mehrere Felder in meiner Datenbank über SQL aktualisieren. Derzeit hab ich es probiert wie folgt:

if request.form("Pfad") <> "" then
  MyConn.Execute "UPDATE Voting SET Download='" & Request.Form("Download") & "' WHERE Download='" & Request.Form("Download") & "';"
  MyConn.Execute "UPDATE Voting SET Pfad='" & Request.Form("Pfad") & "' WHERE Download='" & Request.Form("Download") & "';"
  MyConn.Execute "UPDATE Voting SET Beschreibung='" & Request.Form("Beschreibung") & "' WHERE Download='" & Request.Form("Download") & "';"
end if

Aber das verursacht:

Error Type:
ADODB.Field (0x80020009)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

Hat einer ne Ahnung, wie ich des am besten löse?

Robert

  1. moin robert.
    du solltest doch mit php weiter machen. es muss schon ganz frustieren, wenn man sich die lösung in php immer vorstellen könnte und es dann asp machen muss.

    WHERE Download='" & Request.Form("Download") &

    ich vermute es gibt keine übereinstimmung
    ergo auch kein recordset.
    macht das sinn?
    bydey

    1. Hi dey!

      du solltest doch mit php weiter machen. es muss schon ganz frustieren, wenn man sich die lösung in php immer vorstellen könnte und es dann asp machen muss.

      *g* ich kann net in PHP weitermachen, sonst hätte ich niemals ASP angefasst *sich_schüttel* die Bedingung dieser Aufgabe ist, dass wir den Müll in ASP lösen...

      WHERE Download='" & Request.Form("Download") &

      Wie meinst du des?

      ich vermute es gibt keine übereinstimmung
      ergo auch kein recordset.
      macht das sinn?

      Höh? Ich komm da jetzt net ganz mit ;-) Vielleicht liegts daran, dass ich heute morgen noch net richtig wach bin....

      Robert

      1. Hi dey!

        du solltest doch mit php weiter machen. es muss schon ganz frustieren, wenn man sich die lösung in php immer vorstellen könnte und es dann asp machen muss.

        *g* ich kann net in PHP weitermachen, sonst hätte ich niemals ASP angefasst *sich_schüttel* die Bedingung dieser Aufgabe ist, dass wir den Müll in ASP lösen...

        Sinn oder Unsinn that's the ...

        WHERE Download='" & Request.Form("Download") &

        Wie meinst du des?

        du gibst vor einen wert in einem recordset zu ersetzen bei dem der inhalt des feldes download mit der form.feld.variable download übereinstimmt
        wenn die rückmeldung lautet "kein recordet" (=EOF BOF) dann fehlt wohl die übereinstimmung.
        ersetze " & Request.Form("Download") & " doch mal durch einen fixwert.

        ich vermute es gibt keine übereinstimmung
        ergo auch kein recordset.
        macht das sinn?

        Höh? Ich komm da jetzt net ganz mit ;-) Vielleicht liegts daran, dass ich heute morgen noch net richtig wach bin....

        freitag morgen wach?! häh! da kämpfen wir doch schon den 5ten tag mit schlafentzug!
        bydey

        1. Hi Dey!

          du gibst vor einen wert in einem recordset zu ersetzen bei dem der inhalt des feldes download mit der form.feld.variable download übereinstimmt

          Yepp, stimmt doch auch. Ich will in der Spalte Download wo Download="blub" ist, blub mit dem Wert aus dem Inputfeld name="Download" value="blub" mit einem neuen Wert überschreiben...

          wenn die rückmeldung lautet "kein recordet" (=EOF BOF) dann fehlt wohl die übereinstimmung.

          seltsam...

          ersetze " & Request.Form("Download") & " doch mal durch einen fixwert.

          Fix-Wert geht, und da kann ich auch mit Variablen arbeiten, aber ich will mehrere Einträge updaten - da liegt glaub ich das Problem.

          ich vermute es gibt keine übereinstimmung
          ergo auch kein recordset.
          macht das sinn?

          hmmm ich glaube jetzt, ich weiß was du meinst. Aber erstmal muss nochn Kaffee rein ;-)

          freitag morgen wach?! häh! da kämpfen wir doch schon den 5ten tag mit schlafentzug!

          *g* ich erst seit heute...

          Robert

          1. Fix-Wert geht, und da kann ich auch mit Variablen arbeiten, aber ich will mehrere Einträge updaten - da liegt glaub ich das Problem.

            Ok.
            so zwiscjen kaffee, sahne und en bissl zucker.
            du machst hier irgendeine schleife und durchläufst die update funktion mit mehreren unterschiedlichen werten?!

            vermutlich ist einer nicht zuzuordnen oder leer (du steigst zu früh (ohne wert) ein oder zu spät (ohne wert)aus).
            denk ich mal.

            bydey

  2. Hallo,

    if trim(request.form("Pfad")) <> "" then
    sql = "UPDATE Voting SET Download='" & trim(Request.Form("Download")) & "', Pfad='" & trim(Request.Form("Pfad")) & "', Beschreibung='" & trim(Request.Form("Beschreibung")) & "' WHERE Download='" & trim(Request.Form("Download")) & "'"
    set rs = MyConn.Execute(sql)
    end if

    was haben da diese kommas zu suchen...kenn ich nicht...

    die einzelen felder werden wie beim select durch kommas getrennt...

    das trim mit anbringen, damit überflüssige leerzeichen entfernt werden(sollte man immer darauf achten...

    wenn die where klausel nicht erfüllt wird, dann gibt es keinen fehler, sondern es wird einfach nicht ausgeführt...
    natürlich sollten die felddatentypen übereinstimmen...
    auch sollten die zuzuweisenden variablen nicht Null sein...
    also am besten vorher
    dim s_downl
    s_downl = ""
    s_downl = trim(request.form("download"))

    und dann die variablen ins sql aufnehmen...
    wenn das <input name="download"... im aufrufenden form leer ist, dann ist das schlecht...

    Odium

    1. Hi Odium, ach Odium!

      meinst du diese Kommas:

      sql = "UPDATE Voting SET Download='" & trim(Request.Form

      ("Download")) & "', Pfad='" & trim(Request.Form("Pfad")) & "',
                        ^                                          ^

      damit kann man mehrere Felder zum Updaten aneinander reihen, oder updatest du immer nur 1 Feld pro Datensatz pro Durchgang?

      Tschau, Frank

      1. Hallo Frank,

        ich komm grad nicht mit... das mit den kommas hab ich ja so als antwort auf die ausgangsfrage gesetzt... ich meinte diesen semikolons(?) aus der ersten frage...
        --------------

        if request.form("Pfad") <> "" then
          MyConn.Execute "UPDATE Voting SET Download='" & Request.Form("Download") & "' WHERE Download='" & Request.Form("Download") & "';"
          MyConn.Execute "UPDATE Voting SET Pfad='" & Request.Form("Pfad") & "' WHERE Download='" & Request.Form("Download") & "';"
          MyConn.Execute "UPDATE Voting SET Beschreibung='" & Request.Form("Beschreibung") & "' WHERE Download='" & Request.Form("Download") & "';"
        end if

        -------------------

        dieses semikolons am ende kenne ich so nicht...als ich da kommas schrieb meinte ich diese semikolons...

        da ich mit datenbanken ständig zu tun habe, ist mir das mit den kommas natürlich geläufig... Frechheit  ;-)

        Odium

        Hi Odium, ach Odium!

        meinst du diese Kommas:

        sql = "UPDATE Voting SET Download='" & trim(Request.Form
        ("Download")) & "', Pfad='" & trim(Request.Form("Pfad")) & "',
                          ^                                          ^

        damit kann man mehrere Felder zum Updaten aneinander reihen, oder updatest du immer nur 1 Feld pro Datensatz pro Durchgang?

        Tschau, Frank

        1. Hi,

          achso, der Meister haben sich verformuliert ;-)

          die Semikolons sind halt als Abschluß eines SQL-Statements gedacht, so wie man Befehl(e|szeilen) in JS,PHP,C usw abschließt
          bei ADO-Zugriff werden diese quasi ignoriert, es funzt also auch ohne, aber z.b. bei Oracle kann man sogenannte SQL-Batches laden und diese hintereinander ausführen, da ist das Semikolon dringend von nöten :-)

          Tschö(nen Abend + Wochenende)

          Frank

          dieses semikolons am ende kenne ich so nicht...als ich da kommas schrieb meinte ich diese semikolons...

          da ich mit datenbanken ständig zu tun habe, ist mir das mit den kommas natürlich geläufig... Frechheit  ;-)

          Odium