Compter le nombre d’enregistrements dans un jeu d’enregistrements DAO
Vous souhaiterez peut-être connaître le nombre d’enregistrements dans un objet Recordset . Par exemple, vous pouvez créer un formulaire qui indique le nombre d’enregistrements dans chacune des tables d’une base de données. Vous pouvez également modifier l’apparence d’un formulaire ou d’un état en fonction du nombre d’enregistrements qu’il inclut.
La propriété RecordCount contient le nombre d’enregistrements dans un objet Recordset de type table ou le nombre total d’enregistrements accessibles 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 tous les enregistrements, utilisez la méthode MoveLast immédiatement après l’ouverture de l’objet Recordset, puis utilisez MoveFirst pour revenir 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.
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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour