Nils Gerken: Löschem mir SQL Befehl: keine Error geht aber trotzdem nicht

Hi Gemeinde,

ich finde in diesem Code keinen Fehler, aber das löschen geht nicht, obwohl der IE keine Fehlermeldung auspuckt. Zum Script und zur Datenbank. In der datenkank werden Ip Adressen gespeichert (Feld hat Eigenschaft Memo. Ip Adresse steht dann so in der DAtenbank 127.0.0.1)

Wenn man nun diese Seite öffnet und derzeit eine IP Adresse benutzt, die in der Datenbank steht, soll sie in der Datenbank geköscht werden und zwar mit diesem Befehl:

<%
Dim conn,rs,dsn,sql,sql2,ips
ips = Request.ServerVariables("REMOTE_ADDR")
dsn="DBQ=" & Server.Mappath("../database/taggeckos.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
sql = "Select * from login"
conn.open dsn
rs.open sql,conn
sql2="delete from login where ip= '&ips&' "
conn.execute(sql2)
    rs.close
    set rs=nothing

%>

Ich habe auch schon den Delete Befehl in dieser Variante ausprobiert:
sql2="delete from login where ip=" &ips

Dann kommt aber dieser Fehler:

Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in Zahl in Abfrageausdruck 'ip=127.0.0.1'.

/eigene/NewVersion/admin/test.asp, Zeile 11

Ich weiß echt nicht mehr weiter :-((

Ich hoffe ihr habt ne Lösung.

Ciao Nils

  1. Hi ich nochmal,

    wenn ich direkt die IP Adresse eingeben klappt alles:

    sql2="delete from login where ip= '127.0.0.1'"  
    

    Sezte ich jedoch wieder die Variable ein, klappt es wieder nicht.

    Was ist das???

    Ciao Nils

  2. Na Nils,

    nachdem du mich per mail über ein neues Posting informiert hast, werde ich jetzt mal sehn was ich für dich tun kann ;-).

    [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in Zahl in Abfrageausdruck 'ip=127.0.0.1'.

    Na dann schau dir diese Fehlermeldung doch mal genau an ? Steht in der Spalte ip in deiner
    db wirklich "ip=127.0.0.1" drin oder vielleicht nur "127.0.0.1" ? ich wette letzteres !

    »»  sql2="delete from login where ip= '&ips&' "

    Du musst dir dein sql "string-stückchen-weise" zusammenaddieren, variable teile deines sqls ausserhalb
    von den doublequotes, feste teile innerhalb der doublequotes.

    Also funktionieren sollte : sql="delete from login where ip='" & ips & "'"

    diese string-zusammen-addition sollte folgendes sql ausgeben :

    delete from login where ip='127.0.0.1' und das sollte es tun.

    Prinzip des SQL-Statement-zusammenaddieren verstanden ?

    Gruß
    Holger

  3. ich finde in diesem Code keinen Fehler, aber das löschen geht nicht

    sql2="delete from login where ip= '&ips&' "  
    

    Hallo Nils,
    probiere mal
      
    sql2="delete from login where ip = '" & ips & "'"

    so wie Du es gemacht hast, sucht er nämlich &ips& !

    Gruss
    Uwe Nohl