データベースのレコードを並べ替える
Sort プロパティ
【書式】
object.CursorLocation = adUseClient
object.Sort = “FieldName [ {ASC | DESC} ]”
引数・戻り値
- object ・・・ 対象となる Recordset オブジェクトを指定します。
- FieldName ・・・ 列名(フィールド名)を指定します。
- ASC,DESC ・・・ 昇順に並べ替えるには ASC、降順に並べ替えるには DESC を指定します。省略すると昇順に並べ替えられます。
Sort プロパティを使用するには、CursorLocation プロパティに adUseClient を設定する必要があります。
Sort プロパティに空文字列を設定すると、行は元の順序にリセットされ、一時インデックスは削除されます。既存のインデックスは削除されません。
複数列をソートする場合、,(カンマ)で区切って指定します。
例:Recordset「rs」に、[firstCol]、[middleCol]、[lastCol] という 3 つのフィールドがあるとする
rs.Sort = “lastCol DESC, firstCol ASC”
を設定した場合、Recordset は、まず「lastCol」を降順ににソートし、次に「firstCol」を昇順にソートします。このとき「middleCol」は無視します。
CursorLocation プロパティ
【書式】
object.CursorLocation = CursorLocationEnum
引数・戻り値
- object ・・・ 対象となる Recordset オブジェクトを指定します。
- CursorLocationEnum ・・・ カーソルタイプの場所を表す CursorLocationEnum クラス の定数またはその値を指定します。Sort プロパティ を使用する場合は、必ず adUseClient を設定します。
定数 | 値 | 内容 |
adUseNone | 1 | カーソルサービスを使いません。 |
adUseServer | 2 | サーバー側カーソル(既定値) |
adUseClient | 3 | クライアント側カーソル |
Sort プロパティ 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
Sub Sample_Sort() '参照設定:Microsoft ActiveX Data Objects 6.1 Library Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim constr As String Dim DBFile As String Dim i As Long Dim j As Long DBFile = ActiveWorkbook.Path & "\mydb1.accdb" constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile Set cn = New ADODB.Connection cn.ConnectionString = constr cn.Open Set rs = New ADODB.Recordset With rs .Source = "テーブル3" .ActiveConnection = cn .CursorLocation = adUseClient .Sort = "仕入先C desc, 年度 asc, 月度 asc" .Filter = "年度 = 2009 AND 仕入先C > 1300 AND 仕入先C < 1600" .Open End With With Worksheets("Sheet1") rs.MoveFirst i = 1 .Cells.Clear Do Until rs.EOF For j = 0 To rs.Fields.Count - 1 If i = 1 Then .Cells(i, j + 1) = rs(j).Name .Cells(i + 1, j + 1) = rs(j).Value Next j rs.MoveNext i = i + 1 Loop .Columns("A:H").AutoFit End With rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub |