ここから本文です

Accessのフィルターとマクロについて。

mel********さん

2019/10/1516:35:54

Accessのフィルターとマクロについて。

フォーム上にある、チェックボックス1~10のチェックTrueの場合に、同一フォーム上にあるクエリ内の特定フィールドにフィルターをかけたいです。

チェックが入るパターンは、1023通りもあるらしく、それぞれの状況を個別に書き出していくことなんてできないのですが
他により良い案でマクロを組んでチェックボックスのチェック判定からフィルターまでかけられる手順はありますか??

ちなみに、、マクロビルダーでしか組んだことは無いです。(Excel VBAなら組めますが)

閲覧数:
27
回答数:
2

違反報告

ベストアンサーに選ばれた回答

glo********さん

2019/10/1710:20:53

「埋め込みマクロ」でやるなら

テーブルのフィールド名 fld01 ~ fld10
フォームのチェックボックス名 chk01 ~ chk10
とした場合
(↓同じ名前にするのは悪手
>チェックボックスをクエリのフィールド名と同じにして、)

そして、たとえば「検索開始」コマンドボタンの「クリック時」イベントに埋め込みマクロで

◆一時変数の設定
] 名前 Condition
] 式= IIf([chk01]," AND [fld01]=True","")
◆一時変数の設定
] 名前 Condition
] 式= [TempVars]![Condition] & IIf([chk02]," AND [fld02]=True","")
↑このパターンで10まで作る。↓10はこんな感じ
◆一時変数の設定
] 名前 Condition
] 式= [TempVars]![Condition] & IIf([chk10]," AND [fld10]=True","")
◆フィルターの設定
] フィルター名
] Where条件式= =IIf(Len([TempVars]![Condition])>0,Mid([TempVars]![Condition],6),"")
] コントロール名


以上
※Where条件式で先頭に = を付けること

「埋め込みマクロ」でやるなら

テーブルのフィールド名 fld01 ~ fld10...

  • 質問者

    mel********さん

    2019/10/1714:26:40

    丁寧にありがとうございます。
    念の為、一番最初の変数だけ設定してやろうと思いましたら

    IIf([chk01],"AND [fld01]=True","")
    のTruePart部分の構文エラーとなり実行できませんでした。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

hot********さん

2019/10/1601:57:04

チェックボックスが10個あれば2^10(1024)パーターンあります。
ただし、チェック毎(または組み合わせ)に何をしたいのかによって条件は1個になる場合もあります。
10個のチェックの意味とチェック毎(または組み合わせ)に何をしたいのでしょうか。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる