Reputation: 15
I'm trying to search for a string in an Access database via SQL.
It works fine with method 1 but method 2 is giving me a headache.
The upcoming error is
ADODB.Recordset Fehler "800a0bcd' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
I'm actually trying to avoid this error by If KassenzeichenDB.EOF Then
. But the error occurs in the line VornameString = Vorname.getString
.
I just don't know, what the error means. The data type in the table column is the same for Kassenzeichen
and Vorname
; both are almost identical.
'method 1
Set KassenzeichenDB = Conn.Execute("SELECT Kassenzeichen FROM Kassenzeichen WHERE (Kassenzeichen='" & Eingabe & "') ")
'method 2
Set KassenzeichenDB = Conn.Execute("SELECT Kassenzeichen FROM Kassenzeichen WHERE (Vorname='" & Eingabe & "') ")
If KassenzeichenDB.EOF Then
response.write "Empty"
Else
Do While Not KassenzeichenDB.EOF
KassenzeichenString = KassenzeichenDB.Fields(0)
Set Vorname = Conn.Execute("SELECT Vorname FROM Kassenzeichen WHERE Kassenzeichen LIKE '" & KassenzeichenString & "'")
VornameString = Vorname.getString
Set Nachname = Conn.Execute("SELECT Nachname FROM Kassenzeichen WHERE Kassenzeichen LIKE '" & KassenzeichenString & "'")
NachnameString = Nachname.getString
response.write KassenzeichenString & " | " & NachnameString & ", " & VornameString & "</b></br>"
KassenzeichenDB.MoveNext
Loop
End If
Upvotes: 1
Views: 416
Reputation: 6525
You've checked KassenzeichenDB.EOF
which looks fine, but the error occurs as a result of VornameString = Vorname.getString
. That might imply that Vorname .EOF
is true, so you might want to check that.
A couple of other recommendations for your code: try selecting all the columns you need. For example...
KassenzeichenString = KassenzeichenDB.Fields(0)
Set rs = Conn.Execute("SELECT Vorname, Nachname FROM Kassenzeichen WHERE Kassenzeichen LIKE '"&KassenzeichenString&"'")
If rs.EOF Then
response.write "Vorname/Nachname Empty"
Else
VornameString = rs("Vorname")
NachnameString = rs("Nachname")
response.write KassenzeichenString & " | " & NachnameString & ", " & VornameString & "</b></br>"
End If
KassenzeichenDB.MoveNext
I must also make you aware that your code is vulnerable to SQL injection attacks, so you should read up on that if your variables Eingabe
or KassenzeichenString
come from user input or other untrusted sources. I recommend you learn how to construct parameterized queries using ADO to avoid this issue.
Upvotes: 1