プロが教えるわが家の防犯対策術!

アクセス初心者です。
現在アクセス2000、MEにてシステム作成中です。

業務報告書を作っています。
メインフォームに2つのタブを作成。
1つのタブに3種類のサブフォーム(別々のクエリ)を表示しています。
現在は全てのデータ件数を表示していますが、これを期間指定して、その期間だけの件数を表示させるようにしたいのです。

今まで試してみた結果です。
考え方(1)パラメータとして入力
 各クエリにbetweenパラメータとして入力
 ⇒これは、3つのクエリ×2があるので入力を促す同じ処理が何回も表示され、とても使えませんでした。

考え方(2)メインフォームに非連結テキストボックスを作成して、それを参照
 ⇒まず、終了年月日のイベント(更新後処理)にサブフォームを再クエリ(サブフォームのクエリには、メインフォームの開始と終了範囲をbetweenにて抽出)
  ⇒⇒すると、そのままでは表示されず、デザインビューの切り替えなどを行うと表示されます。
そのために、マクロ(再クエリの後)に「オブジェクトの再描画」でこのサブフォームを再表示するようにしましたが、結果は同じです。

現在このような状態です。
マクロは分りますが、VBAはほとんど分らない状態です。

質問1 パラメータ指定の場合、各クエリに1回のパラメータを伝えられる方法があるのでしょうか?

質問2 再クエリしたこのデータをきちんと表示する方法は?

どんな操作方法が良いのかはわかりません。
他に簡単でわかりやすい方法があれば、教えてください。どなたかよろしくおねがいします。

また、同じようにレポートも出力します。
同様の形式です。こちらも変更の予定です。
ですから、そのことを考えると、1回のパラメータで各クエリに伝えられるのがいいのですが・・・

A 回答 (2件)

>現在アクセス2000、MEにてシステム作成中です。


同じ環境です。

本来なら、考え方(2)メインフォームに非連結テキストボックスを作成して、それを参照で良いと思います。
ただし、最近、同じようなことをしたのですが、
フォームの再クエリでは出来ませんでした。
Access2003,WindowsXP の環境では、うまく動きました。

ということで、環境に依存するので(SPの当たり方とか)、
再クエリはやめて、Filter を使って実現しました。
クエリの抽出条件には何も記述せず、
フォームの、例えばボタンのクリックイベントに
With Me.サブフォームコントロール名.Form
.Filter = "受注日 Between #" & Me.開始 & "# AND #" & Me.終了 & "#"
.FilterOn = True
End With
のような感じで。

レポートの方は再クエリの必要はないので、
最初から(2)の方向で良いと思います。
    • good
    • 1
この回答へのお礼

御礼が遅くなり申し訳ありません。m(__)m
いろいろ試してみました。

 結果詳細は、NO1の回答者の方に記入させて頂いております。結局はマクロの再クエリでも可能でした。私の初歩的なミスでお手数をおかけしました。m(__)m

 今回はFilterについては使用しておりませんが、必要な機能ですので、参考にさせていただいてまた勉強します。ありがとうございました。m(__)m

お礼日時:2006/07/20 10:49

タブコントロール内にサブフォームを埋め込んだことは無いのですが



Forms!メインフォーム名!サブフォーム名.Form.Requery
とか
Me!サブフォーム名.Form.Requery
で出来ませんか?
    • good
    • 0
この回答へのお礼

御礼が遅くなり申し訳ありません。m(__)m
いろいろ試してみました。

結局今回はレポートの抽出もあるので、期間抽出用の別画面(ダイアログ)を作成しました。
 各クエリには、この画面の条件をWhere条件として入れ、ボタンイベントに各フォームやレポートを開くようにしました。(どうしても再クエリができず・・・)

 ところが後から分った事ですが、再クエリする際のコントロール名ですが、サブフォームする際のプロパティの「名前」の部分になるのですね。実はテストしていたサブフォームだけ、プロパティの名前とソースオブジェクト名が違っていたのです。どうやら、この名前が違っていてうまくいってなかっただけのようです。マクロの再クエリでもできました。
 ありがとうございました。m(__)m

お礼日時:2006/07/20 10:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!