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

レコードの並び替え_除くテーブルタイプ : DAO入門講座



レコードタイプのレコードセットで、レコードデータを昇順、降順に並び替える 場合、事前にインデックスを新設するなかで昇順、降順を定め、レコードセット内でカレントインデックスを設定することで実現できました。
しかし、レコードタイプがダイナセットタイプ、スナップショットタイプの場合、Sortプロパティを用いることになりますので注意が必要です。 このプロパティを用いるにあたって、事前のインデックス作成などは不要です。

  • テーブルを対象としたレコードセットは、テーブルタイプまたはダイナセットタイプいずれかを作成することができます。違いとしては、テーブルタイプは直接レコードセット内で並び替えを行いのに比べ、ダイナセットタイプは昇順、降順の設定を行った新しいレコードセットを作成する必要があります。
  • 昇順はASC、降順はDESCを記述します。

サンプルテーブルの作成

サンプルテーブルを下記のように作成します。

ID 氏名 性別 年齢 血液型
1 鈴木一郎 男性 45 A
2 田中二郎 男性 52 O
3 中村三郎 男性 29 B
4 中田四郎 男性 41 AB
5 佐藤里香 女性 21 O
6 小柳ゆり 女性 27 A
7 北島良子 女性 26 A
8 上島五郎 男性 55 O
9 不破美香 女性 27 B

ダイナセットタイプ、スナップショットタイプのレコードセット

ダイナセットタイプ、スナップショットタイプのレコードセットの場合は、Sortプロパティを用いて並び替えを行います。

  • レコードセット.Sort = "対象となるフィールド名 ASC[DESC]"
降順
  • フィールド名 + 半角 + DESC で設定します。
昇順
  • フィールド名 + 半角 + ASC で設定します。なお、ASCは省略可能です。
サンプルプロシージャ

Sortプロパティを用いたサンプルとして、ダイナセットタイプのレコードセットを作成します。並び替えの対象フィールドは、「年齢」です。

Sub MySort()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strMsg As String
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("会員登録詳細リスト", dbOpenDynaset) ' --- A
    
    rs.Sort = "年齢 DESC" ' --- B
    Set rs = rs.OpenRecordset() ' --- C
    
    Do Until rs.EOF
        strMsg = strMsg & vbNewLine & rs!ID & " : " & rs!氏名 & " : " & rs!性別
        strMsg = strMsg & " : " & rs!年齢 & "歳 : " & rs!血液型 & "型"
        rs.MoveNext
    Loop
    
    MsgBox "Sort並び替え : 年齢の降順" & vbNewLine & strMsg
    
    Set db = Nothing
    Set rs = Nothing
    
End Sub
解説
  1. レコードセットをダイナセットタイプで作成します。テーブルタイプのレコードセットでは、SortプロパティではなくIndexプロパティを用います。
  2. Sortプロパティに続き、ダブルクォーテーション(")でフィールド名と続いて昇順、降順を囲みます。
  3. ダイナセットタイプ、スナップショットタイプでは、新たにレコードセットを作成する必要があります。
実行結果

SubプロシージャMySortをイミディエイト画面上で実行すると、下記のメッセージボックスが表示されます。 これは、年齢フィールドのレコードを降順で並び替えたものです。

留意事項

昇順、降順の指定を省略すると、既定値である昇順の設定となります。

Sub MySort()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strMsg As String
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("会員登録詳細リスト", dbOpenDynaset)
    
    rs.Sort = "年齢" ' --- A
    Set rs = rs.OpenRecordset()
    
    Do Until rs.EOF
        strMsg = strMsg & vbNewLine & rs!ID & " : " & rs!氏名 & " : " & rs!性別
        strMsg = strMsg & " : " & rs!年齢 & "歳 : " & rs!血液型 & "型"
        rs.MoveNext
    Loop
    
    MsgBox "Sort並び替え : 年齢の昇順" & vbNewLine & strMsg
    
    Set db = Nothing
    Set rs = Nothing
    
End Sub
解説
  1. 昇順、降順の指定を省略しています。
実行結果

下記のように昇順で並び替えられます。

 

2004/06/03

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

 


レコードの並び替え_除くテーブルタイプ : DAO入門講座


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。