Шаг 107 - Свойство Sort

Описание
Задает или возвращает порядок сортировки записей в объекте Recordset (только в рабочей области Microsoft Jet).

Значение
Задаваемое или возвращаемое значение является выражением типа String, содержащим предложение ORDER BY инструкции SQL без зарезервированных слов ORDER BY.

Замечания
Свойство Sort используют с объектами Recordset типа динамического и статического набора записей.
После задания значения свойства Sort для объекта этот порядок сортировки будет использован при создании следующего объекта 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("Борей.mdb")
	Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники", 	dbOpenDynaset)

	With rstEmployees
		SortOutput "Исходный объект Recordset:", rstEmployees
		.Sort = "Фамилия, Имя"
		' Печатает отчет, показывая значение свойства Sort 
		' и порядок записей.
		SortOutput "Объект Recordset после изменения свойства Sort:", 	rstEmployees
		' Открывает новый объект Recordset из текущего.
		Set rstSortEmployees = .OpenRecordset
		' Печатает отчет, показывая значение свойства Sort 
		' и порядок записей.
		SortOutput "Новый объект 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

		' Цикл по всем компонентам объекта Recordset.
		Do While Not .EOF
			Debug.Print "        " & !Фамилия & ", " & !Имя
			.MoveNext
		Loop
	End With
End Function

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 20.03.2002