次の方法で共有


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