Ordenar datos en un objeto Recordset de DAO

A menos que abra un objeto Recordset de tipo tabla y establezca su propiedad Index, no podrá estar seguro de que vayan a aparecer todos los registros en un orden específico. Sin embargo, generalmente necesitará recuperarlos en un orden determinado. Por ejemplo, es posible que desee ver las facturas ordenadas por número de factura de forma ascendente, o recuperar registros de empleados en orden alfabético por apellidos. Si desea ver los registros en un orden determinado, ordénelos.

Si desea ordenar los datos de un objeto Recordset que no sea una tabla, utilice una cláusula ORDER BY de SQL en la consulta que construye el objeto Recordset. Puede especificar una cadena SQL al crear un objeto QueryDef , al crear una consulta almacenada en una base de datos o al usar el método OpenRecordset .

También puede filtrar los datos, lo que significa que restringirá el conjunto de resultados devuelto por una consulta a aquellos registros que cumplan ciertos criterios. Con cualquier tipo de objeto OpenRecordset, utilice una cláusula WHERE de SQL en la consulta original para filtrar los datos.

En el ejemplo de código siguiente se abre un objeto Recordset de tipo dynaset y se usa una instrucción SQL para recuperar, filtrar y ordenar 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") 

Una limitación de ejecutar una consulta SQL en un método OpenRecordset es que tiene que volver a compilarse cada vez que la ejecute. Si esta consulta se usa con frecuencia, puede mejorar el rendimiento creando primero una consulta almacenada con la misma instrucción SQL y, a continuación, abriendo un objeto Recordset en la consulta, como se muestra en el ejemplo de código siguiente.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.