ADODB.Recordset Fehler '800a0bcd'

von Klaus Ortholf » Samstag, 20. September 2003



Hallo NG,

ich habe folgende Fehlermeldung:

ADODB.Recordset Fehler '800a0bcd'
Entweder BOF oder EOF ist True, oder der aktuelle Datensatz wurde gelöscht.
Der angeforderte Vorgang benötigt einen aktuellen Datensatz.

Der Datenbankeintrag wird dabei ohne Murren vollzogen.

Hier der Code:
if request.form("Tabelle") <> "" and request.form("Tabellenfeld")<>"" then
tf = Request.form("Tabellenfeld")
t = Request.form("Tabelle")

Set RSSQL = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT " & tf & " FROM " & t
RSSQL.Open SQL, Conn, 3, 3
Do until RSSQL.eof
RSSQL("" & tf & "") = request.form("Tabellenfeldwert")
RSSQL.MoveNext
loop
RSSQL.update
RSSQL.close
set RSSQL = Nothing
end if%>

Wer kann helfen?

Klaus






Re: ADODB.Recordset Fehler '800a0bcd'

von Klaus Ortholf » Sonntag, 21. September 2003



Hay Olaf,

Stimmt!

Habe gerade folgendes probiert:

tfw = Request.form("Tabellefeldwert")
tf = Request.form("Tabellenfeld")
t = Request.form("Tabelle")
SQL = "UPDATE " & t & " SET " & tf & " ='" & tfw & "'"
conn.execute SQL

.. und bekomme diese Fehlermeldung:
[Microsoft][ODBC Microsoft Access Driver] Feld 'Kundendaten.Mitglied' darf
keine Zeichenfolge der Länge Null sein.

Dabei sind alle Felder('Kundendaten.Mitglied' ) mit der Zeichenkette
'Nichtmitglied' gefüllt !?

Klaus





Re: ADODB.Recordset Fehler '800a0bcd'

von Klaus Ortholf » Sonntag, 21. September 2003



Halt, Kommando zurück
funktioniert doch, ich hatte lediglich einen Tippfehler:

P.S. Es klappt mit beiden Varianten :

Variante1 ('gefährlich')
tfw = Request.form("Tabellenfeldwert")
tf = Request.form("Tabellenfeld")
t = Request.form("Tabelle")
Set RSSQL = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT " & tf & " FROM " & t
RSSQL.Open SQL, Conn, 3, 3
Do until RSSQL.eof
response.write RSSQL("" & tf & "")
RSSQL("" & tf & "") = tfw
RSSQL.update
RSSQL.MoveNext
loop
RSSQL.close
set RSSQL = Nothing

Variante 2
tfw = Request.form("Tabellenfeldwert")
tf = Request.form("Tabellenfeld")
t = Request.form("Tabelle")

SQL = "UPDATE " & t & " SET " & tf & " ='" & tfw & "'"
conn.execute SQL

Klaus






Re: ADODB.Recordset Fehler '800a0bcd'

von Olaf Lüder [MVP] » Sonntag, 21. September 2003



Hallo Klaus,




Fein.

Von mir auch noch ein PS:


Variante2 ist das auch ;-)

Mittels Update-Statement ist das ganze einfacher & effizienter, schützt
Dich aber genausowenig (bzw. noch weniger ;-) vor SQL-Injection...,
zumal Du auch noch für interesierte Hacker soviel über Deinen DB-Aufbau
verrätst; Frank und Hannes hatten Dir dazu ja schon ein paar Links
gepostet.

--
Gruß, Olaf
MS MVP ASP / ASP.NET



Re: ADODB.Recordset Fehler '800a0bcd'

von Klaus Ortholf » Sonntag, 21. September 2003



Hay Olaf,



Die Links hab ich mir auch schon angeschaut und ihr habt Recht mit dem was
die SQL-Injection betrifft.
Den Häckern verrate ich glücklicherweise nichts, da die o.a. Seite nur für
mich persönlich, passwortgeschützt sozusagen im Hintergrund zugänglich ist
(ist so eine Art Verwaltungsseite)

ciao und danke
Klaus





If you have any questions, you can contact us: admin#mofeel.net     Spam Report