Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2007)
一つのクエリに二つのフォーム
投稿日時: 18/06/04 07:37:12
投稿者: ゴマゴマ

お世話になります。
先日似た内容で質問させていただきましたが、続きで再度質問させていただきます。
 
先日の内容:例)クロス集計で作成した@フォーム1で5/31リンゴの数量2をクリックすると「txt納期選択」にテキストボックス名が代入され、Aクエリを介してBフォーム2が開く。「txt納期選択」にテキストボックス名を代入する方法を教えていただきました。
 
今回の質問:@フォーム1で一旦は納期の絞り込みをしましたがBフォーム2の「txt納期選択」でまたいろいろな納期で絞込みしたいという内容です。Aクエリ抽出条件の「または」の「納期」に[フォーム2]![txt納期選択]を入れ、再クエリしましたがフォーム1で選択した内容がそのままで反応がありません。他の投稿を調べましたが書かれている内容だけでは推理が追いつきませんでした。
 
以上、宜しくご教示下さい。
 

	@フォーム1				
	 納期:5月30日	納期選択:(txt納期選択)5/31←可視:いいえ
		 0	 1	 2	←クロス集計クエリのPIVOTで設定
	品名	5/30	5/31	6/1	←テキストボックスで納期(5/30)に+0,+1,+2することで計算
	リンゴ	 0	 2	 2	←数量
	みかん	 1	 0	 2	
	ぶどう	 1	 1	 2	
					
	Aクエリ				
		納期の抽出条件に1を設定したデザイン			
	品名	       数量	納期               受注番号	
抽出条件[フォーム1]![品名]       [フォーム1]![txt納期選択]		
または					
	Bフォーム2				
	5/31	リンゴのクエリ	納期選択:(txt納期選択)6/1←可視:はい
	品名	数量	納期	受注番号	
	リンゴ	 1	5/31     001	
	リンゴ	 1	5/31	 002	

回答
投稿日時: 18/06/05 10:01:49
投稿者: sk

引用:
今回の質問:@フォーム1で一旦は納期の絞り込みをしましたが
Bフォーム2の「txt納期選択」でまたいろいろな納期で絞込みしたいという内容です。

1. [品名]と[納期]の抽出条件をそれぞれ入力するための
   2 つの非連結テキストボックスを[フォーム2]の
   フォームヘッダーセクションに配置する。
 
2. [フォーム2]のレコードソースである選択クエリにおける
   抽出条件(パラメータ)として[フォーム1]ではなく
   [フォーム2]の(上記 1 で追加した)非連結テキストボックスの
   それぞれの値を渡すように設定しておく。
 
3. [フォーム1]側のマクロによって[フォーム2]が開かれた際、
   [フォーム1]の[品名]と[txt納期選択]の値を
   [フォーム2]の(上記 1 で追加した)非連結テキストボックスに
   それぞれ渡し、[フォーム2]の再クエリを実行させる。

回答
投稿日時: 18/06/05 17:56:25
投稿者: Suzu

抽出条件を2段階で設定したい。その為に、フォームを二つ用意します。
 
と言う話なのでしょうが、それらのフォーム1つで足りませんか?
 
 
条件をテキストボックスに入力しなければ、抽出条件として設定されない。
と言う構造にすれば良いのでは?
 
クエリでは、[Forms]![フォーム名]![コントロール名] でフォーム上のコントロールの値を参照できます。
 
納期フィールドの抽出条件に、[Forms]![フォーム名]![コントロール名] を設定すれば
コントロールに入力した値と合致するレコードを抽出できます。
 
以上/以下 や 超える/未満 は 不等号の組み合わせですね。
 
 
 
フォームのコントロールに値が入力されている時だけ抽出条件に加えたい場合
------------------------------------------------------------------------------------------------
演算フィールド:
 IIf(IsNull([Forms]![フォーム名]![コントロール名]),True,[納期]>[Forms]![フォーム名]![コントロール名])
 
抽出条件:True
 
とすれば、
・コントロールに値が入っていた場合、 その日付を超える値のレコードを抽出
・ に値が入っていない場合 そのコントロールは抽出条件に加えない
 
が実現できます。
------------------------------------------------------------------------------------------------
これらを組み合わせれば、
1クエリ で、 フォームの複数コントロールの値を参照し、レコードを抽出する クエリが作成可能ですよね。

投稿日時: 18/06/06 07:07:55
投稿者: ゴマゴマ

sk様 Suzu様
 
いつもご回答ありがとうございます。
今回sk様の案で進めたところ無事解決しました。Accessの機能を知っていることも大事ですが、問題を解決するためのアイディアを考えられることも大事だと思いました。
引き続きよろしくお願いいたします。