Kategorie: Datenbankzugriffe
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
%>
Copyright 2000 - 2020 by Stefan Falz Webconsulting