ADOのSortプロパティを利用してレコードを並べ替えるには
RecordsetオブジェクトのSortプロパティを使用してレコードを並べ替える方法を説明します。
|
recordset.Sort =FieldName [ASC|DESC] [,FieldName [ASC|DESC]]・・・ |
FieldNameには、SQLのOrder By句のように並べ替えするフィールド名と並べ替え順を指定します。ASCを指定すると昇順に並べ替えします。DESCを指定すると降順に並べ替えします。並べ替え順を省略するとASCが仮定されます。
rs.Sort = “都道府県 ASC”
rs.Sort = “年齢 DESC”
rs.Sort = “性別, 年齢 DESC”
Sortプロパティでレコードセットを並べ替えするときは、Connnction/RecordsetオブジェクトのCursorLocationプロパティにadUseClientを設定する必要がります。
|
|
図 Sortプロパティでレコードを並べ替えるサンプル
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「RecordsetオブジェクトのSortプロパティを利用した手法」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには、実行結果が表示されます。
図の行21-24では、Access 2000のデータベースado.mdbを接続するための処理を行っています。
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & server.MapPath("webdb/ado.mdb")
set cnn = server.CreateObject("adodb.connection")
cnn.open strConnection
行26では、Recordsetのインスタンスを生成しています。
set rs = server.CreateObject("adodb.recordset")
行27-39のWith…End Withでは、Recordsetのオブジェクトを参照しています。行28では、CursorLocationプロパティにadUseClientを設定しています。Sortプロパティを使用して並べ替えするときは、adUseClientを指定する必要がります。行29では、ado.mdbの得意先テーブルを開いています。行30では、Sortプロパティに並べ替えのフィールドとして「都道府県」を設定しています。並べ替え順を省略していますので昇順が採用されます。
.CursorLocation = adUseClient
.Open "得意先;", cnn, adOpenKeyset, adLockReadOnly
.Sort = "都道府県"
行31-37のdo until…loopでは、都道府県順に並べ替えされたレコードセットをブラウザに表示させています。行32-34では、Fieldsプロパティにフィールド名(都道府県、得意先コード、得意先名)を指定してResponse.Writeでブラウザに送信しています。行35では、HTMLの<br>タグを送信して改行しています。行36では、MoveNextメソッドで次のレコードに移動しています。カレントが最終レコードのとき、MoveNextメソッドを実行するとEOFが報告されてdo until…loopが終了します。
do until .EOF
response.Write .Fields("都道府県").Value & vbTab
response.Write .Fields("得意先コード").Value & vbTab
response.Write .Fields("得意先名").Value
response.Write "<br>"
.MoveNext
loop
行38では、Closeメソッドでレコードセットを閉じています。行40では、ConnectionオブジェクトのCloseメソッドでデータベースを切断しています。行41-42では、Server.CreateObjectメソッドで生成したRecordsetオブジェクトとConnectionオブジェクトを解放しています。
set rs = nothing
set cnn = nothing