Microsoft Access Club >ADO入門講座 >このページ >次頁 < 前項  サイト内検索
 

レコードの並び替え - Sortプロパティ : ADO入門講座



RecordsetオブジェクトのSortプロパティを用いて、レコードセット内のレコードを 昇順、または降順に並び替えることができます。但し、RecordsetオブジェクトのCursorLocationプロパティの値がadUseClientである場合に限り,Sortプロパティを用いてレコードの並べ替えが可能になります。

留意点
  • テーブルやクエリを用いてRecordsetオブジェクトは,CursorLocationプロパティの値がadUseServerとなっているためレコードを並べ替えることができません。
  • Openメソッドを用いてRecordsetオブジェクトを開く前にCursorLocationプロパティの値を設定する必要があります。

Sortプロパティの構文

Updateメソッドの構文は、以下のような組み合わせになります。

Recordsetオブジェクト + .(ドット) + Sortプロパティ  = "フィールド名 + .(半角)  並び順の指定"

項目 意味
Recordsetオブジェクト 開いているRecordsetオブジェクトです。
フィールド名 Recordsetオブジェクトに含まれるフィールド名です。
並び順 昇順に並べ替える場合はASCキーワード、降順に並べ替える場合はDESCキーワードを記述します。
留意点
  1. 並び順の既定値は昇順です(ASCが既定値)。

  2. フィールド名と並び順の指定の間には空白が必要です。

サンプルテーブルの作成

サンプルテーブルを以下のように作成します。テーブル名は、T_sampleテーブルです。

ID 売上日 社員名 性別 売上額
6 2004/01/23 橘修平 男性 52100
5 2004/02/04 柴田喜一 男性 654100
8 2004/03/25 正道良一 男性 4875210
1 2004/07/29 草薙良子 女性 120310

1つのフィールドの並び替え

このプロシージャは、T_SampleテーブルのIDフィールドを昇順で並び替え、メッセージボックスに表示します。

Sub ADO_Sort()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strmsg As String
    Dim lngRet As Long
    Set cn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    
    rs.CursorLocation = adUseClient ' --- A
    rs.Open "T_Sample", cn, adOpenKeyset, adLockOptimistic
    rs.Sort = "ID ASC" '昇順で並び替えます。
    
    Do Until rs.EOF
        strmsg = strmsg & rs!id & " : " & rs!売上日 & " : " & rs!社員名 & _
                " : " & rs!性別 & " : " & rs!売上額 & "円" & vbNewLine
        rs.MoveNext
    Loop
    
    MsgBox strmsg
    
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
解説
  1. CursorLocationプロパティをOpenメソッドでRecordsetオブジェクトを開く前にadUseClient(クライアント側カーソル ライブラリ)に設定します。
実行結果
  1. プロシージャを実行します。
  2. Sortプロパティを用いてIDフィールドで昇順に並び替えます。
  3. 以下のメッセージボックスが表示されます。

留意点
  1. 並び替えは、Recordsetオブジェクト内でのみ行われます。
    テーブルレコードの並び替えには影響を与えません。

複数フィールドでの並び替え

複数のフィールドで並び替えを行うこともできます。以下のプロシージャは、性別フィールド を昇順、売上日フィールドを降順に並び替え、メッセージボックスに表示します。

Sub ADO_Sort2()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strmsg As String
    Dim lngRet As Long
    Set cn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    
    rs.CursorLocation = adUseClient
    rs.Open "T_Sample", cn, adOpenKeyset, adLockOptimistic
    rs.Sort = "性別 ASC,売上日 DESC" ' --- A
    
    Do Until rs.EOF
        strmsg = strmsg & rs!id & " : " & rs!売上日 & " : " & rs!社員名 & _
                " : " & rs!性別 & " : " & rs!売上額 & "円" & vbNewLine
        rs.MoveNext
    Loop
    
    MsgBox strmsg
    
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
解説
  1. 複数フィールドで並べ替えを行う場合、カンマ(,)で区切って指定します。この場合,先に指定した並べ替え設定が優先されます。
実行結果
  1. プロシージャを実行します。
  2. Sortプロパティを用いて性別フィールドを昇順、売上日フィールドを降順に並び替えます。
  3. 以下のメッセージボックスが表示されます。

並べ替えの解除

  1. 並び替えを解除する場合は、Sortプロパティに長さ0の文字列("")を代入します。
  2. 並べ替え順序が解除され,元の並びに戻ります。

関連ページ

2005/07/05

ページの先頭へ 前ページへ戻る


レコードの並び替え - Sortプロパティ : ADO入門講座


 

-Microsoft Access Club-

動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。データセンター設置場所はアメリカ合衆国です。: 動画サーバードットコム
動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。
データセンター設置場所はアメリカ合衆国です。
100Mbps〜1Gbpsまで対応できます。