Compartir a través de


Propiedad Recordset.Sort (DAO)

Se aplica a: Access 2013, Office 2013

Establece o devuelve el criterio de ordenación para los registros de un objeto Recordset (solo en áreas de trabajo de Microsoft Access).

Sintaxis

expression .Sort

expression Variable que representa un objeto Recordset.

Comentarios

Puede usar la propiedad Sort con objetos Recordset de tipo Dynaset y Snapshot.

Si establece esta propiedad para un objeto, la ordenación se realiza cuando se crea un objeto posterior Recordset desde ese objeto. El valor de la propiedad Sort anula cualquier criterio de ordenación especificado para un objeto QueryDef.

El criterio de ordenación predeterminado es ascendente (de A a Z o de 0 a 100).

La propiedad Sort no se aplica a objetos Recordset de tipo tabla o de tipo de solo avance. Para ordenar un objeto Recordset de tipo tabla, use la propiedad Index.

Nota:

En muchos casos, es más rápido abrir un nuevo objeto Recordset mediante una instrucción SQL que incluya los criterios de ordenación.

Ejemplo

En este ejemplo se muestra la propiedad Sort al cambiar su valor y crear un nuevo Recordset. Para que este procedimiento se ejecute se necesita la función SortOutput.

    Sub SortX() 
     
     Dim dbsNorthwind As Database 
     Dim rstEmployees As Recordset 
     Dim rstSortEmployees As Recordset 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     Set rstEmployees = _ 
     dbsNorthwind.OpenRecordset("Employees", _ 
     dbOpenDynaset) 
     
     With rstEmployees 
     SortOutput "Original Recordset:", rstEmployees 
     .Sort = "LastName, FirstName" 
     ' Print report showing Sort property and record order. 
     SortOutput _ 
     "Recordset after changing Sort property:", _ 
     rstEmployees 
     ' Open new Recordset from current one. 
     Set rstSortEmployees = .OpenRecordset 
     ' Print report showing Sort property and record order. 
     SortOutput "New Recordset:", rstSortEmployees 
     rstSortEmployees.Close 
     .Close 
     End With 
     
     dbsNorthwind.Close 
     
    End Sub 
     
    Function SortOutput(strTemp As String, _ 
     rstTemp As Recordset) 
     
     With rstTemp 
     Debug.Print strTemp 
     Debug.Print " Sort = " & _ 
     IIf(.Sort <> "", .Sort, "[Empty]") 
     .MoveFirst 
     
     ' Enumerate Recordset. 
     Do While Not .EOF 
     Debug.Print " " & !LastName & _ 
     ", " & !FirstName 
     .MoveNext 
     Loop 
     
     End With 
     
    End Function 

Cuando se conocen los datos que quieren seleccionar, suele ser más eficaz crear un objeto Recordset con una instrucción SQL. En este ejemplo se muestra cómo se puede crear solo un objeto Recordset y obtener los mismos resultados que en el ejemplo anterior.

    Sub SortX2() 
     
     Dim dbsNorthwind As Database 
     Dim rstEmployees As Recordset 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     ' Open a Recordset from an SQL statement that specifies a 
     ' sort order. 
     Set rstEmployees = _ 
     dbsNorthwind.OpenRecordset("SELECT * " & _ 
     "FROM Employees ORDER BY LastName, FirstName", _ 
     dbOpenDynaset) 
     
     dbsNorthwind.Close 
     
    End Sub