• 締切済み

ACCESSでfilterとorderbyについて

ACCESS2000でfilterとorderbyを同時に指定する場合について教えてください。 ACCESS2000とwindows7を使用しております。 あるフォームにテキストボックスとコマンドボタンを用意しております。 テキストに入力した文字を元にfilterをかけております。 Me.filteron=true Me.filter=カラム名 like ~~ filterをした後に特定のカラムでソート(降順)したいと考えております。 上記に記載したfilterの後に Me.OrderByOn = True Me.OrderBy = カラム名 を追加したのですがfilterはするのですが、ソートはしてくれません。 上記以外になにか指定するものがあるのでしょうか。 お手数ですが、お力添えお願い致します。

みんなの回答

回答No.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

回答No.2

降順にするには、No.1の方の回答のように、DESC を入れてください。 後、 Me.OrderBy = "カラム名 DESC" Me.OrderByOn = True というように OrderByOn を後にしてください。 また、FilterOn も後で設定するのが正しいです。下記、参照。 Me.FilterOn = True は先でも後で | Office系ソフトのQ&A【OKWave】 http://okwave.jp/qa/q7087180.html

MTMmtmMTM
質問者

補足

回答いただきありがとうございます。 順番を入れ替えても抽出結果は変わりませんでした。   一点書き忘れがありましたので書かせていただきます。 こちらのフォームは2つのサブフォームを連動させております。 Set Me!~.Form.Recordset = Me!~.Form.Recordset 上記が何かしら悪さをしているということも考えられますでしょうか。 以上、よろしくお願い致します。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

Me.OrderBy = カラム名 desc と記述してください。

関連するQ&A

  • ACCESSのFILTERについて教えてください。

    いつも、お世話になっております。 以下について教えてください。 会社内のシステムのデータからACCESSでリンクを張って、日付(テキスト型)の絞り込み機能を作りたいと思い、以下のようにPGをくんだのですが、「直前の操作は取り消されました」と出て原因がわかりません。 (ちなみにYYYYMMDDの形で入力します。) Me.Filter = "[日付] >= " & Me.txt_開始 & "And" & "[日付] <= " & Me.txt_終了 Me.FilterOn = True BETWEENでやってみても同じでうまくいきませんでした。 すみませんが、原因とうまく行く対処法を教えてください。 お願いします。

  • アクセス sqlで自動加算したい

    アクセス2010です 現在 Me.Filter = グループ別 Me.FilterOn = True Me.OrderBy = 速い順 Me.OrderByOn = True jj = 1 Me.Recordset.MoveFirst While (Not Me.Recordset.EOF) Me.順番 = jj jj = jj + 1 DoCmd.RunCommand acCmdSaveRecord Me.Recordset.MoveNext Wend これをSQLで jj=0 UPDATE テーブル SET 順番 = Inc(jj) Where ~~ Order ~~~~ なんて書けないですか?

  • Access フォームから並び替えレポート

    お知恵をお貸しください。 Access2010 フォームでオプショングループを2種類用意しました。 規則グループ 昇順 降順 並び替えグループ ID ふりがな レポートに Private Sub Report_Open(Cancel As Integer) Select Case Forms!フォーム4!fra並べ替え Case 1 Me.OrderBy = "ID ASC" Me.OrderByOn = True Case 2 Me.OrderBy = "ふりがな ASC" Me.OrderByOn = True End Select End Sub 並び替えでは、昇順のみうまくレポートを行えますが。 規則で ID ふりがな を昇順 降順 に行えません。 なにを加えればよいのでしょうか。 よろしくお願いします。

  • Access filterにて

    フィルターする時、オプションボタンやトグルボタンを使用し、Select Caseで分岐させてフィルターするやり方でなく、下記のようにすることはできますか? ************************************************************** 「Me.検索項目」はコンボボックス(集合体ソースには、検索するフィールド名を用意) 「Me.日付入力」は日付だけを入力するテキストボックス Me.Form.Filter = "'" & Me.検索項目 & "'" = "#" & Me.日付入力 & "#" Me.Form.FilterOn = True ************************************************************** 検索するフィールド名をいちいち記述しなくて済むのでは?と思いましたが、結果が得られませんでした。 どこがおかしいのでしょうか?よろしくお願いします。

  • accessのレポートの並べ替え条件

    こんにちわ。 いまaccess2000でレポートを作成しています。 そこでレポートの並べ替え条件(昇順/降順)を 呼び出し元であるフォームのある条件によって, 動的に変えたいと思い, レポートファイルのReport_Open()イベントで 下記のようにコーディングしました。 「 Me.OrderByOn = True If [グローバル変数] = "1" Then Me.OrderBy = " [ID] Desc " Else Me.OrderBy = " [ID] " End If 」 ところが実行すると上記の箇所が処理されているにもかかわらず, 並べ替え条件が正しく反映されません。 どうすれば並べ替え条件が正しく反映されるでしょうか? 教えてください。 宜しくお願いします。

  • アクセスで期間抽出

    お尋ねします アクセスで納品書のデータベースがあります   納品書データFormには 伝票番号、日付、客先名、数量のフィールドのフォームで テキストボックス1:始めの日 テキストボックス2:終了日 コマンドボタン1:期間で抽出 が配置しています テキストボックス1,2に日付、記入後、コマンドボタン1をクリックして 所要期間でフィルターで抽出するのですがうまく行きません コマンドボタン1クリック時のコード Private Sub コマンド1_Click() Me.Filter = "日付= 'Between" & Me![テキスト1] & "And" & Me![テキスト2] & "'" Me.FilterOn = True End Sub のコードで抽出してくれません、不都合をご指摘下さい なお 指定日での抽出は以下で出来ました。 Private Sub コマンド1_Click()  Me.Filter = "日付= '" & Me![テキスト1] & "'" Me.FilterOn = True End Sub エクセルのモジュールは少しかじったのですがアクセスは 始めたばかりでなかなか要領を得ません 宜しくお教え下さい。

  • Me.FilterOn = True は先でも後で

    Me.FilterOn = True は先でも後でも問題ないですか? アクセスのvbaでフォームにフィルタをかけるときに 今まで --------------------------------------- Private Sub コマンド2_Click() Me.Filter = "フィールド = '" & "test" & "'" Me.FilterOn = True End Sub --------------------------------------- とコードを書いていましたが --------------------------------------- Private Sub コマンド2_Click() Me.FilterOn = True Me.Filter = "フィールド = '" & "test" & "'" End Sub --------------------------------------- でも機能しました。 という事は、 Me.FilterOn = Trueは Me.Filter の前でも問題ないのでしょうか? Me.FilterOn = Trueは Me.Filter の後と習ったので疑問に思っています。 よろしくお願いいたします。

  • アクセスのOR検索

    アクセスの初心者です。テキストボックスに入力した語句をテーブルより検索するコードをサンプルコードからまねて作りました。   Me.Filter = "[件名]Like'" & "*" & Me![テキスト28] & "*'"   Me.FilterOn = True さらにテキストボックスを2つほど増やし、3つからOR検索出来るようにしたいんですが、、、(コードの意味もよくわかっていません。) コードを書いていただくとありがたいのですが。 よろしくお願いします。

  • アクセスVBA 数値の複数抽出について

    アクセスVBAをつかい[厚み]フィールドの0.1と0.5の2つの抽出を 行いたいのですが、0.1のみの抽出は、できるのですが、複数の抽出方法がわからず悩んでいます。 Me.Filter = "[厚み] = 0.1 " Me.FilterOn = True よろしくお願いします。

  • ACCESSとVBAとレコード

    こんにちわ。 このサイトは何回も利用させて頂いてるのですが、今回も宜しくお願い致します。 環境はOS:Xp・Access2000です。 フォームを開くときにレコードを並べ替えたいのですが、単に「顧客コード」を昇順で並べ替えるには Private Sub Form_Load() Me.OrderBy = "顧客コード" Me.OrderByOn = True End Sub というのは解ったのですが、 何の関連付けもしてない、指定のテーブルの内容を並べ替えるにはどのように記述したらよいのでしょうか? 「Me」の箇所をそのテーブル名 (例えば、顧客テーブル.OrderBy = "顧客コード") のようにすれば良いのでしょうか? 宜しくお願いします。