Trier des données dans un jeu d’enregistrements DAO

À moins d’ouvrir un objet Recordset de type table et de définir sa propriété Index , vous ne pouvez pas être sûr que les enregistrements s’afficheront dans un ordre spécifique. Néanmoins, il est généralement souhaitable d'extraire les enregistrements dans un ordre défini. Par exemple, on peut avoir besoin d'afficher des factures dans l'ordre croissant de leur numéro ou d'extraire des enregistrements d'employés dans l'ordre alphabétique de leur nom de famille. Pour voir les enregistrements dans un ordre spécifique, triez-les.

Pour trier les données d'un objet Recordset ne se trouvant pas dans une table, utilisez une clause SQL ORDER BY dans la requête qui construit l'objetRecordset. Vous pouvez spécifier une chaîne SQL lorsque vous créez un objet QueryDef , lorsque vous créez une requête stockée dans une base de données ou lorsque vous utilisez la méthode OpenRecordset .

Vous pouvez également filtrer les données, ce qui signifie que vous limitez le jeu de résultats retourné par une requête aux enregistrements qui répondent à certains critères. Avec n’importe quel type d’objet OpenRecordset , utilisez une clause SQL WHERE dans la requête d’origine pour filtrer les données.

L’exemple de code suivant ouvre un objet Recordset de type feuille de réponse dynamique et utilise une instruction SQL pour récupérer, filtrer et trier des enregistrements.

Dim dbsNorthwind As DAO.Database 
Dim rstManagers As DAO.Recordset 
 
Set dbsNorthwind = CurrentDb 
Set rstManagers = dbsNorthwind.OpenRecordset("SELECT FirstName, " & _ 
                  "LastName FROM Employees WHERE Title = " & _ 
                  "'Sales Manager' ORDER BY LastName") 

L’une des limitations de l’exécution d’une requête SQL dans une méthode OpenRecordset est qu’elle doit être recompilée chaque fois que vous l’exécutez. Si cette requête est fréquemment utilisée, vous pouvez améliorer les performances en créant d’abord une requête stockée à l’aide de la même instruction SQL, puis en ouvrant un objet Recordset sur la requête, comme illustré dans l’exemple de code suivant.

Dim dbsNorthwind As DAO.Database 
Dim rstSalesReps As DAO.Recordset 
Dim qdfSalesReps As DAO.QueryDef 
 
Set dbsNorthwind = CurrentDb 
 
Set qdfSalesReps = dbsNorthwind.CreateQueryDef("SalesRepQuery") 
qdfSalesReps.SQL = "SELECT * FROM Employees WHERE Title = " & _ 
                   "'Sales Representative'" 
 
Set rstSalesReps = dbsNorthwind.OpenRecordset("SalesRepQuery") 

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.