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

クエリーは全く同じ内容ですが、
複数のフォームにパラメータを入力するユーザーインターフェースのため、ク
エリーを複数用意して、それぞれに
[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と関連する良く見られている質問

QVBAからクエリのパラメータを設定したいです。

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

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

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

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

Aベストアンサー

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

Public Sub myRunSQL(Para As String)

  Dim SQL As String

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

End Sub

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

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/関係データベース管理システム

QAccessの演算フィールドでのパラメータ設定について教えて下さい

Accessについて質問です。クエリで「金額:[価格]*[数量]」などの演算フィールドで、パラメータを使って抽出しようと「>=[金額を入れる]」のような条件を設定しました。すると、パラメータに10000と入力すると、10000以上のものが抽出はされますが、1000以上のものまで抽出されてしまいます。どうも先頭の数字に反応しているようです。どういうことなのでしょうか?どなたかよろしくお願いします。

Aベストアンサー

>価格フィールドは通貨型、数量フィールドは数値型なのです
で、演算は掛け算だけですか?
関数を使っていたりすると戻される型が変わってしまうということもありますよ

式のほうは数値型で間違いなければ
パラメータのデータ型を指定してやってください

クエリデザインビューなら[クエリ][パラメータ]で
パラメータのデータ型指定ができます

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は載せません。)

Qパラメータの入力ダイアログボックスに入力規則を設定したいのですが。

WinXP,Access2002使用しています。
入力された日付以前のデータを抽出するパラメータクエリを作りました。このパラメータの入力ダイアログボックスに年月日を入力する際、「2007/02/06」と入力するのは面倒なので、(効率化のため)「070206」と入力して「2007/02/06」となるように入力規則を設定したいんです。
パラメータの入力ダイアログボックスに入力規則を設定する方法をおしえてください!!!よろしくおねがいします!!!

Aベストアンサー

そのような機能はありません
やりたければ自分で入力用のフォームを作るしかありません

そもそも
>「2007/02/06」と入力するのは面倒なので、(効率化のため)
>「070206」と入力して「2007/02/06」となるように
初心者からよくでる質問ですが、こんなところに力を注ぐのは
あまり意味のないことですね

西暦を2桁で表すのも余計なトラブルを生み出す元ですよ

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

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

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

Aベストアンサー

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

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

QAccess2000で、パラメータの設定をしたときに。

ACCESS2000を勉強しています。
クエリを作成したときにパラメータの設定をして、たびたびの抽出を簡易にしようというところまできたのですが、疑問が出てきました。

パラメータの入力を求めるダイアログボックスが出てきたときに、そのダイアログボックスに入力する値の制限や、書式の限定をすることはできるのでしょうか?
もし、できるのならどうすればいいのでしょうか?
自分だけが入力するわけではない場合、入力値が制限外のものの場合、alertメッセージが出てくるようなカンジにしてみたいのですが。。。

ご存知でしたら教えて下さい。

Aベストアンサー

パラメータクエリーでは入力規則制限・メッセージはできないと思います。

ご自身しか使わない場合は、クエリーのパラメーターを使う方法でもいいかと思いますが、他の方も使う場合はフォームで条件を入力させてその値を抽出条件にした方がフォーム上で入力規則のチェックも出来ますし、
操作ミスが少ないのでいいと思いますよ。

クエリーの抽出条件で=Forms![F_条件指定]![条件1]
などと記述するだけです。

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

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

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

Aベストアンサー

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

QReportViewerでのパラメータ設定

ReportViewer を使用して、SQL Server Reporting Service
のReportsを、Webフォーム上に表示しようとしています。
サーバーレポートとして構築したReportsは、レポート
パラメータ(内部)があるため、Webフォーム上で指定
された値を、パラメータとして渡す必要があります。

MSDNのサイトには以下のような記述があり、パラメー
タを渡すことは可能なようなのですが、具体的な記述
方法の記載がなく困っています。

================================================
レポート パラメータの組み込みサポートにより、静的
な値に基づく結果セットの条件付き書式とフィルタの機
能が提供されます。

クエリ パラメータやレポート パラメータに対するユー
ザーからの入力を実行時に受け取るには、アプリケーシ
ョンでそれをサポートするためのコードを記述する必要
があります。

http://msdn.microsoft.com/ja-jp/library/ms345248.aspx

================================================

実現されている方がお見えになったら、ご教授願えない
でしょうか?

ReportViewer を使用して、SQL Server Reporting Service
のReportsを、Webフォーム上に表示しようとしています。
サーバーレポートとして構築したReportsは、レポート
パラメータ(内部)があるため、Webフォーム上で指定
された値を、パラメータとして渡す必要があります。

MSDNのサイトには以下のような記述があり、パラメー
タを渡すことは可能なようなのですが、具体的な記述
方法の記載がなく困っています。

================================================
レポート パラメータの組み込み...続きを読む

Aベストアンサー

難しくはないです。まあ、コードを見た方が早いですよね。
問題はおきてないです。

Dim parm As New Generic.List(Of ReportParameter)
parm.Add(New ReportParameter("パラメータ名", "パラメータ値", False))
parm.Add(New ReportParameter("パラメータ名", "パラメータ値", False))

With myReportViewer
.ServerReport.ReportServerUrl=(サーバURI)
.ShowParameterPrompts = False
.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote
.ServerReport.ReportPath = "レポートパス"
.ServerReport.SetParameters(parm)
End With

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

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

Aベストアンサー

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

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


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

人気Q&Aランキング