#424 | オープン済みレコードセットをソートする方法 | VBA | |
テーブルに保存されたデータを並べ替えてVBA上で取得したい場合、あらかじめクエリとしてそれを用意しておき、そのクエリからレコードセットを作る方法があります。一方、RecordsetオブジェクトのSortプロパティを使うと、すでに読み込まれているレコードセットにソートを掛け、その結果を別のレコードセットとして取得することができます。 1つのテーブルからいくつかの基準で並べ替えを行い、それぞれについて一括してレコード処理するような場合、この方法を使うことによって、並べ替えの種類の数だけのクエリを作らなくて済みます。 次のプログラム例では、まず「得意先」テーブルを元とするレコードセットを開き、そこから「得意先コード」で並べ替えたレコードセット、続いて「フリガナ」で並べ替えたレコードセットを順番に生成し、それぞれを読み込んでイミディエイトウィンドウに出力しています。 なお、RecordsetオブジェクトのSortプロパティを扱うためにはダイナセットまたはスナップショットでレコードセットを開く必要があります。ただし、下記サンプルのように、SQL文やクエリを指定した場合には自動的にダイナセットとなりますので、OpenRecordsetメソッドの第2引数の指定は省略できます。 Dim dbs As Database Dim rst As Recordset Dim rsts As Recordset Set dbs = CurrentDb 'まずテーブル全体のレコードセットを開きます Set rst = dbs.OpenRecordset("SELECT * FROM 得意先 WHERE 都道府県='東京都'") 'レコードセットを得意先コードでソートします rst.Sort = "得意先コード" 'ソートされたレコードセットから新しいレコードセットを生成します Set rsts = rst.OpenRecordset With rsts Do Until .EOF Debug.Print !得意先コード, !フリガナ .MoveNext Loop .Close End With Debug.Print "***************************" '今度はフリガナでソートします rst.Sort = "フリガナ" Set rsts = rst.OpenRecordset With rsts Do Until .EOF Debug.Print !得意先コード, !フリガナ .MoveNext Loop .Close End With rst.Close 実行結果: |
|||
|
Copyright © T'sWare All rights reserved |