• ベストアンサー

AccessのDoCmd.ApplyFilterの使い方をおしえてください。

社内で素人アプリケーション開発担当を買って出ているばか者です。 どうかこの私を助けてください。 商品マスターのようなものをサブフォームにして作っております。 メインフォームのコンボボックスの更新後処理イベントプロシージャに、そのサブフォームへDoCmd.ApplyFilterを実行させようとしてもうまく行きません。 「実行時エラー”2491”フォームがテーブルまたはクエリーを元に作成されていないので、このアクションは向こうです。」となってしまいます。ツールバーの選択フィルター使うとできるのですがイベントプロシージャでは不可能なのでしょうか。ご指導の程宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

サブフォームにフィルタを適用するには、以下のようにします。 Private Sub コマンド1_Click()   'フィルタを設定(IDが10以下)   Me.サブフォーム名.Form.Filter = "ID <= 10"   '[フィルタの使用]プロパティを「はい」に設定   Me.サブフォーム名.Form.FilterOn = True End Sub Docmd.ApplyFilter を使ったやり方も試してみたんですが、どうもうまく出来ませんでした。ちょっとした工夫でいけると思うんやけどなぁ。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

ツールバーの選択フィルターで動作するのであれば、 VBA(モジュール)からDoCmd.DoMenuItemまたは DoCmd.RunCommandで代替出来ると思います。 DoCmd.RunCommand acCmdFilterBySelection で選択フィルターと同じ動きをすると思います、 # 試していないので何ともいえませんが、、、

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • AccessサブフォームでのDoCmd.ApplyFilter

    DoCmd.ApplyFilterの使い方について。 単体では正常に動くフォームを、あらた作ったフォーム上にドラッグして(サブフォーム?)使おうとしています。 単体ではうまく動いていたDoCmd.ApplyFilter が、サブに入るとエラーになります。 対処法をご指南ください。 ちなみにメインフォームは空です。

  • Access2007 サブフォームでのフィルタ方法(DoCmd.ApplyFilter)

    お世話になっております。 フォームAに検索ボックスを作り、検索ボタンを押すと下記のようにフィルタをかけています。 Private Sub 検索_Click() DoCmd.ApplyFilter , "(分類名 Like '*" & Me.検索語 & "*')" End Sub このフォームAをフォームBのサブフォームとして使いたいのですが、そこで検索を実行すると”実行時エラー2491”が出てフィルタができません。 (フォームAとフォームB間のリンクはありません) 他の方法でもいいのですが、サブフォームでフィルタを実行したいと思います。 ご教授いただければ幸いです。よろしくお願いいたします。

  • 【アクセスVBA】テーブルにフィルタをかけたい

    Sub マクロ() DoCmd.OpenTable "Tテーブル", acViewNormal, acEdit DoCmd.ApplyFilter , "番号 = '123'" End Sub Tテーブルを開き、フィルタをかけたいのですが テーブルを開くまではできるのですが、 フィルタをかける行では 『ApplyFilter アクションの実行はキャンセルされました。』 になってしまいます。 DoCmd.OnFilter , "質問番号 = '0'" でもエラーになり、コードの実行すら行えません。 フォームではなくテーブルにフィルタをかけるにはどうすればいいでしょうか? よろしくお願いします。

  • ACCESSの絞込み操作

    説明不足になると思いますが その場合補足します、のでよろしくお願いします フォームのコンボを設け、ここに分類コードを 入れると該当データが表示されました これをサブフォームを利用するように変更しました ロジック的には このサブフォームはクエリで分類コードによって より分けています つまり、抽出条件に [forms]![フォーム名]![コンボ2] と入れています。 これは見ると、きちんとパラメータがわたされて データを選択されています さて、 サブフォームに分割しない前はコンボの プロパティで更新後の処理に DoCmd.requryを入れています サブフォームにした場合、これに変わる処理 として、何を実行していいか、教えてください

  • アクセスのサブフォームでのトラブル

    サブフォームにコンボボックスがあります。値集合ソースにクエリを指定しており、クエリの抽出条件でメインフォームのリストボックスの値を参照しています。 ところがなぜか、メインフォームのリストボックスを変更しても、それがサブフォームのコンボボックスに反映されません。どういうわけか、変更する前の値が反映されてしまいます。 ところがデータベースウィンドウからそのサブフォームを開くと、同じコンボボックスにメインフォームの変更がちゃんと反映されています。 メインフォームのリストボックスの更新後処理イベントでサブフォームのコンボボックスのリクエリを実行しています。 原因が分からず困っています。よろしくお願いします。

  • アクセス日付検索について

    フォーム上にコンボボックスがあり、 コンボボックスには、 2005-01~2005-12と選択できるようにしてあります。 他にこのフォームにはサブフォームがあり、 コンボボックスで選択した条件に合わせてサブフォームで表示したいのです。 サブフォームのソースオブジェクトのクエリに 入れる関数なのですが、 <=[Forms]![フォーム1]![コンボ1] と入れたのですが、 コンボボックスで2005-09を選択して実行しても 8月31日が出てきません・・・。 (コンボで選択した月より前がうまくいかない) 知識不足で申し訳ありませんが、 よろしくお願いいたします。

  • アクセス2002 VBA

    フォームを保存せずに閉じたいのですが、 当該フォームの「閉じる時」プロパティーにイベントプロシージャを設定し、 Private Sub Form_Close() DoCmd.Close acForm, "フォーム1", acSaveNo End Sub と記述しました。  ところが、実行すると 「Close アクションの実行はキャンセルされました。」とエラーになってしまいました。  間違いの指摘をお願いします。

  • Accessで家計簿を作っているのですが・・・(再

    いつもおせわになっております。 現在、Accessで家計簿なるものを作っているのですが・・・ まずマスタテーブルから入力データが存在する日付をクエリで抽出し、それをフォームのテキストボックス1のコントロールソースに指定して、そのテキストボックス1に表示されている日付を元にフィルタ機能を使ってその日に入力されたデータ一覧をサブフォームで表示するという方式を取っているのですが・・・(解かり難くてすみません この方式だとクエリのレコードを移動するとサブフォームの表示内容も対応してその日のが抽出されます。 しかし、データがたくさん蓄積されてくると一日ずつ(1レコードずつ)移動すると手間がかかってイライラしそうです。 で、同じフォームにコンボボックス1を追加し、上記にもあるマスタテーブルから入力されている日付を抜き出した日付一覧を取得してあるクエリを値集合ソースに指定してみました。 クリック時のイベント等もちゃんと設定したのですが、うまく動作してくれません。 コンボボックス1をクリックして選択したら、クエリをコントロールソースとするテキストボックス1の表示内容がコンボボックス1で選択されたものに変更される、みたいなことって出来ないのでしょうか? コンボボックス1だけにしてテキストボックス1を消すとコンボボックス1で選択した日付の内容をサブフォームで表示することは出来たのですが、それだとコマンドボタンを押して次のフィールドに移動し、かつコンボボックス1の表示内容も自動変更というのが出来なかったので・・・ 長文でスミマセンが、どなたかお知恵の拝借お願いします。

  • Access2000のサブフォームで…

    今、サブフォームにデータを入力する時に、コンボボックスを使ってリストから入力させたいと思っています。 それで、サブフォームにコンボAとコンボBを作成しました。コンボAで選択した項目を条件として、コンボBのリストとして使用する値を抽出したいのです。 コンボAの更新後処理でコンボBを再クエリさせるVBAを組んでみたのですが、エラーメッセージが出て実行されません。 サブフォームを単独で表示させている時にはこのVBAが実行されるのに、親フォーム内のサブフォーム上では動かなくなってしまうんです。 どのたか、解決策を教えてください。お願いします!!

  • (アクセス)全てのイベントプロシージャが無反応に

    何らかの原因でプロシージャやコマンドボタンに設定したマクロ等が無反応になる現象に苦慮しています。 多くのフォームの中で、この現象に関連するフォームは2画面あり、それぞれをフォームA、フォームBということで説明いたします。((1)~(4)) (1)フォームAのコマンドボタン押下でフォームBを開きクエリーのデータ(フォームAで指定した条件)  を表示しています。  フォームBで他のフォームと異なっているプロパティは次の通りです。  ・ポップアップ ----はい  ・作業ウィンド固定 --はい (2)フォームBにはレコードソース(クエリ)の値を表示する幾つかのテキストボックスとコンボボックス  が2つあり、それぞれをコンボA、コンボBとするとフォームBを開いた時はそれぞれにクエリーの   データを表示し、変更する場合はコンボAで選定した条件でクエリによりコンボBにデータを表示す  るようにしています。 (3)なお、コンボAの列数は2で、コンボボックスには列1のデータ(商品名)を表示するようしていて列 2の値(商品コード)を一旦テキストボックスに取り出し、そのコードでクエリによりコンボBのデータ  を表示しています。テキストボックスのプロパティのコントロールソースには次のように記述していま す。   =コンボ186.column(1)   ※=コンボ186がコンボAのことです (4)あと、フォームBにはデータをチェックするためのイベントプロシージャが幾つかとフォームAへ戻る ためのコマンドボタンがありますが他のフォームと比べても特に問題は無いように思えます。 以上のような環境でフォームAからフォームBを開いた時に、フォームBにはレコードソースであるクエリの値は全て表示するものの全てのイベントプロシージャ及び(3)で説明しました  =コンボ186.column(1) の処理が一切動作しなくなります。 しかし、次の操作により回復し、その後はACCESSを終了し再起動しても正常に動作します。  ・フォームBをデザインビューで開く  ・フォームBを開く時に設定しているイベントプロシージャを表示  ・イベントプロシージャをいじって閉じる。(内容は変更しない)  ・フォームBをホームビューで開く   だらだらと長くなり説明も不十分かと思いますが、原因がどうしてもわからなく困っております。 何か手がかりを教えて頂けたらと思い投稿しました。 よろしくお願いいたします。

このQ&Aのポイント
  • お見合いパーティに友達と行ったが、友達は成立し私は成立しなかった。相手が2番目に私を選んだがなぜ成立しなかったのか疑問。
  • 友達の友達と一緒にご飯に行ったが、その後のLINEのやりとりで相手の反応が普通ではないと感じる。
  • 私から積極的に連絡先を渡し、好意を示しているのに相手からの連絡がなく、自然消滅になっても仕方ないか悩んでいる。
回答を見る