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

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

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

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

このQ&Aに関連する最新のQ&A

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
    • 0
この回答へのお礼

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

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

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

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

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

このQ&Aに関連する人気のQ&A

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

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q[Oracle][IBM DB2][SQL Server]の違いと適性

現在、Accessで業務アプリケーションを作成しているのですが、そろそろパフォーマンス的にも限界で、というかC/S環境でAccessを使っていること自体危険ですね…

ここでデータベースをグレードアップしようと思っています。
しかし、データベースと言ってもたくさんあり、どれがいいのか
迷っています。

現在、商用RDBMSでは[Oracle][IBM DB2][SQL Server]がメインとの
ことですが、これらの違いが分かりせん。

うちの規模は社員数が40人程度です
Oracleは大規模システム向けと聞いた事があるのですが、
それであれば、IBM DB2かSQL Serverなのでしょうか

御教授宜しくお願いします。

Aベストアンサー

SEじゃないですけど、現状でどの辺りがボトルネックになっているかまず分析する必要がありますよ、案外ハード(サーバー本体)の方がいっぱいいっぱいてこともありますから、仮にHDDのディスクアクセスの場合シリコンディスクに置き換える、メインメモリの増設などがあります。逆にソフト側(MSアクセス)で同時接続多・同時更新多・データ肥大化の場合はやはりDBエンジンを変更するしかないでしょう。自社で開発するなら(情報量の多い)SQLServer。外注の場合は先方によって得手不得手がありますので一概には言えませんがオラクルでしょうこれしかないです(規模は関係なし)。DB2は使ったことがありません。他にもたくさんデータベースエンジンがありますので・・・

参考URL:http://ja.wikipedia.org/wiki/関係データベース管理システム

Q「[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。」えらーについて

おせわになります、

JavaからMSDEに対してSELECT UPDATE等の処理を行っているのですが。以下のSQLエラーが出てしまいます。
どのような意味なのでしょうか?
雰囲気としてはUPDATE文でおこっているような感じなのですが…

----エラーメッセージ------
[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。

よろしくお願いします。

Aベストアンサー

こんな情報がありましたという報告です。

「COUNT フィールドが正しくありません。」
で、検索をしたら同じような事例がありました。

2件ほどヒットしたのですが、どちらもテーブルのフィールド名を英数字にすることで解決しているようでした。

何故かというのは私にもわかりません。
お役に立つと良いのですが・・・

ちなみにヒットしたのは、「Goo」と「Google」です。
一度調べてみてください。(個人の情報っぽいのでURLは載せません。)

QAccess2000:[パラメータの入力]ダイアログを表示されないようにするには

初心者です。よろしくお願いします。

フォームが完成したあとで、クエリ/テーブルから削除したいフィールドが発生してしまいました。
削除したいフィールドのコントロールをフォームから消した後に、クエリ/テーブルからフィールドを削除しました。
削除したあとにフォームを開いたところ、[パラメータの入力]ダイアログボックスが表示されてしまいました。(メッセージは"開こうとしているフォーム名" クエリ:"削除したフィールド名"です)
このダイアログボックスが表示されないようにしたいのですが、どうすればよいでしょうか。
ちなみに削除したフィールドは単なるテキスト型で、選択クエリでも抽出条件等は設定していませんでした。
初歩的な質問ですみませんが、よろしくお願いします。

Aベストアンサー

 テーブルからクエリを作って、そのクエリを元にフォームを作成されたのですね?
 削除したフィールドは「テーブル」のものだけでしょうか?クエリのフィールドも削除しましたか?

 いずれにしても、フォームを開こうとしたときにパラメータの要求が出てくるということは、次のことをすれば、パラメータの要求が出てこなくなると思います。
(1) フォームをデザインビューで開く
(2) フォームのプロパティ(縦横のルーラの交点
 で右クリックすると、メニューの中にプロパティ
 という項目があります)でデレコードソースの
 箇所をクリック
(3) ビルドボタンをクリックして、出てくるクエ
 リから該当するフィールドを選択して削除

Q[Access2003]メイン・サブフォームの演算テキストボックス:『識別子』

メイン・サブフォームの演算テキストボックス:『識別子』についてよく分からないです。

「!」(識別子)の意味は、『ユーザー定義のオブジェクトやフィールドに付ける』とパソコン教室で教えてもらいました。
『オブジェクト』の言葉の意味が分からなかったので、マイクロソフトのホームページで調べてみました。『オブジェクト』の意味は多範囲でよく分からなかったです。
「!」(識別子)で使用する『オブジェクト』の言葉の意味を教えてもらえないでしょうか?Access初心者なので簡潔に教えてくださったら助かります。

Aベストアンサー

日本語はとても進んだ言語で「オブジェクト指向」なんです。
何故かと言うと、「画を見る」のように「目的語」(オブジェクト)を
先に言うからです。で、フォーム=画面があるとします。画面も1個
ではないから名前を付けますね。
Aという画面にはテキストボックス(X)とボタン(Y)があるとします。
ではボタン(Y)を指す時に何と言いますか?
「Aという画面の中にあるYというボタン」となるでしょう。
この「Aという画面」、「Yというボタン」がオブジェクトです。
そして、「の中にある」に相当する部分が「!」なんです。
実際にもForm_A!Button_Y みたいに記述します。
オブジェクトとは「物」です。画面と言うブツ、ボタンと言うブツ、
XXと言うブツ・・・ そんな漠然とした認識でいいのです。

Q[ACCESS][レポート]2列に印刷がしたい

ACCESSのレポートで、ひとつのテーブルの内容を、2列に印刷することは可能でしょうか?
たとえばA4ヨコの用紙で、印刷する項目が3つしかなかった場合、右に余白ができてしまうので、印刷する項目が用紙の下までいったら、次に右上からもう一列印刷をする、というようなことを実現したいのです。

Aベストアンサー

先日同じ質問に回答しました。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=250509


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

人気Q&Aランキング

おすすめ情報