- 締切済み
アクセス メインフォームの条件指定にてサブフォームを表示
アクセス初心者です。 現在アクセス2000、MEにてシステム作成中です。 業務報告書を作っています。 メインフォームに2つのタブを作成。 1つのタブに3種類のサブフォーム(別々のクエリ)を表示しています。 現在は全てのデータ件数を表示していますが、これを期間指定して、その期間だけの件数を表示させるようにしたいのです。 今まで試してみた結果です。 考え方(1)パラメータとして入力 各クエリにbetweenパラメータとして入力 ⇒これは、3つのクエリ×2があるので入力を促す同じ処理が何回も表示され、とても使えませんでした。 考え方(2)メインフォームに非連結テキストボックスを作成して、それを参照 ⇒まず、終了年月日のイベント(更新後処理)にサブフォームを再クエリ(サブフォームのクエリには、メインフォームの開始と終了範囲をbetweenにて抽出) ⇒⇒すると、そのままでは表示されず、デザインビューの切り替えなどを行うと表示されます。 そのために、マクロ(再クエリの後)に「オブジェクトの再描画」でこのサブフォームを再表示するようにしましたが、結果は同じです。 現在このような状態です。 マクロは分りますが、VBAはほとんど分らない状態です。 質問1 パラメータ指定の場合、各クエリに1回のパラメータを伝えられる方法があるのでしょうか? 質問2 再クエリしたこのデータをきちんと表示する方法は? どんな操作方法が良いのかはわかりません。 他に簡単でわかりやすい方法があれば、教えてください。どなたかよろしくおねがいします。 また、同じようにレポートも出力します。 同様の形式です。こちらも変更の予定です。 ですから、そのことを考えると、1回のパラメータで各クエリに伝えられるのがいいのですが・・・
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- m3_maki
- ベストアンサー率64% (296/460)
>現在アクセス2000、MEにてシステム作成中です。 同じ環境です。 本来なら、考え方(2)メインフォームに非連結テキストボックスを作成して、それを参照で良いと思います。 ただし、最近、同じようなことをしたのですが、 フォームの再クエリでは出来ませんでした。 Access2003,WindowsXP の環境では、うまく動きました。 ということで、環境に依存するので(SPの当たり方とか)、 再クエリはやめて、Filter を使って実現しました。 クエリの抽出条件には何も記述せず、 フォームの、例えばボタンのクリックイベントに With Me.サブフォームコントロール名.Form .Filter = "受注日 Between #" & Me.開始 & "# AND #" & Me.終了 & "#" .FilterOn = True End With のような感じで。 レポートの方は再クエリの必要はないので、 最初から(2)の方向で良いと思います。
- nicotinism
- ベストアンサー率70% (1019/1452)
タブコントロール内にサブフォームを埋め込んだことは無いのですが Forms!メインフォーム名!サブフォーム名.Form.Requery とか Me!サブフォーム名.Form.Requery で出来ませんか?
お礼
御礼が遅くなり申し訳ありません。m(__)m いろいろ試してみました。 結局今回はレポートの抽出もあるので、期間抽出用の別画面(ダイアログ)を作成しました。 各クエリには、この画面の条件をWhere条件として入れ、ボタンイベントに各フォームやレポートを開くようにしました。(どうしても再クエリができず・・・) ところが後から分った事ですが、再クエリする際のコントロール名ですが、サブフォームする際のプロパティの「名前」の部分になるのですね。実はテストしていたサブフォームだけ、プロパティの名前とソースオブジェクト名が違っていたのです。どうやら、この名前が違っていてうまくいってなかっただけのようです。マクロの再クエリでもできました。 ありがとうございました。m(__)m
お礼
御礼が遅くなり申し訳ありません。m(__)m いろいろ試してみました。 結果詳細は、NO1の回答者の方に記入させて頂いております。結局はマクロの再クエリでも可能でした。私の初歩的なミスでお手数をおかけしました。m(__)m 今回はFilterについては使用しておりませんが、必要な機能ですので、参考にさせていただいてまた勉強します。ありがとうございました。m(__)m