|
 |
 |

Frage: Warum erhalte ich öfter den Fehler "Entweder BOF oder EOF ist True, ..." |
Diese Fehlermeldung weist Sie lediglich darauf hin, dass Sie versucht haben, auf einen nicht existenten
Datensatz zuzugreifen. Dies passiert sehr häufig, wenn Ihr SELECT-Statement keinen Datensatz zurückliefert
und Ihr Recordset daher leer ist.
Sie können diese Fehlermeldung aber ganz leicht beseitigen, indem Sie vor dem Zugriff auf den Datzensatz
dessen Existenz prüfen. ADO stellt Ihnen hierfür zwei Methoden zur Verfügung. EOF (End Of File) und BOF
(Begin Of File).
Normalerweise kommt nur EOF zum Einsatz, da Sie sich vom ersten zum letzten Datensatz bewegen und
daher EOF gegeben ist, wenn Sie nach dem letzten Datensatz mit objRS.MoveNext zum nächsten Datensatz
springen wollen. BOF wäre gegeben, wenn Sie vom ersten Datensatz mit objRS.MovePrevious zum vorherigen
Datensatz springen würden.
[checkeof.asp]
<%
Dim SQL
SQL = "SELECT <feld> FROM <tabelle> WHERE <idfeld> = " & <aspvariable>
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DSN", "UID", "PWD"
Set ListRS = Server.CreateObject("ADODB.Recordset")
ListRS.Open SQL, objConn, 3, 3
' --- Prüfen, ob mind. 1 Datensatz gefunden wurde
If Not ListRS.EOF Then
' --- Ausgabe der Werte
Response.Write ListRS.Fields("<feld>") & "<br>" & vbCrLf
' --- Das Recordset ist leer. Fehler ausgeben
Else
Response.Write "Fehler: Es wurde kein Datensatz gefunden."
End if
ListRS.Close
Set ListRS = Nothing
objConn.Close
Set objConn = Nothing
%> |
|
 |
 |
|
|