アプリ版:「スタンプのみでお礼する」機能のリリースについて

アクセスでADOを使っているのですが、

Sub test()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection

rs.CursorLocation = adUseClient
rs.Open "SELECT * FROM Q1", cn, adOpenStatic, adLockPessimistic
rs.Sort = "受付日 DESC"

For i = 1 To rs.RecordCount




このようなコードを作っていますが、
rs.Sortの部分で、「並べ替えを適用できません」になります。

レコード数は、15000件くらいです。

なぜ並べ替えができないのでしょうか?
しょうがないからクエリで最初から並べ替えしておきますが、原因を教えてください。

「アクセスでADO 並べ替えが適用できない」の質問画像

A 回答 (1件)

おかしな所は見当たらないですね。


こちらでも検索してみましたが、ソートするフィールドの型によってもその実行時エラーが
発生するみたいですね。(メモ型らしいですけど)

直接的な解決策ではありませんが、ORDER BY句を指定するのはダメですか?

Sub test()
Dim cn As ADODB.Connection'ここでNewするのはやめましょう。
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

Set cn = CurrentProject.Connection

'rs.CursorLocation = adUseClient 不要
rs.Open "SELECT * FROM Q1 ORDER BY 受付日 DESC ;", cn, adOpenStatic, adLockPessimistic


For i = 1 To rs.RecordCount

recordsetを取得してから並び替える必要があるならダメですが、そうでないなら
ORDER BY句で対応された方がいいのではないでしょうか。
Q1(クエリ)に例えば受付日が昇順に設定されていても、ADOで開く時のORDER BY句が優先されます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2014/06/01 13:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A