重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

アクセス2010で、チェックボックスを用いた検索を、複数条件(AND)で行いたいです。
フィールド「個数」に、1~5いずれかの数値が入力されて、フィールド「単位」に1~5いずれかの数値が入力されたレコードがあります。

検索フォームにチェックボックス5つを2セット(名前はko1からko5までと、ta1からta2まで)を作製して、
co1とta1がチェックされた時は「個数」が1かつ、「単位」が1のレコードを、
ck1、ck2とta3、ta4がチェックされた時は「個数」が1または2かつ、「単位」が3または4のレコードを表示する
のようなコードを書きたいのですが、うまくできません。教えていただけませんか。
フィールドが一つの場合は、こちらで教えていただいたのですが、、
このようなフィールド多数の場合は、非連結のチェックボックスは、良くないでしょうか。

A 回答 (4件)

十年ぶりくらいでアクセスさわってみました、


連結フォーム?のようなものをつっていてフィルターという項目があるなら、
ボタンを押下したときのイベントでフォームのフィルタを設定するのが簡単そうです。

private sub コマンドxx_Click()
dim strFilter as string
’個数が指定されているかのエラーチェック
if ko1.value+ko2.value+ko3.value+ko4.value+ko5.value = 0 then
msgbox ”個数を指定してください”,vbokonly
exit sub
end if
’単位が指定されているかのエラーチェック
if ta1.value+ta2.value+ta3.value+ta4.value+ta5.value = 0 then
msgbox ”単位を指定してください”,vbokonly
exit sub
end if
’フィルタ文字列の設定
strFilter = "("
If ko1.Value = True Then strFilter = strFilter & "個数 = 1 or "
If ko2.Value = True Then strFilter = strFilter & "個数 = 2 or "
If ko3.Value = True Then strFilter = strFilter & "個数 = 3 or "
If ko4.Value = True Then strFilter = strFilter & "個数 = 4 or "
If ko5.Value = True Then strFilter = strFilter & "個数 = 5 or "
strFilter = Left(strFilter, Len(strFilter) - 3) & ") and ( "
If ta1.Value = True Then strFilter = strFilter & "単位 = 1 or "
If ta2.Value = True Then strFilter = strFilter & "単位 = 2 or "
If ta3.Value = True Then strFilter = strFilter & "単位 = 3 or "
If ta4.Value = True Then strFilter = strFilter & "単位 = 4 or "
If ta5.Value = True Then strFilter = strFilter & "単位 = 5 or "
strFilter = Left(strFilter, Len(strFilter) - 3) & ") "
MsgBox strFilter
Me.Filter = strFilter
Me.FilterOn = True
end sub

でフィルターがかかります。
フィルターを解除する機能をつけるためには別なボタンでも作って、押下のイベントに
me.filteron = false
と書いておいて下さい。

データの量によっては、パフォーマンスは保証できなくなってしまうかもしれませんが、、、
そのあたりは、少し研究が必要です(ササっとはできません)。
    • good
    • 0
この回答へのお礼

想定したことができました!
わざわざアクセスで試していただき、ありがとうございます。

お礼日時:2020/04/21 17:04

私も、アクセス固有の機能に関しては全然詳しくないので、素直な方法になるのかわかりませんが、、、


sql を作るお手伝いなら、できると思います。 
SQLはアクセスでいう所のクエリの本体に該当するもので、データベースに文字列でアクセスし、データを抽出したり、追加したり、削除したり、、、することができます。

もし、ご希望でしたら、いくつか確認をさせてください。

チェックボックスは 
ko1 ~ ko5  *co、ckではないですよね?
ta1 ~ ta5

テーブルの名前、個数、単位のフィールドの名前、(仮でもよいです)をご指定ください。
チェックボックスのko1 ~ ko5 , ta1 ~ ta5 どちらもチェックが最低一個は入るという前提でよいでしょうか?
レコードの表示順があれば、そのフィールド名(仮でもよいです)と降順なのか昇順なのかを教えてください。
    • good
    • 0
この回答へのお礼

ありがとうございます!
チェックボックスはご指摘のとおり、
ko1~ko5、ta1~ta5
です。
ko1~ko5、ta1~ta5 は、どちらもチェックが最低1個は入ります。

テーブル名は「全件」
フィールド名は「個数」、「単位」
で作製していて、レコードの表示順はありません(入力時のID順)

助けていただけると幸いです、、

お礼日時:2020/04/21 15:42

vbaは使えるんですか?

    • good
    • 0
この回答へのお礼

エクセルで、簡単なものを使っている程度です

お礼日時:2020/04/21 13:15

文字列でSQLを作り上げて、クエリのSQLを直接指定すればよいです。


https://tsware.jp/tips/tips_082.htm
    • good
    • 0
この回答へのお礼

ありがとうございます。
アクセス初心者のため、SQLを理解できておらず、非連結のチェックボックスを用意して、実行ボタンにコードをいれたいと思っていたのですが、難しいでしょうか、、

お礼日時:2020/04/21 11:39

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

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


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