Table of contents
XML
TOC
Réduire la table des matières
Développer la table des matières

Compter le nombre d'enregistrements dans un jeu d'enregistrements DAO

office 365 dev account|Dernière mise à jour: 04/10/2017
|
1 Contributeur

Si vous voulez connaître le nombre d'enregistrements dans un objet Recordset, vous pouvez, par exemple, créer un formulaire qui indique le nombre d'enregistrements se trouvant dans chacune des tables d'une base de données ou changer l'apparence d'un formulaire ou d'un état à partir du nombre d'enregistrements qu'il contient.

La propriété RecordCount indique le nombre d'enregistrements dans un objet Recordset de type table ou le nombre total d'enregistrements auxquels les utilisateurs ont accédés dans un objet Recordset de type feuille de réponse dynamique ou instantané. Lorsqu'un objet Recordset ne comporte aucun enregistrement, sa propriété RecordCount a la valeur 0.

Remarque La valeur de la propriété RecordCount est égale au nombre d'enregistrements auxquels les utilisateurs ont accédés. Supposons, par exemple, que vous créez une feuille de réponse dynamique ou un instantané et que vous n'avez accédé qu'à un seul enregistrement. Si vous vérifiez la propriété RecordCount immédiatement après avoir créé la feuille de réponse dynamique ou l'instantané pour au moins un enregistrement, sa valeur est 1. Pour visiter (ou accéder à) tous les enregistrements, utilisez la méthode MoveLast immédiatement après avoir ouvert l'objet Recordset, puis utilisez MoveFirst pour retourner au premier enregistrement. Cette opération ne peut pas s'effectuer automatiquement, surtout avec des jeux d'enregistrements volumineux, car elle serait trop lente.

Lorsque vous ouvrez un objet Recordset de type table, vous visitez en fait tous les enregistrements dans la table sous-jacente, et la valeur de la propriété RecordCount est égale au nombre d'enregistrements dans la table à l'ouverture de l'objet Recordset. Les transactions annulées peuvent rendre la valeur de la propriété RecordCount obsolète lorsque plusieurs utilisateurs accèdent aux enregistrements. Pour cette raison, compacter la base de données permet de rétablir la valeur correcte du nombre d'enregistrements dans la table.

L'exemple de code suivant crée un objet Recordset de type instantané, puis détermine le nombre d'enregistrements dans l'objet Recordset:

Function FindRecordCount(strSQL As String) As Long

Dim dbsNorthwind As DAO.Database
Dim rstRecords As DAO.Recordset

On Error GoTo ErrorHandler

   Set dbsNorthwind = CurrentDb

   Set rstRecords = dbsNorthwind.OpenRecordset(strSQL)

   If rstRecords.EOF Then
      FindRecordCount = 0
   Else
      rstRecords.MoveLast
      FindRecordCount = rstRecords.RecordCount
   End If

   rstRecords.Close
   dbsNorthwind.Close

   Set rstRecords = Nothing
   Set dbsNorthwind = Nothing

Exit Function

ErrorHandler:
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function

Au fur et à mesure que l'application supprime des enregistrements dans un objet Recordset de type feuille de réponse dynamique, la valeur de la propriété RecordCount décroît. Cependant, dans un environnement à plusieurs utilisateurs, les enregistrements supprimés par d'autres utilisateurs ne sont reflétés dans la valeur de la propriété RecordCount que lorsque l'enregistrement actuel est positionné sur un enregistrement supprimé. À ce moment-là, la valeur de la propriété RecordCount décroît d'un enregistrement. Utilisez alors la méthode Requery sur l'objet Recordset, suivie de la méthode MoveLast, pour définir la propriété RecordCount avec le nombre total d'enregistrements actuellement dans l'objet Recordset.

Un objet Recordset de type instantané est, quant à lui, statique, c'est-à-dire que la valeur de sa propriété RecordCount ne change pas lorsque vous ajoutez ou supprimez des enregistrements dans sa table sous-jacente.

© 2018 Microsoft