Detectar los límites de un objeto Recordset de DAO

En un objeto Recordset , si intenta ir más allá del registro inicial o final, se produce un error en tiempo de ejecución. Por ejemplo, si intenta usar el método MoveNext cuando ya está en el último registro del objeto Recordset, se produce un error capturable. Por esta razón, resulta útil conocer los límites del objeto Recordset.

La propiedad BOF indica si la posición actual está al principio del objeto Recordset. Si el valor de BOF es True, significa que la posición actual se encuentra delante del primer registro del objeto Recordset. El valor de la propiedad BOF también es True si no hay ningún registro en el objeto Recordset cuando éste se abre.

De forma similar, la propiedad EOF es True si la posición actual está después del último registro del objeto Recordset o si no hay registros.

En el ejemplo de código siguiente se muestra cómo usar las propiedades BOF y EOF para detectar el principio y el final de un objeto Recordset . Este fragmento de código crea un objeto Recordset de tipo tabla basado en la tabla Orders de la base de datos actual. Se mueve a través de los registros, primero desde el principio del objeto Recordset hasta el final y, después, desde el final del objeto Recordset hasta el principio.

Dim dbsNorthwind As DAO.Database 
Dim rstOrders As DAO.Recordset 
 
   Set dbsNorthwind = CurrentDb 
   Set rstOrders = dbsNorthwind.OpenRecordset("Orders") 
 
   ' Do until ending of file. 
   Do Until rstOrders.EOF 
      ' 
      ' Manipulate the data. 
      ' 
      rstOrders.MoveNext            ' Move to the next record. 
   Loop 
 
   rstOrders.MoveLast               ' Move to the last record. 
 
   ' Do until beginning of file. 
   Do Until rstOrders.BOF 
      ' 
      ' Manipulate the data. 
      ' 
      rstOrders.MovePrevious        ' Move to the previous record. 
   Loop 

Tenga en cuenta que no hay ningún registro actual inmediatamente después del primer bucle. Las propiedades BOF y EOF tienen las siguientes características.

  • Si al abrirse el objeto Recordset, éste no contiene registros, los valores de BOF y de EOF son True.

  • Cuando BOF o EOF es True, la propiedad permanece en True hasta que se mueve a un registro existente, momento en el que el valor de BOF o EOF se convierte en False.

  • Cuando BOF o EOF es False y se elimina el único registro de un objeto Recordset , la propiedad permanece en False hasta que intenta moverse a otro registro, momento en el que BOF y EOF se convierten en True.

  • En el momento de crear o abrir un objeto Recordset que contiene al menos un registro, el primer registro es el registro actual, y las dos propiedades, BOF y EOF, tienen el valor False.

  • Si el primer registro es el registro actual cuando se utiliza el método MovePrevious, la propiedad BOF se establece en el valor True. Si utiliza MovePrevious mientras el valor de BOF es True, se producirá un error en tiempo de ejecución. Cuando ocurra esto, BOF permanecerá con el valor True y no habrá ningún registro actual.

  • Del mismo modo, el desplazamiento a una posición posterior al último registro del objeto Recordset cambia a True el valor de la propiedad EOF. Si utiliza el método MoveNext mientras el valor de EOF es True, se producirá un error en tiempo de ejecución. Cuando ocurra esto, EOF permanecerá con el valor True y no habrá ningún registro actual.

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.