ここ数日、試行錯誤やgoogle検索したのですが、分からないためヒントを下さい。
Accessで、チェックボックス(Yes/No)を含むテーブルがあります。
検索フォームを作成し、ここにチェックを入れることで、テーブルから一致するデータを抽出したいです。
ただし、「Yes」のみが有意なデータで、「No」は無視したいです。
チェックA チェックB チェックC
1 Yes No No
2 Yes Yes No
3 Yes Yes Yes
(得たい結果)
チェックAをYesで検索…1,2,3
チェックA+BをYesで検索…1,2
チェックA+B+CをYesで検索…3
単に検索フォームのチェックボックスの値を「抽出条件」に入れますと、「No」まで一致するように抽出するので意図と違います。
チェックを入れなかった項目については無視して、クエリを働かせられればよいのですが...。
どのようにクエリを記述したらよいのでしょうか。
フォームにあるチェックボックスからのデータの取得や抽出結果のフォームへの表示などはできています。
よろしくお願いいたします。
No.8ベストアンサー
- 回答日時:
> この「資格」(チェックボックス)は30項目あります。
> そもそものテーブルデータの持ち方が悪ければ、まだ検討できるタイミングではありますが、いかがなものでしょうか。
資格マスタ と 資格取得情報 のテーブルを作るのが本筋でしょうね。
今回の抽出方法は難しくなるとは思いますが。
テーブルデザインの件に関しては、このスレへのリンクを張って
こちらで質問されてはいかがでしょうか?
http://www.accessclub.jp/
以下、現在のテーブルのままでの抽出条件の回答です。
「チェックA」の抽出条件欄に
<= [Forms]![検索フォーム]![チェックボックスA]
(先頭の「<」も書くのですよ。引用の意味ではありません。)
「チェックB」「チェックC」・・・も同様に。
TRUE が -1、 FALSE が 0 であることを利用しています。
この回答への補足
なぜ「=>」+「抽出条件」で抽出できるのか落ちてないのですが、
とにかく自身が望む結果が得られました。
熟練の方からすればスマートなやり方ではないのでしょうが、
今回はこれで進めたいと思います。
ありがとうございました!
No.12
- 回答日時:
#11 の回答を一部訂正させて頂きたく、記入させて頂きます。
bonaron殿の提示された回答で、質問者さんの希望する条件を満たしております。
私の指摘が間違っており、bonaron殿の条件式が正しいと訂正させて頂きます。
>>bonaron殿
申し訳ありません。 確認不足でした。
この回答への補足
ありがとうございました!
私自身のスキルが低く、うまく説明できておらずお時間取らせました。
ベン図を描きながら考えておりましたが条件とデータのYesNoが混乱しがちで
慣れないことはするものではないなといまさら思っています。
とにかく、目の前の問題は解決できそうです。
(皆様)
今回はありがとうございました。
まだ制作物は半ばなので、またご質問させて頂くかもしれませんが、
よろしくお願い致します。
No.11
- 回答日時:
#4 再・再・再回答です。
(笑)回答者さんらの「善意に満ちたアドバイス」を読み、自分も参加できていることが嬉しく思います。
ただ、その善意が無駄にならない様、あえて質問者さんが間違った方向へ向かわないためのコメントをしたいと思います。
決して、他の回答者さんへの批判ではなく、議論する気も有りませんので、皆様のご理解を頂きたいと思います。 m(__)m
>bonaron殿
個人的な経験から判断では、テーブルの設計に問題はなく、そのままの項目設定で良いと考えますが、「それをどの様にクエリで抽出するか?」が要点だと考えます。
(ちなみに私もご紹介サイトの利用者です。 便利ですよね。)
また、bonaron殿のご提示した方法では、チェック項目が「複数Yes指定」された場合には「And条件となる」ため、質問者さんが意図する「Yes以外は意識しない」という条件での抽出結果には「なりません」。
仮に「または」という「Or条件」で指定する場合、なおさら希望条件での抽出は出来ないため、ご提示の回答には不備があると思えます。
>piroin654殿
丁寧&親身な複数回答で好感を持っておりますが、気の毒なことに、質問者さんの記入した条件の「矛盾」をきちんと理解されておられないご様子です。
(#4回答をご覧下さい。#9回答でも未だ勘違いされておられます。)
また、チェック項目数による「条件の組み合わせ数の膨大さ」については、#1への補足を(30項目)読んだ時点で解りきった話です。
この「膨大な組み合わせがある条件式」でのデータ抽出を、いかに効率的&実用的&運用が容易・・・に沿ってと考えるならば、「一つのクエリで条件式を提示する」ことはとても困難であることがご理解頂けると思います。
質問者さんは、
とりあえず「目の前の抽出手段」をお求めですが、
実際は、
「運用」までを考慮することが「必要」だと考えます。
勿論、(失礼ながら)質問者さんの「説明不備(&間違い)」を補いながら、もうちょっとマクロな視点での助言をするというのが、「皆さんの善意」だと感じましたので補足回答させて頂きます。
No.9
- 回答日時:
質問に答えていただいてからいろいろ
考えてみましたが・・・・・・・・・。
チェックがONになっている組み合わせと同じ
パターンのレコードを表示するのは簡単で
すが、とんでもない勘違いをしていないなら、
問題はその先です。
チェックが三つの場合、
(得たい結果)
チェックAをYesで検索…1,2,3
チェックA+BをYesで検索…1,2
チェックA+B+CをYesで検索…3
これ以外に
チェックBをYesで検索
チェックB+CをYesで検索
チェックCをYesで検索
の検索組み合わせがあります。そこで
まず30項目あるというこでその組み合わ
せはどのくらい有りえるのかと計算して
みました。重複を取り除いて計算すると
とんでもない個数がでてきました。クエ
リのネストどころの数字ではありません。
かといってクエリをその都度発行すると
いう形をとっても発行回数は、!!!!
!!!!!です。
たとえば項目が10であったとします。
10の項目のうち一つをもっている
組み合わせは10。2個は45。3個は120
・・・・。このような数です。
それぞれの組み合わせについてYesで
検索しなければなりません。
いずれにしてもありえる組み合わせは
希望の結果をだすためにはかなりの
壁です。テーブルの構成変更などでは
到底及ばない大きな壁です。
どちらかというとハノイの搭の円盤に
ハノイの搭を乗せている感じです。
業務で必要なことなのでしょうから
求められるものなら求めたいでしょう。
あきらめるのも何ですから、なんらかの
方法を考えてみます。他の方お知恵を
よろしく。
No.7
- 回答日時:
#4 再・再回答です。
先の「再回答」をしておいてなんですけど・・・
Accessで「データ抽出機能」を実現させるよりも、
ExcelでDBを参照し「オートフィルタ」を使う運用の方が数倍「効果的&実用的」では?
総合的な判断では、この方が良い気がしています。
この方法について皆で考える方が「実用的」な回答になりそうです。
f(^^;)
No.6
- 回答日時:
#4 補足を受けての再回答です。
クエリの記述というよりも、手法の紹介です。
スッキリとした・・・とは決して言えませんが、
・チェック項目(資格?)の追加・削除時のメンテ
・管理者(メンテナンスする者)のAccess知識が低くともOK
(・デバッグが段階的に行える)
⇒継続運用が容易
を考慮した手法です。
概要としては、
「チェック項目の数だけクエリをつくり、クエリをネストさせる」
というものです。
一つのクエリに記述される「抽出条件」は、一つのチェックボックスが「True」のみで、抽出する項目は「レコードに含まれる項目全て」となります。
※このクエリを実行することで、一つのチェック項目に該当するレコード全てが抽出でき、他のチェック項目の内容を意識しない(=質問の条件に該当)漠然とした抽出が出来ます。
このクエリを「抽出元」とし、次のチェック項目(例えばB)が「True」のみ・・・
というように「クエリをネスト」させていきます。
こうすることで、ご希望の条件でレコードを(段階的に)絞り込むことが可能であるため、(他の項目を意識しないで)検索画面の条件を満たすことが可能です。
最終的に出力させたい「リスト」やその他フォームの「元データ」は、「ネストさせたクエリの最後」を指定するだけで、連結動作することが出来ます。
メンテナンス時においては、
項目追加の場合、最後のクエリを追加し、追加したクエリを「元データ」とした出力先に変更する。
項目削除の場合、削除したクエリの「次のクエリの抽出元」をつなぎかえる。
この「定型手順」でAccess知識が低い方でも(手順書&説明で)対応できると考えます。
最大の問題は、「処理スピード(動作スピード)」となります。
PCのスペックや、レコード数、その他の要因が推測出来ます。
とは言えご説明の例から推測すると、実行時の処理速度についてはそれほど意識しない構造でも良いと推測いたします。
例えば、派遣業や紹介業などで「登録人材を条件で抽出する」ことが重要であり、この検索を行う「頻度やスピード」はそれほど重要視しなくても良いとの推測です。
こういった場合は「運用+メンテナンス」を考慮する方が重要と考えました。
クエリの抽出条件やSQLを「複雑」な条件とするより、「視覚的に簡潔」にする方が
、Accessを利用する効果があると考えます。
No.5
- 回答日時:
ご返答いただきありがとうございます。
クエリでの表示のみでいいということはわかりました。それと
かんじんなことをお聞きするのを忘れていましたが、
フォームのチェックボックスはいくつありますか。
テーブルと同じ数あると考えてよろしいですか。
個数によっては方法を変える必要がでてきます。
この回答への補足
ありがとうございます。
検索フォームのチェックボックスとテーブルの数は同じです。
より具体的に、補足を下の方の回答に書きましたので、そちらもあわせてご確認下さい。
説明することで私自身も状況が整理できそうです。
よろしくお願いいたします。
No.4
- 回答日時:
ご説明の条件に矛盾があるように思えるため、補足要求したいと思います。
>チェックA+BをYesで検索…1,2
両項目が「共にYes」である条件検索なのに・・・、
2・3(=両項目がYes)を結果とするのではなく、
Bが「Yesでは無いものを検索しなければならない」というのは・・・?
検索画面の「指定条件と矛盾する結果」が欲しいということになっている様子です。
>ただし、「Yes」のみが有意なデータで、「No」は無視したいです。
これをふまえると・・・
・チェックAのみがYesと指定された場合、
⇒得たい結果は1・2・3
≒チェック項目B・Cの内容は無視し、条件に加えない。
≒AがYesでありさえすれば良い。
・チェックA・Bの2項目がYesと指定された場合、
⇒得たい結果は2・3
≒チェック項目Cの内容は無視し、条件に加えない。
≒A・BがYesでありさえすれば良い。
・チェックA・B・CすべてがYesと指定された場合、
⇒得たい結果は3のみ
≒指定した条件項目と、その内容(Yes)の条件を全て満たすもの
というのが、本来の質問の「条件」では無いでしょうか?
また、チェックBのみの指定や、チェックCのみとか、B・Cのみ、A・Cのみといった「別の組み合わせ」条件についてのご説明も補足しないと、実用時にありえる入力をカバーできないため、SQLやその他の手法を提示することは出来ないと考えます。
上記の矛盾点(?)と足りないと思える条件を補足して頂ければ、何らかのお手伝いが出来ると考えています。
この回答への補足
ありがとうございます。
説明がつたなく、すみません。
ご指摘のとおりです。
具体的にはチェックA,B、Cというのは、ある資格とお考え下さい。
「資格Aを持っている人」「資格Bを持っている人」「資格Aかつ資格Bを持っている人」「全部持っている人」という具合に任意の組み合わせで柔軟にデータを取り出したいのです。(ただ「資格Aを持っていて、かつ資格Bを持っていない」という検索は不要で、資格Aを持っていさえすれば...です。)
※excelの「オートフィルタ」で目的の項目だけ選ぶ作業に近いイメージです。
この「資格」(チェックボックス)は30項目あります。
そもそものテーブルデータの持ち方が悪ければ、まだ検討できるタイミングではありますが、いかがなものでしょうか。
No.3
- 回答日時:
テーブルのフィールド名を「チェックA」「チェックB」「チェックC」と、
フォーム名を検索フォーム、チェックボックスをA,B、Cと仮定します。
クエリをSQLビューで見た時の WHERE 部分を書き換えます。
・・・・
WHERE IIF(([forms]![検索フォーム]![A]=True,[チェックA]=True,True) AND
チェックB用 AND チェックC用
※チェックA用が
IIF(([forms]![検索フォーム]![A]=True,[チェックA]=True,True)
となります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Access(アクセス) Accessに関する質問です。 クエリーQ出勤 からフォームF出勤を作成 フォームは分割フォームで作 1 2023/05/26 08:57
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- JavaScript jquery 診断コンテンツにチェックボックスを付けたいです 3 2023/01/19 18:31
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
access2019 チェックボックスと連動したクエリ抽出条件について
Access(アクセス)
-
access クエリ yes/no型のクエリの抽出の記述を教えて下さい。
Access(アクセス)
-
クエリで出来た表にチェックボックスを追加する
その他(Microsoft Office)
-
-
4
Accessでチェックボックスで抽出するには?
その他(ソフトウェア)
-
5
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
6
Accessチェックボックス 一度で複数のチェックを入力
Access(アクセス)
-
7
Accessクエリ 複数フィールドを対象に空白の場合は全件表示したい
Access(アクセス)
-
8
ACCESSでテーブルにあるチェックボックスを一括でYesにする方法を教えてください
Access(アクセス)
-
9
Access チェックボックスでチェックしたデータのみフォームで表示
Access(アクセス)
-
10
フォームで複数のチェックボックスからの抽出をしたい
Visual Basic(VBA)
-
11
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
12
選択したチェックボックスのみチェックを入れたいのですが
その他(データベース)
-
13
Access フォームからの入力結果をテーブルにすることはできない?
Access(アクセス)
-
14
Accessフォームが入力できません。
Access(アクセス)
-
15
Access 複数条件検索の設定が上手く行きません
Access(アクセス)
-
16
Accessレポートのチェックボックスを大きくする方法
Access(アクセス)
-
17
AccessクエリーでチェックボックスOnのものだけカウントしたい
Access(アクセス)
-
18
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
19
アクセス:Yes/No型→チェックいれたら、○"を表示。"
Access(アクセス)
-
20
Access チェックボックスを使ってレポートへの表示・非表示
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
PDFファイル/抽出許可され...
-
未審査請求包袋抽出表作成とは...
-
access クエリ yes/no型のクエ...
-
Excel 文字列から6桁の数値の抽出
-
ACCESSのクエリー抽出条件にIIF...
-
Access フォームコンボボック...
-
X-Ripperというフリーウェアに...
-
コンボボックス全ての値を取得...
-
ACCESS クエリ 条件以外のレ...
-
【AccessVBA】レコードセットOp...
-
「パラメータが少なすぎます。3...
-
アクセスのテキストボックスでO...
-
画像に対する輪郭線
-
AccessのWHERE句において、変数...
-
Access チェックボックスを利用...
-
Accessの選択クエリの抽出条件...
-
オートフィルタで特定日の抽出方法
-
アクセス 同じフィールド(テキ...
-
PCゲーム 音声 画像 抽出方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
PDFファイル/抽出許可され...
-
Excel 文字列から6桁の数値の抽出
-
「パラメータが少なすぎます。3...
-
ACCESSのクエリー抽出条件にIIF...
-
未審査請求包袋抽出表作成とは...
-
Access チェックボックスを利用...
-
【AccessVBA】レコードセットOp...
-
AccessのWHERE句において、変数...
-
X-Ripperというフリーウェアに...
-
access クエリ yes/no型のクエ...
-
アクセス 同じフィールド(テキ...
-
PDFファイルから特定の文字を検...
-
Accessの選択クエリの抽出条件...
-
エクセル関数で住所から丁目番...
-
ACCESS クエリ 条件以外のレ...
-
エクセル VBA メール本文に指定...
-
【Access】条件未入力時、全件...
-
コンボボックス全ての値を取得...
-
ACCESSのフォームからレポート...
おすすめ情報