Nils Gerken: Mit SQL Befehl DELETE aus Datenbank Werte löschen

Hi Helfer,

ich habe mal wieder ein Problem mit SQL und ASP:

Ich übergebe per Post eine Zahl(ID). Der Datensatz der diese ID hat soll nun gelöscht werden, das sieht so aus:

select case useraction
case "delete"
id = Request.Form("id")
dsn="DBQ=" & Server.Mappath("../database/taggeckos.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
sql3 = "Select * from news where id='"&id&"'"
conn.open dsn
rs.open sql3,conn
sql4="delete from news where id='"&id&"'"
conn.execute(sql4)
    rs.close
    set rs=nothing
end select
%>

Allerdings gibt mir das Programm immer die Fehlermeldung: Datentypen nicht miteinander vereinbar und zwar in der Zeile:

rs.open sql3,conn

Was mache ich falsch. Die Literarur gibt da keine guten Tipps.

Ciao Nils

PS: Ich hoffe ihr könnt mir helfen.

  1. Moin Nils ,

    sql4="delete from news where id='"&id&"'"
    [...] Datentypen nicht miteinander vereinbar [...]

    Du hast in deinem SQL Statement bei der WHERE Klausel die ID als Text/String
    drinne stehn. Da das der einzige Datentyp in deinem SQL Statement ist den du
    für eine Bedingung heranziehst, muss der Fehler hier liegen. Da ich die
    Typendefinition deiner Datenbank nicht kenne muss ich in meine Glaskugel
    schauen, und sagen das es daran liegen könnte (und es wahrscheins auch tut)
    dass du für die Spalte ID als Typ in der DB vereinbart hast.

    also dein SQL (sollte wenn ich meiner Glaskugel glauben kann) so funktionieren :

    sql4="delete from news where id="& id

    Probiers mal bitte,

    Glasige Grüße
    Holger

    1. Hi Holger,

      danke erstmal für die Hilfe.

      Ich habe es ausprobiert, aber jetzt löscht der alle Datensätze in der Tabelle.

      Mal was zur Datenbank:

      Drei Spalten:

      id = AutoWert (1,2,3 usw.) hier liegt auch der Schlüssel
      datum = text
      news = memo

      Jetzt werden von einem ASP Script Datensätze hinzugefügt.

      Mit dem ASP Script, das ich jetzt schreibe soll ein bestimmter Datensatz gelöscht werden, der Datensatz soll an hand der ID (Autowert/Primärschlüssel) gefunden und dann gelöscht werden.

      Ich hoffe die Angaben helfen dir weiter um mir zu helfen ;-).

      Ciao Nils

      1. Hi Holger,

        gibt es keinen Befehl, bei dem ich in VBScript einen Text Wert in einen Zahlen Wert konvertieren kann?

        Bei Delfi gibt es dass, bei VBScript???

        Ciao Nils

        1. HI Nils,

          das gibts auch bei VBScript, ist aber nicht dein Problem, da du eh
          einen SQL-String zusammenbauen musst.. Die DB kann zwischen Zahl und Text
          anhand der Single-Qutes unterscheiden also z.B.:

          .... WHERE ID='01'  hier wäre die ID Spalte in der DB Text/String
          .... WHERE ID=01  und hier eben eine Zahl.

          Der Typenverwandler in VB ist übrigens : CInt(), aber wie gesagt, das dürfte
          dich hier auch nicht weiterbringen.

          kennstu <www.aspfaq.de> ? Klick dich da mal durch , da solltest du bestimmt
          viele intressante Sachen finden ...

          Gruß
          Holger

          1. Hi Holger,

            es klappt jetzt. Dein Befehl war richtig, allerdings musste ich dafür noch was anderes ändern.

            Die Seite ist echt super. Hat mir gerade schon geholfen:

            Insert into: Syntaxfehler (hatte eine Spalte Date genannt)

            Ciao Nils