プロが教える店舗&オフィスのセキュリティ対策術

ACCESS2000でfilterとorderbyを同時に指定する場合について教えてください。

ACCESS2000とwindows7を使用しております。

あるフォームにテキストボックスとコマンドボタンを用意しております。
テキストに入力した文字を元にfilterをかけております。

Me.filteron=true
Me.filter=カラム名 like ~~

filterをした後に特定のカラムでソート(降順)したいと考えております。
上記に記載したfilterの後に

Me.OrderByOn = True
Me.OrderBy = カラム名

を追加したのですがfilterはするのですが、ソートはしてくれません。

上記以外になにか指定するものがあるのでしょうか。

お手数ですが、お力添えお願い致します。

A 回答 (3件)

> 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
    • good
    • 0

降順にするには、No.1の方の回答のように、DESC を入れてください。



後、

Me.OrderBy = "カラム名 DESC"
Me.OrderByOn = True

というように OrderByOn を後にしてください。

また、FilterOn も後で設定するのが正しいです。下記、参照。

Me.FilterOn = True は先でも後で | Office系ソフトのQ&A【OKWave】
http://oshiete.goo.ne.jp/qa/7087180.html

この回答への補足

回答いただきありがとうございます。

順番を入れ替えても抽出結果は変わりませんでした。
 
一点書き忘れがありましたので書かせていただきます。

こちらのフォームは2つのサブフォームを連動させております。

Set Me!~.Form.Recordset = Me!~.Form.Recordset

上記が何かしら悪さをしているということも考えられますでしょうか。

以上、よろしくお願い致します。

補足日時:2013/04/22 09:08
    • good
    • 0

Me.OrderBy = カラム名 desc


と記述してください。
    • good
    • 0

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

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

関連するカテゴリからQ&Aを探す


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