Partager via


Recordset2.AbsolutePosition, propriété (DAO)

S’applique à : Access 2013, Office 2013

Définit ou renvoie le nombre d’enregistrements relatif de l’enregistrement actif d’un objet Recordset2.

Syntaxe

expression .AbsolutePosition

Expression Variable qui représente un objet Recordset2 .

Remarques

Vous pouvez utiliser la propriété AbsolutePosition pour placer le pointeur d'enregistrement actif sur un enregistrement spécifique en fonction de sa position ordinale dans un objet Recordset2 de type instantané ou feuille de réponse dynamique. Vous pouvez également déterminer le numéro de l'enregistrement actif en vérifiant le paramètre de la propriété AbsolutePosition.

Étant donné que la valeur de la propriété AbsolutePosition est de base zéro (autrement dit, un paramètre de 0 fait référence au premier enregistrement de l’objet Recordset2 ), vous ne pouvez pas lui affecter une valeur supérieure ou égale au nombre d’enregistrements remplis ; cela provoque une erreur pouvant être interceptable. Vous pouvez déterminer le nombre d’enregistrements remplis dans l’objet Recordset2 en vérifiant le paramètre de propriété RecordCount . Le paramètre maximal autorisé pour la propriété AbsolutePosition est la valeur de la propriété RecordCount moins 1.

S’il n’y a pas d’enregistrement actif, comme lorsqu’il n’y a pas d’enregistrements dans l’objet Recordset2 , AbsolutePosition renvoie –1. Si l'enregistrement actif est supprimé, la valeur de la propriété AbsolutePosition n'est pas définie et une erreur piégeable se produit si elle est référencée. Les nouveaux enregistrements sont ajoutés à la fin de la séquence.

Vous ne devez pas utiliser cette propriété comme numéro d’enregistrement de substitution. Les signets sont toujours le moyen recommandé de conserver et de revenir à une position donnée, et sont le seul moyen de positionner l’enregistrement actif sur tous les types d’objets Recordset2 . En particulier, la position d’un enregistrement change lorsqu’un ou plusieurs enregistrements précédents sont supprimés. Il n’existe pas non plus d’assurance qu’un enregistrement aura la même position absolue si l’objet Recordset2 est recréé, car l’ordre des enregistrements individuels au sein d’un objet Recordset n’est pas garanti, sauf s’il est créé avec une instruction SQL à l’aide d’une clause ORDER BY.

Remarque

  • Si vous affectez une valeur supérieure à zéro à la propriété AbsolutePosition d'un objet Recordset2 récemment ouvert mais toujours vide, une erreur piégeable se produit. Remplissez d'abord l'objet Recordset2 avec la méthode MoveLast.
  • La propriété AbsolutePosition n’est pas disponible sur les objets Recordset2 de type avant uniquement, ni sur les objets Recordset2 ouverts à partir de requêtes directes sur des bases de données ODBC connectées au moteur de base de données Microsoft Access.

Exemple

Cet exemple utilise la propriété AbsolutePosition pour suivre la progression d'une boucle qui énumère tous les enregistrements d'un objet Recordset2.

    Sub AbsolutePositionX() 
     
       Dim dbsNorthwind As Database 
       Dim rstEmployees As Recordset2 
       Dim strMessage As String 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
       ' AbsolutePosition only works with dynasets or snapshots. 
       Set rstEmployees = _ 
          dbsNorthwind.OpenRecordset("Employees", _ 
          dbOpenSnapshot) 
     
       With rstEmployees 
          ' Populate Recordset. 
          .MoveLast 
          .MoveFirst 
     
          ' Enumerate Recordset. 
          Do While Not .EOF 
             ' Display current record information. Add 1 to  
             ' AbsolutePosition value because it is zero-based. 
             strMessage = "Employee: " & !LastName & vbCr & _ 
                "(record " & (.AbsolutePosition + 1) & _ 
                " of " & .RecordCount & ")" 
             If MsgBox(strMessage, vbOKCancel) = vbCancel _ 
                Then Exit Do 
             .MoveNext 
          Loop 
     
          .Close 
       End With 
     
       dbsNorthwind.Close 
     
    End Sub