Aktualisieren von Daten

  • hallo,
    habe folgendes Problem:

    > Set rs = db.execute("UPDATE kunden SET kunden.nachname =
    > Request.Form('nachname') WHERE (((kunden.Kundennummer)=
    > Request.Form('kundennummer')));")
    >
    > Zu diesem Befehl kommt dann die folgende Fehlermeldung:
    >
    > >>>>Microsoft OLE DB Provider for ODBC Drivers Fehler "80040e14'
    > >>>>[Microsoft][ODBC Microsoft Access Driver] Undefinierte
    > >>>>>>>>Funktion
    > 'Request.Form' in Ausdruck.
    > >>>>/MamaChen/Projektarbeit/datenbank/aenderung3.asp, line 37
    >
    > Warum ist das so?
    > An "Request.Form" kann es nicht liegen, weil ich das
    > schon mit "response.write" versucht habe. Außerdem habe ich auch
    > versucht eine Variable für nachname und kundennummer zuzuweisen und
    > diese Variablen statt dem "Request.Form" in den sql-Befehl einzufügen.
    > Aber dann kommt eine andere Fehlermeldung, die sagt, dass nicht genug
    > Parameter übergeben worden sind.

    wer kann mir helfen?

  • Zitat von itk5

    An "Request.Form" kann es nicht liegen

    Das sieht MS-SQL offensichtlich anders, zumindest entnehme ich das der Fehlermeldung.

    Probiere mal testweise einen String zusammenzustöpseln. Ich bin nicht besonders fit in ASP, aber so ungefähr:

    Code
    sql = "UPDATE kunden "
    sql=sql+"SET kunden.nachname="+Request.Form('nachname')+" "
    sql=sql+"WHERE kunden.Kundennummer="+Request.Form('kundennummer')
    
    
    set rs=db.execute(sql)

    Meiner Meinung nach ist nämlich Request.Form eine Funktion von ASP -- nicht von MS-SQL. Du verwendest es aber als MS-SQL Funktion.

  • Leider hat dein Lösungsvorschlag auch nicht funktioniert... jetzt wird die Seite gar nicht mehr angezeigt... irgendso ein interner Serverfehler... was auch immer das heißen mag... :confused:

    wer kann mir noch helfen?

  • komme immer noch nicht weiter... ich habe jetzt den sql befehl etwas anders geschrieben:

    fnachname = request.Form("nachname")
    fkundennnummer = request.Form("kundennummer")

    Set rs = db.execute("update kunden set nachname = fnachname where kundennummer = fkundennummer ")

    doch jetzt kommt die folgende Fehlermeldung obwohl die 'nachname' und 'kundennummer' übertragen worden sind (habs mit response.write ausprobiert)


    Microsoft OLE DB Provider for ODBC Drivers Fehler "80040e10' 

    [Microsoft][ODBC Microsoft Access Driver] 2 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben. /MamaChen/projektarbeit/datenbank/aenderung33.asp, line 39 

    hat jemand eine Ahnung was das bedeutet?



  • hm ich denke, du bist nicht ganz fit in sql bzw. der programmiersprache ;)

    was du machst, ist nichts anderes als jeweils 2 spalten miteinander zu vergleichen, anstatt dem string den eigentlich wert von fnachname & fkundennummer zu übergeben.

    Set rs = db.execute( "update kunden set nachname = " + fnachname + " where kundennummer = " + fkundennummer )


    ich möchte dich in diesem zusammenhang auch hinweisen, daß solche direkten abfragen, sql injections hervorrufen können, sprich sicherheitsrisiken in sich birgen!


    hope that helps .. lg


    PS: eventuell müßtest noch einzelne Hochkommas (') zur Parameteridentifizierung verwenden -> .. set nachname = '<value>' ... (jetzt von der reinen sql syntax betrachtet)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!