
いつもお世話になっております。アクセス初心者です。
あるフォームのチェックボックスのオンオフとコンボボックス、
クエリの選択条件が思うように連携できなくて困っています。
やりたいことは、、、フォームのチェックボックスが、
ON(True)ならば、
フィールドにコンボボックスのキーワードを含むレコードおよびフィールドが空白のレコードを抽出し、
OFF(False)ならば、
フィールドにコンボボックスのキーワードを含むレコードのみでフィールドが空白のレコードは抽出しない、
としたいのですが…。
IIfやSwitchで式を書きましたが、チェックを入れても外しても、どちらも抽出件数が0件になります。
クエリの実行は、コマンドボタンで別のフォームを開いています。
(IIfでは、エラーが出ているのか、チェックを入れた時『~キャンセルされました』と出ます。
IIf(…,…,IIf(…,…,…)) という感じで書きました。)
Switchの時のクエリの抽出条件の式は、次のような感じです。
Switch([Form]![チェックボックス]=True,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*" Or Is Null,[Form]![チェックボックス]=False,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*")
( Like の前の『([テーブル名].[フィールド名])』は、式をビルドすると、勝手に追加されてきます。)
このようなことはできないのでしょうか? 別の方法が必要でしょうか?
すみませんが、教えてください。宜しくお願い致します。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
チェックボックスが3値(True/False/Null)をとる設定?
>コマンドボタンで別のフォームを開いています。
where条件を持つテキストボックスを配置(運用時は非表示にする)
クリックで検索実行するように作ると考えやすいかも。
別フォームが使用するクエリは、上記のwhere条件を持つテキストボックスを参照させる。
No.4
- 回答日時:
たぶん、「アクセス チェックを入れたキーワードで絞り込み」という
標題のページだったと思うのですが、先ほど見たらページがなくなって
いました。質問はこのページの内容に即したものだと思うのですが、
一応、ページをコピーしていたので内容を見ながら、ちょこちょこ
作ってみたのですが。
肝心のページがなくなっているので、コードを表示しようかどうか
迷っているのですが、どうしましょう?????
なにせ、コードの量が多いので、ひょっとしたら説明も含めると
2ページくらいになるかもしれません。一応、必要なことは
入っています。
どうしましょう????
この回答への補足
piroin654様、誠に申し訳ありません。
半年経過していますね。すみません。
考えていただいてありがとうございます。
パソコンの入れ替えなどがあって、バタバタしていたため、
確認が遅くなってしまいました。
『遅い』というレベルではありませんが…。
その間に、この質問も消えたようです。
もし、まだ、作っていただいたコードをお持ちであれば、
お送りください。お待ちしております。
メールアドレスなどが必要であれば、お知らせします。
よろしくお願いします。
No.3
- 回答日時:
> しかし、キーワードで『含む』選択をしているフィールドが
> 他にもたくさん(このほかに4~5フィールド)あって…。
こういうことを後からいわれても困るんですよね。
フィールド数が多い場合は、やり方を変える必要がありますので。
もちろん、どんな複雑な WHERE条件でも、スラスラ書けるなら普通にクエリでかまいませんが、
条件が追加になった場合など、泣きたくなると思います。
あと、何らかの事情で、何が何でも、クエリでなければいけない場合、
これでも、複雑なら、動的に SQL を書き換えてしまうこともあります。
フォームで、抽出するには
・クエリのWhere条件 を使用。
・フォームのフィルタを使用。
・レコードソースを書き換える。
などありますが、
条件の組み合わせが多くなる場合は フィルタ を使うのが普通だと思います。
具体的な方法はこちらを参考に。
複数条件の抽出フォームの設計 その1
http://hatenachips.blog34.fc2.com/blog-entry-129 …
下の、「関連してそうな記事」の
複数条件の抽出フォームの設計 その2
複数条件の抽出フォームの設計 その3
にも目を通すことをお勧めします。
申し訳ありません。説明不足でした。
頂いたページについて、よく読んで、勉強します。
大変お手数をおかけしました。ありがとうございました。
No.2
- 回答日時:
No.1 です。
肝心なところが間違っていましたね。 (^^;
> 2.[チェックボックス] がオフ であって、[フィールド名] が Null であるもの。
2.[チェックボックス] がオン であって、[フィールド名] が Null であるもの。
SQL は 合っています。
なお、今回のケースでは影響ありませんが
フォームのチェックボックスに、既定値(大抵の場合 「False」 ) を設定しておかないと
誤動作する場合があります。
No.1
- 回答日時:
条件を整理すると、ずっと単純になり、
IIf も Switch も不要になります。
[コンボボックス] の部分一致 は、[チェックボックス] の値と無関係です。
ですから、[フィールド名] の抽出条件は
1.[コンボボックス] と部分一致するもの。
2.[チェックボックス] がオフ であって、[フィールド名] が Null であるもの。
このいずれかを満たすものです。(OR 条件です。)
SQL なら
SELECT フィールド名
FROM テーブル名
WHERE (フィールド名 Like "*" & [Forms]![F検索]![キーワード] & "*") OR
((フィールド名 Is Null) AND ([Forms]![F検索]![チェックボックス]=True))
※抽出条件を入力するフォーム名が 「F検索」 の場合です。
ご自分のフォーム名に修正してください。
お礼が遅くなりました。すみません。
ご回答ありがとうございます。
説明して頂いた意味は、なんとなく分かりました。
SQL文も『なんとなく』分かりました。
しかし、キーワードで『含む』選択をしているフィールドが
他にもたくさん(このほかに4~5フィールド)あって…。
他のフィールドは、とりあえず、
今は、チェックボックスを使わないのですが、
フィールド数が多く、降順とかもあって、
アクセスでSQL文を見ると、目がチカチカします(苦笑)。
そこで、この教えて頂いた文を挿入できるものであれば、挿入の仕方を教えてほしいのですが…。
現在のSQL文のイメージは、
SELECT フィールド名,フィールド名,フィールド名,…
FROM (( …INNER JOIN…ON… LEFT JOIN…ここはわけが分かりません(苦笑)。省略です。
そして、
WHERE
ここからは、Like "*" & コンボボックス & "*" Or Is Null…をANDでつなぐ文が連なっていて、
最後に降順のORDER BY…という感じです。
ここに挿入することだと思うのですが…。
『( )』の付け方など、イメージだけでも結構です。
もう少し教えていただけないでしょうか。
または、クエリの中で何とか処理できる方法があると
助かります。宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
クエリで出来た表にチェックボックスを追加する
その他(Microsoft Office)
-
access2019 チェックボックスと連動したクエリ抽出条件について
Access(アクセス)
-
Access チェックボックスを利用した絞込検索のクエリ記述
その他(Microsoft Office)
-
-
4
ACCESSのクエリー抽出条件にIIFを使用して
Access(アクセス)
-
5
アクセスVBAのMe!と[ ]
Access(アクセス)
-
6
ACCESS チェックしたものを 印刷したい
Access(アクセス)
-
7
チェックボックスにチェックが入った後の挙動
Access(アクセス)
-
8
access2000:フォームで入力した内容を新規レコードにコピー
その他(データベース)
-
9
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
10
AccessクエリでYes/No型データの抽出
Access(アクセス)
-
11
ACCESS VBA テーブルデータにYES/NO
Visual Basic(VBA)
-
12
テキストボックス入力後、警告メッセージを表示し、フォーカスを移動させない方法について
Access(アクセス)
-
13
yes/no型のチェックができない(アクセス2003)
Access(アクセス)
-
14
Access2013 レポートを印刷するために開いた、レポートビューをVBAで閉じる方法を教えて。
その他(Microsoft Office)
-
15
ACCESS クエリで重複データを最新の1件だけ表示
Access(アクセス)
-
16
access クエリ yes/no型のクエリの抽出の記述を教えて下さい。
Access(アクセス)
-
17
Accessを開きなおすとテキストボックスの値がエラー#Name?になる
その他(データベース)
-
18
複数条件検索について
Access(アクセス)
-
19
チェックボックスのON OFFでの切替について
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
access vbaでフォームを開くと...
-
アクセスで教えてください。 電...
-
docmd.gotorecordを起動するには
-
accessでlaccdbファイルが削除...
-
「テキストデータで送ってくだ...
-
レポートの印刷を一括ではなく...
-
Accessのルックアップ
-
Accessデータベースを開くと同...
-
Access VBA を利用して、フォル...
-
Access DLookup vbaで条件を2件...
-
Accessのテキストボックスの入...
-
ACCESS 長い数字のクエリをする...
-
Access フォーム上のテキストボ...
-
Arduinoで温湿度と時刻を1分ご...
-
Accessのレポートについて
-
Accessフォームの配色テーマを...
-
Accessのクエリの印刷設定
-
Accessデータベースに含まれる...
-
アクセスで、実行時エラー3075 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセス2000でデータ抽出...
-
Accessクエリで特定の行を削除...
-
Access2007でSQLの複数列副問い...
-
Accessのクエリーのゼロデータ...
-
Access クエリで連結する文字...
-
access2019 チェックボックスと...
-
Accessのデータの一部を削除す...
-
アクセスのフィルタ nullにつ...
-
Access Left$関数で全角半角が...
-
SQLのLIKE検索で清音と濁音/半...
-
Access:固定長文字列ファイル...
-
accessで空白の時の抽出
-
accessであるデータを抽出でき...
-
ACCESS クエリ 抽出条件が多い場合
-
access(アクセス):パラメータ...
-
アクセスで任意の件数を抽出す...
-
Accessクエリで年月フィールド...
-
Access からのラベル作成時、一...
-
Accessのクエリで1フィールドの...
-
Accessの外部結合プロパティに...
おすすめ情報