Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Access 2003)
フォームに2つのオプショングループを設置したい
投稿日時: 19/04/14 19:33:29
投稿者: namidaneko

またお力かしていただきたいです。
今回もよろしくお願いいたします。
 
  
フォームに2つのオプショングループを設置し、
その選択肢によって条件分岐したいです。
  
1つの場合には、select caseで分岐できたのですが、
初心者につき、2つの場合の構文に関して書き方がわかりません。
たくさん調べたのですが、ヒントを見つけられず、アドバイスいただけると幸いです。
  
  
  
●クエリ
  
・クエリ@
・クエリA
  
●フォーム
  
オプショングループ1
・ボタン1
・ボタン2
  
オプショングループ2
・ボタンA (クエリ内フィールド"'果物"より抽出)
・ボタンB(クエリ内フィールド"果物"より抽出)
・ボタンC(クエリ内フィールド"野菜"より抽出)
・ボタンD("ボタンA""ボタンB""ボタンC"に該当しない全てのデータを抽出)
  
・検索ボタン
  
●レポート
・レポート@
・レポートA
  
  
  
フォームの"オプショングループ1"内、
"ボタン1"or"ボタン2"に選択肢によって開くクエリを変え、
その開いたクエリに"オプショングループ2"内
4つのボタンの選択肢から抽出条件を指定後、
検索ボタンでレポートを開きたい。
(レポートはオプショングループ1で選択した、クエリ@orクエリAによって分岐)
  
"オプショングループ1"内の選択肢は必ずいずれか1つです。
"オプショングループ2"内の4つの選択肢は、
必ずしも1つとは限りません。
(1つの場合もありますが。)
"ボタンA"と"ボタンB"と"ボタンC"のように複数選択したい場合もあります。
  
やりたいことが複雑すぎて全くどうしたら実現できるか、わからない状況です。
  
ヒントをいただけないでしょうか。
よろしくお願い致します。

回答
投稿日時: 19/04/15 10:13:02
投稿者: sk

引用:
"オプショングループ1"内の選択肢は必ずいずれか1つです。
"オプショングループ2"内の4つの選択肢は
必ずしも1つとは限りません
(1つの場合もありますが。)
"ボタンA"と"ボタンB"と"ボタンC"のように複数選択したい場合もあります

オプショングループは 2 つ以上の選択肢のうち
いずれか 1 つのみを選択させる場合に使用する
コントロールですので、少なくともそのケースだと
[オプショングループ2]は要りません。
 
オプショングループとリンクしない、独立した
チェックボックス/オプションボタン/トグルボタン
(と、それぞれにリンクしているラベル)が
4 つ( 4 組)あればよいはず。
 
引用:
(レポートはオプショングループ1で選択した、
クエリ@orクエリAによって分岐)

・[クエリ@]と[クエリA]はそれぞれどのようなクエリなのか。
 (それぞれの SQL ビューの内容を明記されることをお奨めします)
 
引用:
フォームの"オプショングループ1"内、
"ボタン1"or"ボタン2"に選択肢によって開くクエリを変え、
その開いたクエリに"オプショングループ2"内
4つのボタンの選択肢から抽出条件を指定後、
検索ボタンでレポートを開きたい。

引用:
・ボタンA (クエリ内フィールド"'果物"より抽出
・ボタンB(クエリ内フィールド"果物"より抽出
・ボタンC(クエリ内フィールド"野菜"より抽出
・ボタンD("ボタンA""ボタンB""ボタンC"に該当しない全てのデータを抽出)

どのテーブルどのフィールドの値がどのような値であるレコードを
 抽出したいのか。

投稿日時: 19/04/17 10:42:56
投稿者: namidaneko

SQLを貼ろうと試みたのですが、
あまりにも長すぎる&複雑なためちょっと難しいてす…
(海外のシステムとリンクしております)
 
・ボタンA (クエリ内フィールド"'果物"より抽出) 数値

・ボタンB(クエリ内フィールド"果物"より抽出) 数値

・ボタンC(クエリ内フィールド"野菜"より抽出) 数値

・ボタンD("ボタンA""ボタンB""ボタンC"に該当しない全てのデータを抽出)数値
 
クエリ内各フィールドより、全て数値で抽出します。
わかりづらくすみません。
よろしくお願いいたします。

回答
投稿日時: 19/04/17 16:04:26
投稿者: sk

引用:
SQLを貼ろうと試みたのですが、
あまりにも長すぎる&複雑なためちょっと難しいてす…

ならば正確な回答は致しかねます。
 
引用:
・ボタンA (クエリ内フィールド"'果物"より抽出) 数値
 
・ボタンB(クエリ内フィールド"果物"より抽出) 数値
 
・ボタンC(クエリ内フィールド"野菜"より抽出) 数値

「あるテーブル/クエリに['果物], [果物], [野菜]という名前の
3 つのフィールドがあり、それらのデータ型は全て数値型である」
という意味でしょうか。
 
仮にそうだとして、例えばオプションボタン[ボタンA]の値が
True である場合、['果物]の値が具体的にどのような値である
レコードを抽出したいのでしょうか。
 
引用:
クエリ内各フィールドより、全て数値で抽出します。

ただ「数値で抽出」とだけ言われても、各フィールドに格納されている値が
何を示す数値であるのか、どのような条件に該当するレコードを
抽出したいのかが不明瞭です。
 
もし何らかの金額や個数を示す値であるなら、「 1000 円以上」とか
「 50 個以下」などといった具体的な抽出条件が明記されないことには、
どのような比較演算子を用いて、どのような値(リテラル/式の結果/フィールド)と
比較すべきなのかも判りません。
 
引用:
・ボタンD("ボタンA""ボタンB""ボタンC"に該当しない全てのデータを抽出)

少なくとも「['果物], [果物], [野菜]以外のフィールド」という指定は
クエリ( SQL )では無理です。
 
上記以外の意味、例えば「ある 1 つのテキスト型のフィールドがあり、
それぞれのレコードには "'果物", "果物", "野菜" などの文字列が
格納されている」といった話ならまた別ですが。

投稿日時: 19/04/18 22:10:59
投稿者: namidaneko

ならば正確な回答は致しかねます。
 
→承知致しました。
会社のデータのためどうしても貼ることが難しいです。

「あるテーブル/クエリに['果物], [果物], [野菜]という名前の
3 つのフィールドがあり、それらのデータ型は全て数値型である」
という意味でしょうか。
 
→クエリ内フィールドに、「果物※数値」と「野菜※数値」、その他があります。
 
仮にそうだとして、例えばオプションボタン[ボタンA]の値が
True である場合、['果物]の値が具体的にどのような値である
レコードを抽出したいのでしょうか。
 
ただ「数値で抽出」とだけ言われても、各フィールドに格納されている値が
何を示す数値であるのか、どのような条件に該当するレコードを
抽出したいのかが不明瞭です。
 
もし何らかの金額や個数を示す値であるなら、「 1000 円以上」とか
「 50 個以下」などといった具体的な抽出条件が明記されないことには、
どのような比較演算子を用いて、どのような値(リテラル/式の結果/フィールド)と
比較すべきなのかも判りません。
 
→金額等ではなく、数値です。
社員コードや品番コードのようなイメージです。
「123456」のような感じです。
計算式や。>50のような感じではなく、
シンプルにコードに該当するデータを抽出したいです。
コードなので、小数点等もつきません。

 
・ボタンD("ボタンA""ボタンB""ボタンC"に該当しない全てのデータを抽出) [/quote]
少なくとも「['果物], [果物], [野菜]以外のフィールド」という指定は
クエリ( SQL )では無理です。
 
上記以外の意味、例えば「ある 1 つのテキスト型のフィールドがあり、
それぞれのレコードには "'果物", "果物", "野菜" などの文字列が
格納されている」といった話ならまた別ですが
 
→クエリの中のフィールドに、
「果物※数値」「果物※テキスト」「野菜※数値」
(野菜は区分コードのようなものなので、テキストはありません。)その他があります。
ボタンAを押した場合、「果物」から、「234564 りんご」を抽出したい、
ボタンBを押した場合、「野菜」から、「02」の区分を抽出したい、
ボタンCを押した場合、「果物」から、「345678 ばなな」を抽出したい、
ボタンDを押した場合、ボタンA、ボタンB、ボタンCに一致しない全てを抽出したいという意味です。

回答
投稿日時: 19/04/19 10:36:12
投稿者: sk

引用:
クエリ内フィールドに、「果物※数値」と「野菜※数値」、その他があります。

引用:
「果物※数値」「果物※テキスト」「野菜※数値

その「※数値」や「※テキスト」というのは
フィールドの名前の一部なのでしょうか。
 
それとも、フィールドのデータ型を示しているのでしょうか。
 
引用:
→金額等ではなく、数値です。
社員コードや品番コードのようなイメージです。
「123456」のような感じです。

そういう場合は普通に「コード」や「番号」と表現された方が
伝わりやすいと思います。
 
ただ「数値」という包括的な表現を繰り返されても、
「フィールドのデータ型が数値型である」のか
「フィールドの値が数字のみで構成された文字列である」のか、
その意味が正確に伝わってきません。
 
「あるフィールドのデータ型がテキスト型であること」と
「(あるレコードの)そのフィールドの値が数字のみで構成
されている文字列であること」は両立し得ます。
 
引用:
「野菜※数値

引用:
ボタンBを押した場合、「野菜」から、「02」の区分を抽出したい

例えば上記の説明については、
「テキスト型のフィールド[野菜]の値が "02"(という文字列データ)」とも
「数値型のフィールド[野菜]の値が 2 (という数値データ)」とも
解釈することが出来てしまいます。
(少なくとも、数値型のフィールドに "02" の "0" は格納されません)
 
正しい結果を得るクエリを作るには、それぞれのテーブルの定義内容
(各フィールドの名前/データ型、主キーの設定)や、テーブル間の
リレーションシップ、そして選択クエリによって得ようとしている
レコードの抽出条件を正しく把握する必要がありますので、
まずその説明に出来る限り努めていただきたく存じます。
 
引用:
ボタンAを押した場合、「果物」から、「234564 りんご」を抽出したい

・テキスト型のフィールド[果物]の値が "234564 りんご" である
 レコードを抽出したい。
 
引用:
ボタンBを押した場合、「野菜」から、「02」の区分を抽出したい

・テキスト型のフィールド[野菜]の値が "02" である
 レコードを抽出したい。
 
引用:
ボタンCを押した場合、「果物」から、「345678 ばなな」を抽出したい

・テキスト型のフィールド[果物]の値が "345678 ばなな" である
 レコードを抽出したい。
 
というふうにしか(今のところは)解釈出来ませんが、
上記の通りで間違いないでしょうか。

トピックに返信