Partager via


Propriété Recordset.AbsolutePosition (DAO)

S’applique à : Access 2013, Office 2013

Définit ou renvoie le numéro d’enregistrement relatif d’un enregistrement actuel de l’objet Recordset.

Syntaxe

expression .AbsolutePosition

expression Variable qui représente un objet Recordset.

Remarques

Vous pouvez utiliser la propriété AbsolutePosition pour positionner le pointeur de l'enregistrement actif sur un enregistrement spécifique en fonction de sa position ordinale dans un objet Recordset de type feuille de réponse dynamique ou instantané. En outre, vous pouvez déterminer le numéro de l'enregistrement actif en consultant le paramétrage 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 Recordset ), 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 Recordset en vérifiant le paramètre de la 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 aucun enregistrement actif (l’objet Recordset ne contient aucun enregistrement, par exemple), la propriété AbsolutePosition renvoie la valeur -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 Recordset . 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 Recordset 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 définissez la propriété AbsolutePosition sur une valeur supérieure à zéro pour un nouvel objet Recordset ouvert mais non renseigné, vous obtenez une erreur interceptable. Renseignez d'abord l'objet Recordset à l'aide de la méthode MoveLast.
  • La propriété AbsolutePosition n’est pas disponible pour les objets Recordset de type transfert uniquement ou les objets Recordset ouverts à partir de requêtes directes exécutées dans des bases de données ODBC connectées au moteur de base de données Microsoft Access.

Exemple

L'exemple ci-dessous utilise la propriété AbsolutePosition pour effectuer le suivi de la progression d'une boucle qui énumère tous les enregistrements d'un objet Recordset.

    Sub AbsolutePositionX() 
     
       Dim dbsNorthwind As Database 
       Dim rstEmployees As Recordset 
       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