- ベストアンサー
VBAからクエリのパラメータを設定したいです。
いつもお世話になっております。 クエリーは全く同じ内容ですが、 複数のフォームにパラメータを入力するユーザーインターフェースのため、ク エリーを複数用意して、それぞれに [forms]![F_TEST]![テキスト名]というパラメータを設定し、フォームの帳票やレポートの帳票に出力していま した。 このクエリを一本にして、VBAから動的にパラメータを参照するフォームを指定 できないでしょうか? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
再びmaruru01です。 既存のクエリもVBAのSQLステートメント化をお奨めします。 それを標準モジュールに、 Public Sub myRunSQL(Para As String) Dim SQL As String SQL = "(SQL文の前の方)" & Para & "(SQL文の後ろの方)" DoCmd.RunSQL SQL End Sub という風にそれぞれのクエリを各プロシージャにしておけば、どこからでも呼び出せるわけです。 すでに作ってあるクエリを書き直すのは面倒ですが、一度書いてしまえばあとは楽です。 また、まったく同じじゃないんだけど結構似てるというクエリは、プロシージャをコピーして名前と中身をかえてやればすぐ出来るわけです。 ちなみに私は、基本的には、クエリもマクロも使用せず、すべてVBAで書いています。 では。
その他の回答 (1)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。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文を切って、"&"でつなげてやらないといけません。 では。
お礼
とっても分かりやすい文で、どうもありがとうございました。 この他に、既存のクエリーに、パラメータだけを渡すようなことはできないのでしょうか。 クエリーの内容はまったく同じで、パラメータだけが異なるので。。。 すみませんが、もしお分かりになればご教授願いたいのですが。 よろしくお願いいたします。
お礼
お礼遅くなって申し訳ございません。 なるほど、これならコードが煩雑にならなくてすみますね。 勉強になりました。 本当にどうもありがとうございます。