Stefan: SQL Delete Fehler

Hallo, mal wieder ein ASP Problem:

Meine Datenbank hat folgende Spalten:
UserID, Password, name und del

Ich will über folgenden Quellcode eine Zeile löschen:

<%
UserID = Request.QueryString ("UserID")

Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open cbGetConnectionString()

Dim sqlCommand
    sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID = ms_1712"

objConn.Execute sqlCommand

Response.Write "Der Datensatz wurde gelöscht"

objConn.Close
Set objConn = Nothing
%>

Nur ich bekomme immer nur folgende Fehlermeldung:
"No value given for one or more required parameters"

Ich kann aber keinen Fehler finden. Was mache ich falsch?

Vielen Dank.
Stefan.

  1. Hallo, mal wieder ein ASP Problem:

    Meine Datenbank hat folgende Spalten:
    UserID, Password, name und del

    Ich will über folgenden Quellcode eine Zeile löschen:

    <%
    UserID = Request.QueryString ("UserID")

    Dim objConn
    Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.Open cbGetConnectionString()

    Dim sqlCommand
        sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID = ms_1712"

    objConn.Execute sqlCommand

    Response.Write "Der Datensatz wurde gelöscht"

    objConn.Close
    Set objConn = Nothing
    %>

    Nur ich bekomme immer nur folgende Fehlermeldung:
    "No value given for one or more required parameters"

    Ich kann aber keinen Fehler finden. Was mache ich falsch?

    Vielen Dank.
    Stefan.

    Versuch's mal mit 'ms_1712' also in Quotes, das ist doch wahrscheinlich ein String odeR?

    1. Versuch's mal mit 'ms_1712' also in Quotes, das ist doch wahrscheinlich ein String odeR?

      Tja, so einfach wärs. Ich habs einfach nicht gesehen. Vielen Dank.

  2. Hallo, mal wieder ein ASP Problem:

    Meine Datenbank hat folgende Spalten:
    UserID, Password, name und del

    Ich habe den Quellcode nun so umgebaut:

    <%
    UserID = Request.QueryString ("UserID")

    Dim objConn
    Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.Open cbGetConnectionString()

    Dim sqlCommand
        sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID "& Request.QueryString(UserID)
        objConn.Execute sqlCommand

    Response.Write "Der Datensatz wurde gelöscht"

    objConn.Close
    Set objConn = Nothing
    %>

    Nur leider erhalte ich jetzt wieder folgenden Fehler:
    Syntax error (missing operator) in query expression 'UserID ='.

    1. sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID "& Request.QueryString(UserID)

      Hallo!

      Mal so probieren:
      sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID = '" & Request.QueryString(UserID) & "'"

      Mfg
      MarkX

      1. sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID "& Request.QueryString(UserID)

        Hallo!

        Mal so probieren:
        sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID = '" & Request.QueryString(UserID) & "'"

        Mfg
        MarkX

        Seltsam, er bringt zwar keinen Fehler, sagt auch, dass der Datensatz gelöscht wurde. Aber leider ist er immer noch da.

        Ich bin schön langsam am verzeifeln...

        :-)

        1. Hi

          Seltsam, er bringt zwar keinen Fehler, sagt auch, dass der Datensatz gelöscht wurde. Aber leider ist er immer noch da.

          Ich bin schön langsam am verzeifeln...

          :-)

          Vermutlich keine Übereinstimmung
          WHERE UserID = '" & Request.QueryString(UserID) & "'"
          Und die Rückantwort bekommst Du in jedem Fall wenn dein execute fehlerfrei verläuft.
          Teste noch mal mit einem festwert und response.write
          Request.QueryString(UserID), um zu sehen ob Request.QueryString(UserID) deinem angenommenen festwert entspricht.

          bydey

          1. Hi

            Seltsam, er bringt zwar keinen Fehler, sagt auch, dass der Datensatz gelöscht wurde. Aber leider ist er immer noch da.

            Ich bin schön langsam am verzeifeln...

            :-)

            Vermutlich keine Übereinstimmung
            WHERE UserID = '" & Request.QueryString(UserID) & "'"
            Und die Rückantwort bekommst Du in jedem Fall wenn dein execute fehlerfrei verläuft.
            Teste noch mal mit einem festwert und response.write
            Request.QueryString(UserID), um zu sehen ob Request.QueryString(UserID) deinem angenommenen festwert entspricht.

            bydey

            Die Überprüfung habe ich schon einmal durchgeführt und diese passt auch...

        2. Hi,

          Seltsam, er bringt zwar keinen Fehler, sagt auch, dass der Datensatz gelöscht wurde. Aber leider ist er immer noch da.

          Hast Du die Tabelle auch neugeladen (das ist jetzt angenommen Du guckt in die Datenbank mittels irgendeines GUIs, wie MMC oder Interdev)? Manchmal wird halt noch der alte Datensatz gezeigt.

          Gruss, Mel

          1. Hi,

            Seltsam, er bringt zwar keinen Fehler, sagt auch, dass der Datensatz gelöscht wurde. Aber leider ist er immer noch da.

            Hast Du die Tabelle auch neugeladen (das ist jetzt angenommen Du guckt in die Datenbank mittels irgendeines GUIs, wie MMC oder Interdev)? Manchmal wird halt noch der alte Datensatz gezeigt.

            Gruss, Mel

            Ja, ich aktualisiere die Tabelle jedes mal neu, außerdem, wenn ich einen Wert so angebe z.b. 'ab_1111' dann funktionierts auch.

            1. Hi nochmal

              ...

              Ja, ich aktualisiere die Tabelle jedes mal neu, außerdem, wenn ich einen Wert so angebe z.b. 'ab_1111' dann funktionierts auch.

              Bloede Frage - nimmst Du method=post oder method=get fuer Dein Formular? Wenn "post", dann brauchst Du Request.Form(""), bei "get" brauchst Du Request.Querystring("")

              Gruss, Mel

        3. Seltsam, er bringt zwar keinen Fehler, sagt auch, dass der Datensatz gelöscht wurde. Aber leider ist er immer noch da.

          Ich bin schön langsam am verzeifeln...

          :-)

          Daß er Dir sagt, daß der Datensatz gelöscht wurde heißt gar nichts laut Deinem Script.
          Haste es den SQL-String mal so ausprobiert, also ohne den Request drin, und mit einer UserID, von der Du weißt, daß es sie gibt?

          MarkX.

          1. Seltsam, er bringt zwar keinen Fehler, sagt auch, dass der Datensatz gelöscht wurde. Aber leider ist er immer noch da.

            Ich bin schön langsam am verzeifeln...

            :-)

            Daß er Dir sagt, daß der Datensatz gelöscht wurde heißt gar nichts laut Deinem Script.
            Haste es den SQL-String mal so ausprobiert, also ohne den Request drin, und mit einer UserID, von der Du weißt, daß es sie gibt?

            MarkX.

            Ja, dann funktionierts ja seltsamerweise. *verzweiflung*

            1. Hallo,

              du kannst auf keinen fall den request.querystring einfach so in das sql einbauen...

              wie wäre es das ganze vorher zu testen...

              user = trim(request.querystring("userid"))

              das trim immer anwenden, damit überflüssige leerzeichen am anfang und ende weggeballert werden.
              wenn das ganze sonst sofort eingebaut wird erhälst du einen fehler...

              dann das ganze nur ausführen wenn user <> ""

              mal ne andere frage, wieso ist userid überhaupt ein string?

              was hältst du von einem primärschlüsselfeld in form eines automatisch inkrementierten integerwertes?

              Odium

              1. Hallo,

                du kannst auf keinen fall den request.querystring einfach so in das sql einbauen...

                Hi!

                Sicher, daß das nicht geht? Wieso?

                sqlstring = "SELECT * FROM bla WHERE bla1 = '" & Request.QueryString(bla2) & "'"

                Warum sollte das nicht gehen? Ob ich es vorher in eine Variable schreibe oder gleich so einfüge dürfte doch keinen Unterschied machen.

                MfG
                MarkX.

                1. Hallo,

                  ja es geht, aber es ist unsicher...

                  eine variable kannst du vorher testen z.B. steht überhaupt was drinn? steht das drin was ich erwarte? etc.

                  wenn ich ein eingabefeld mit leerzeichen fülle ist es auch nicht leer
                  du nimmst den inhalt nun gutgläubig und dein sql produziert einen fehler...

                  deshalb deine requests ob form oder querstring immer mit trim bearbeiten und dann testen...

                  und beantworte mir mal die frage, warum die userid ein string ist!

                  Odium

                  1. und beantworte mir mal die frage, warum die userid ein string ist!

                    Nee mach ich nicht. Muß Dir stefan beantworten. Ist schließlich nicht mein Quellcode. ;-)
                    Ich hätte es auch gemacht wie Du vorgeschlagen hast. Also nen Integer-Wert...

                    MfG MarkX.

        4. Moin!

          Seltsam, er bringt zwar keinen Fehler, sagt auch, dass der Datensatz gelöscht wurde. Aber leider ist er immer noch da.

          Ich bin schön langsam am verzeifeln...

          Bei SQL-Problemen mit dynamisch zusammengesetzten SQL-Statements ist es immer ratsam, den generierten SQL-String auch mal im Browser mit auszugeben - nur dann sieht man, ob die Variablen alle die Werte enthalten, die man erwartet. Wenn mit fest eincodierten Werten alles funktioniert, dann ist sehr wahrscheinlich, dass deine übergebenen Variablen falsche Werte enthalten.

          Also:
          sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID = '" & Request.QueryString(UserID) & "'"
          Response.Write "SQL: " & sqlCommand

          Damit siehst du dann, was die Datenbank machen soll (und das macht sie in der Regel prima). Wenn das dann nicht das ist, was du denkst, dass sie machen soll: Ändere die Zusammensetzung des SQL-Kommandos. :)

          - Sven Rautenberg

      2. Hi
        oder falls user id eine zahl ist??

        sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID = " & Request.QueryString(UserID) & ";"

        Mal so probieren:
        sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID = '" & Request.QueryString(UserID) & "'"

        bydey

        1. Hi
          oder falls user id eine zahl ist??

          sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID = " & Request.QueryString(UserID) & ";"

          Mal so probieren:
          sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID = '" & Request.QueryString(UserID) & "'"

          bydey

          Sorry, hatte ich vergessen zu sagen: Keine Zahl, sondern ein String (z.B. ein Wert davon lautet ab_1234)

    2. Auch so funktionierts nicht:

      sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID "& Request.QueryString("UserID")

      Fehler:
      Syntax error (missing operator) in query expression 'UserID ='

  3. Hallo, Ich habs. *juhuuuuu*
    Ich fing schon an mir zu selbst zu zweifeln.

    Falls es jemanden interessiert:
    sqlCommand = "DELETE FROM ASPLoginUserTbl WHERE UserID ='" &  Request.QueryString ("UserID") & "'"

    Vielen Dank an alle Beteiligten.

    mfg Stefan