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

いつもお世話になっております。

クエリーは全く同じ内容ですが、
複数のフォームにパラメータを入力するユーザーインターフェースのため、ク
エリーを複数用意して、それぞれに
[forms]![F_TEST]![テキスト名]というパラメータを設定し、フォームの帳票やレポートの帳票に出力していま
した。

このクエリを一本にして、VBAから動的にパラメータを参照するフォームを指定
できないでしょうか?

よろしくお願いいたします。

A 回答 (2件)

再びmaruru01です。


既存のクエリもVBAのSQLステートメント化をお奨めします。
それを標準モジュールに、

Public Sub myRunSQL(Para As String)

  Dim SQL As String

  SQL = "(SQL文の前の方)" & Para & "(SQL文の後ろの方)"
  DoCmd.RunSQL SQL

End Sub

という風にそれぞれのクエリを各プロシージャにしておけば、どこからでも呼び出せるわけです。
すでに作ってあるクエリを書き直すのは面倒ですが、一度書いてしまえばあとは楽です。
また、まったく同じじゃないんだけど結構似てるというクエリは、プロシージャをコピーして名前と中身をかえてやればすぐ出来るわけです。
ちなみに私は、基本的には、クエリもマクロも使用せず、すべてVBAで書いています。
では。
    • good
    • 0
この回答へのお礼

お礼遅くなって申し訳ございません。
なるほど、これならコードが煩雑にならなくてすみますね。
勉強になりました。
本当にどうもありがとうございます。

お礼日時:2002/01/26 14:53

こんにちは。

maruru01です。
クエリというのは、要はSQLステートメントの実行ですから、VBAでSQLステートメントを記述して実行してやればいいと思います。
例えば、フォーム上にコマンドボタンでも置いて、そのクリックイベントに

Dim Para As String
Dim SQL As String

Para = [forms]![F_TEST]![テキスト名]
SQL = "(SQL文の前の方)" & Para & "(SQL文の後ろの方)"
DoCmd.RunSQL SQL

こんな感じです
ちなみにSQLステートメントは、クエリをデザインモードで開き、上部(テーブルが表示されているエリア)の何もないところで右クリックし、メニューの中の[SQLビュー]を選ぶと見られます。
そのSQL文では、適当に改行してありますが、VBAで書く場合は半角スペースでつなげればOKです。
また、最後の";"は要りません。
それと、VBAで変数をSQL文中に入れる場合は、例のように変数の前後でSQL文を切って、"&"でつなげてやらないといけません。
では。
    • good
    • 2
この回答へのお礼

とっても分かりやすい文で、どうもありがとうございました。

この他に、既存のクエリーに、パラメータだけを渡すようなことはできないのでしょうか。
クエリーの内容はまったく同じで、パラメータだけが異なるので。。。

すみませんが、もしお分かりになればご教授願いたいのですが。

よろしくお願いいたします。

お礼日時:2002/01/25 11:31

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A