Détecter les limites d’un jeu d’enregistrements DAO

Dans un objet Recordset, si vous essayez de vous déplacer au-delà de l’enregistrement de début ou de fin, une erreur d’run-time se produit. Par exemple, si vous essayez d’utiliser la méthode MoveNext lorsque vous êtes déjà au dernier enregistrement du recordset, une erreur piégeable se produit. Il est dès lors utile de connaître les limites de l'objet Recordset.

La propriété BOF indique si la position actuelle se trouve au début du jeu d’enregistrements. Si la propriété BOF a la valeur True, la position actuelle se situe avant le premier enregistrement dans le jeu d'enregistrements. La propriété BOF a également la valeur True si le jeu d'enregistrements ne contient aucun enregistrement lors de son ouverture.

De même, la propriété EOF a la valeur True si la position actuelle se trouve après le dernier enregistrement du jeu d’enregistrements ou s’il n’existe aucun enregistrement.

L’exemple de code suivant montre comment utiliser les propriétés BOF et EOF pour détecter le début et la fin d’un objet Recordset. Ce fragment de code crée un jeu d'enregistrements de type table basé sur la table Commandes à partir de la base de données active. Il se déplace dans les enregistrements, en commençant par le début du jeu d'enregistrements jusqu'à la fin, puis de la fin du jeu d'enregistrements jusqu'au début.

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 

N’ignorez pas qu’il n’existe aucun enregistrement en cours immédiatement après la première boucle. Les propriétés BOF et EOF ont les caractéristiques suivantes.

  • Si le jeu d'enregistrements ne contient aucun enregistrement lors de son ouverture, les deux propriétés BOF et EOF ont la valeur True.

  • Lorsque la propriété BOF ou EOF a la valeur True, elle conserve la valeur True jusqu'à ce que vous vous déplaciez sur un enregistrement existant, la propriété BOF ou EOF prend alors la valeur False.

  • Lorsque la propriété BOF ou EOF a la valeur False et que le seul enregistrement d'un jeu est supprimé, la propriété conserve la valeur False jusqu'à ce que vous tentiez de vous déplacer sur un autre enregistrement, les propriétés BOF et EOF prennent alors la valeur True.

  • Lorsque vous créez ou ouvrez un jeu d'enregistrements qui contient au moins un enregistrement, le premier enregistrement est l'enregistrement actif et les deux propriétés BOF et EOF ont la valeur False.

  • Si le premier enregistrement est l'enregistrement actif lorsque vous utilisez la méthode MovePrevious, la propriété BOF a la valeur True. Si vous utilisez MovePrevious alors que la propriété BOF a la valeur True, une erreur d'exécution se produit. Dans ce cas, la propriété BOF conserve la valeur True et il n'y a aucun enregistrement actif.

  • De même, si vous vous déplacez au-delà du dernier enregistrement du jeu d'enregistrements, la propriété EOF prend la valeur True. Si vous utilisez la méthode MoveNext alors que la propriété EOF a la valeur True, une erreur d'exécution se produit. Dans ce cas, la propriété EOF conserve la valeur True et il n'y a aucun enregistrement actif.

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.