Поделиться через


Свойство 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