レコードを並べ替える(ADO)Sort プロパティ
データベースのレコードを並べ替える
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 |
実行結果
関連記事
-
データベース(Access 等)に接続(ADO)
ADO で、データベースに接続 外部データベースを操作する方法のひとつに ADO …
-
クエリにパラメータを渡して結果を取得する(ADO)Command オブジェクト・Execute メソッド
クエリにパラメータを渡して結果を取得する手順 Command オブジェクトの作成 …
-
Recordset オブジェクトの内容をワークシートにコピーする(CopyFromRecordset メソッド・ADO)
CopyFromRecordset メソッド ADO の Recordset オ …
-
フィールド名(ADO)Fields コレクション
Fields コレクション Recordset オブジェクト内の1つ以上の列(フ …
-
Recordset オブジェクト内のレコード数(ADO)RecordCount プロパティ
RecordCount プロパティ Recordset オブジェクトのレコード数 …
-
Excel VBA のクラスを使ってデータベースへ接続する(ADO)
データベースの処理をクラスモジュールに書く ExcelVBAで、クラス使用する方 …
-
データベース(MySQL)に接続する(ADO)
MySQL ODBCドライバ Windowsには標準で、いくつかの ODBC ド …
-
データベース(Oracle)に接続する(OLE DB を使用)
OLE DB プロバイダ OLE DBには、Oracle 提供の Oracle …
-
データベース(SQL Server)に接続する(ADO)
データベース(SQL Server)に接続 ODBC または OLE DB で接 …
-
BOF プロパティ・EOF プロパティ(ADO)
EOF プロパティ・BOF プロパティ BOF プロパティは、カレントレコードの …