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