Свойство Recordset.Sort (DAO)
Область применения: Access 2013, Office 2013
Задает или возвращает порядок сортировки для записей в объекте Recordset (только для рабочих областей Microsoft Access).
Синтаксис
expression .Sort
expression: переменная, представляющая объект Recordset.
Комментарии
Вы можете использовать свойство Sort с объектами Recordset типа dynaset и моментальный снимок.
Если вы задаете это свойство для объекта, сортировка будет выполнена при создании последующего объекта Recordset из данного объекта. Настройка свойства Sort будет переопределять любой порядок сортировки, указанный для объекта QueryDef.
Стандартный порядок сортировки по возрастанию (от А до Я или от 0 до 100).
Свойство Sort не оказывает влияние на объекты Recordset табличного или однонаправленного типа. Чтобы отсортировать табличный тип объекта Recordset используйте свойство Index.
Примечание.
Во многих случаях быстрее будет открыть новый объект Recordset с помощью оператора SQL, который включает условия сортировки.
Пример
В этом примере показано свойство Sort, изменение его значения, а также создание нового объекта Recordset. Функция 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
Если вы знаете данные, которые вы хотите выбрать, как правило, более рационально будет создать Recordset с оператором SQL. В этом примере показано, как можно создать только один объект Recordset и получить те же результаты, что и в предыдущем примере.
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