Frank aus Ulm: Passwortabfrage

Beitrag lesen

Hi, hallo

ich würde nicht unbedingt das Recordset (welches sich mit 'rs' besser abkürzen lässt als mit 'db') als 'db' verwenden, wenn du schon Application("db") verwendest, das könnte zu Verwirrungen führen. Aber das ist deine Sache mit dem Programmierstil.

wenn "user" ein Textfeld ist, sollte das SQL besser lauten:

SELECT User, Pass FROM tblPass WHERE user='" & Request("user") & "'"

ein SELECT * FROM bringt nichts, wenn du nur das Feld 'Pass' brauchst, außer weniger Performance, weil mehr Daten zu schaufeln sind..

nach dem Fehler zu urteilen ist Request("user") NULL und dein SQL sieht so aus

"SELECT * FROM tblPass WHERE user="

es könnte auch sein, dass deine Tabelle kein Feld namens user enthält

du solltest statt Request("user") immer die Request-Collection mit angeben, es sei denn bestimmte Einrichtungen verhindern dies

der Übersicht halber, sollten SQL-Statements immer erst in einem String zusammengebaut werden, bevor sie verwendet werden. Aber das ist deine Sache mit dem Programmierstil.

Für solch eine Abfrage empfiehlt sich auch die Verwendung einer Stored Procedure bzw. parameterisierten Abfrage, damit gehst du auch gekonnt dem Thema SQL-Injection aus dem Weg.
Bzw. die Zuweisung set rs = Application("db").execute(sql_statement)
das erzeugt das schnellste Datensatzobjekt, dass man bekommen kann, forwardOnly und ReadOnly
wenn du allerdings beim Überprüfen in der selben Tabelle gleichzeitig noch etwas ändern möchtest, z.b. das Last_Login oder so, kommst du mit sql,db-connection,3,3
3 = adOpenStatic bzw. adLockOptimistic  besser

dein Fehler ist nicht besonders kompliziert, du wirst ihn sicherlich schnell herausfinden und dir dann sprichwörtlich in den Hintern beissen

HTH
Tschau, tschüß,
Frank