Recordset2.Sort プロパティ (DAO)
適用先: Access 2013、Office 2013
Recordset オブジェクトのレコードの並べ替え順序を設定または取得します (Microsoft Access ワークスペースのみ)。
構文
式 .Sort
式Recordset2 オブジェクトを表す変数。
注釈
Sort プロパティは、ダイナセット タイプおよびスナップショット タイプの Recordset オブジェクトで使用できます。
オブジェクトに対してこのプロパティを設定すると、それ以降にそのオブジェクトから Recordset オブジェクトを作成するときに、レコードが並べ替えられます。 Sort プロパティの設定値は、 QueryDef オブジェクトに指定されているいずれの並べ替え順序よりも優先されます。
並べ替え順序を指定しない場合は、昇順 (A ~ Z、0 ~ 100、あ~ん) になります。
Sort プロパティは、テーブル タイプまたは前方スクロール タイプの Recordset オブジェクトには適用されません。 テーブル タイプの Recordset オブジェクトを並べ替えるには、Index プロパティを使用します。
注:
多くの場合、並べ替え条件を含む SQL ステートメントを使用すると、新規の Recordset オブジェクトをより短時間で開くことができます。
例
次の使用例では、 Sort プロパティの値を変更し、新しい Recordset オブジェクトを作成することにより、このプロパティの機能を示します。 このプロシージャを実行するには、SortOutput 関数が必要です。
Sub SortX()
Dim dbsNorthwind As Database
Dim rstEmployees As Recordset2
Dim rstSortEmployees As Recordset2
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
選択するデータがわかっている場合は、SQL ステートメントを使用して Recordset を作成する方が一般に効率的です。 次の使用例では、1 つの 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