- 締切済み
ACCESSでfilterとorderbyについて
ACCESS2000でfilterとorderbyを同時に指定する場合について教えてください。 ACCESS2000とwindows7を使用しております。 あるフォームにテキストボックスとコマンドボタンを用意しております。 テキストに入力した文字を元にfilterをかけております。 Me.filteron=true Me.filter=カラム名 like ~~ filterをした後に特定のカラムでソート(降順)したいと考えております。 上記に記載したfilterの後に Me.OrderByOn = True Me.OrderBy = カラム名 を追加したのですがfilterはするのですが、ソートはしてくれません。 上記以外になにか指定するものがあるのでしょうか。 お手数ですが、お力添えお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hatena1989
- ベストアンサー率87% (378/433)
> Set Me!~.Form.Recordset = Me!~.Form.Recordset > > 上記が何かしら悪さをしているということも考えられますでしょうか。 この場合、どちらのサブフォームで Filter、OrderBy の設定をしているのでしょうか。 もう少し、どこにコードを設定して、それぞれのフォームがどのようになるのか詳細を説明ください。 当方、Access2000の環境はないので、Access2003でサンプルを作成して試してみましたが、正常にフィルター、並べ替えができました。ただし、フィルターをかけると、レコードセットが再生成されるため、同期しなくなりますので、再度、代入して同期させる必要があります。 こちらで動作確認したサンプルの詳細 メインフォームの読み込み時 Private Sub Form_Load() Set Me.F_社員詳細.Form.Recordset = Me.社員.Form.Recordset End Sub サブフォーム F_社員 上のコマンドボタンのクリック時 Private Sub コマンド8_Click() Me.Filter = "在籍支社='東京本社'" Me.FilterOn = True Me.OrderBy = "社員コード DESC" Me.OrderByOn = True Set Me.Parent.F_社員詳細.Form.Recordset = Me.Recordset End Sub
- hatena1989
- ベストアンサー率87% (378/433)
降順にするには、No.1の方の回答のように、DESC を入れてください。 後、 Me.OrderBy = "カラム名 DESC" Me.OrderByOn = True というように OrderByOn を後にしてください。 また、FilterOn も後で設定するのが正しいです。下記、参照。 Me.FilterOn = True は先でも後で | Office系ソフトのQ&A【OKWave】 http://okwave.jp/qa/q7087180.html
- bin-chan
- ベストアンサー率33% (1403/4213)
Me.OrderBy = カラム名 desc と記述してください。
補足
回答いただきありがとうございます。 順番を入れ替えても抽出結果は変わりませんでした。 一点書き忘れがありましたので書かせていただきます。 こちらのフォームは2つのサブフォームを連動させております。 Set Me!~.Form.Recordset = Me!~.Form.Recordset 上記が何かしら悪さをしているということも考えられますでしょうか。 以上、よろしくお願い致します。