Classificar dados em um Conjunto de Registros de DAO

A menos que você abra um objeto Recordset do tipo tabela e defina sua propriedade Index , não pode ter certeza de que os registros serão exibidos em qualquer ordem específica. No entanto, normalmente convém recuperar registros em uma ordem específica. Por exemplo, talvez você queira exibir faturas organizadas por uma numeração crescente ou recuperar registros dos funcionários em ordem alfabética. Para ver os registros em uma ordem específica, classifique-os.

Para classificar dados em um objeto Recordset que não esteja em uma tabela, use uma cláusula SQL ORDER BY na consulta que constrói o Recordset. Você pode especificar uma cadeia de caracteres SQL ao criar um objeto QueryDef ao criar uma consulta armazenada em um banco de dados ou ao usar o método OpenRecordset .

Você também pode filtrar dados, o que significa restringir o conjunto de resultados retornado por uma consulta aos registros que atendam a alguns critérios. Com qualquer tipo de objeto OpenRecordset, use uma cláusula SQL WHERE na consulta original para filtrar dados.

O exemplo de código a seguir abre um objeto Recordset do tipo dynaset e usa uma instrução SQL para recuperar, filtrar e classificar registros.

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") 

Uma limitação de executar uma consulta SQL em um método OpenRecordset é que ela precisa ser recompilada toda vez que você executá-la. Se essa consulta for usada com frequência, você poderá melhorar o desempenho criando primeiro uma consulta armazenada usando a mesma instrução SQL e abrindo um objeto Recordset na consulta, conforme mostrado no exemplo de código a seguir.

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") 

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.