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

下記のようなパラメータクエリがあるとします。

SELECT T_得意先.フリガナ, T_得意先.得意先名, T_得意先.得意先名
FROM T_得意先
WHERE (((T_得意先.得意先名)=[????]));

(内容は、何でも構いません。気にしないでください)


これを、フォームに設定したボタンで起動したいのです。
どのようにすれば良いですか?

ボタンに on clickで、下記のようにやってみましたが、案の上だめでした。

Private Sub Command0_Click()
SELECT T_得意先.フリガナ, T_得意先.得意先名, T_得意先.得意先名
FROM T_得意先
WHERE (((T_得意先.得意先名)=[????]));

End Sub

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

A 回答 (3件)

根本的な誤解を含んでいるように思います。


アクセス以外でSQL文をコマンドラインから実行する仕組みのものも当然あります。しかし
SQL文は、単なる文字列です。VBAのプログラムのソースも文字列ですが、アクセスVBAのVBの文法にかなったものではないのです。ですからそのままSQL文を挿入しても、実行されません。
SQL文を実行するコマンドを使い、「これこれのSQL文を使い、SQLを実行しろ」というVBAの記述方法がありますのでそれらを使います。
レコードセット(ADO、DAOなど)と組み合わせた使い方が多く、本質問と離れて、(テーブルやフォームなどを)OPEN時にSQL文を実行した結果でテーブルを開くや、本質問のように好きなところで実行するなどあります。
http://www.happy2-island.com/access/gogo03/capte …など多数
もうひとつは
Docmdタイプで
http://www.accessclub.jp/sql/index.htmlなど
「Docmd SQLでWEB検索」
SQL文は、(質問の例のように書くのでなく)、一旦strSQLという文字列変数に、定義することを注目してください。

この回答への補足

色々ありがとうございます。ACCESSをかじっている段階ですので、本当に参考になります。
そもそも、この質問に至った理由は、アクションクエリの存在理由を知ることにありました。
デザインビューを開いて、実行して、ダイアログボックスでパラメータを入力する、と言う使い方(パラメータクエリ)と、デザインビューで、直接パラメータを入力して実行することの違いはない。
パラメータクエリはダイアログボックスを経由するだけ面倒。
パラメータクエリの存在理由は、きっと、ボタンに貼り付けて、起動できることにあるはず---ということで、質問に至ったのです。
この観点でのコメントをいただけるとありがたいです。
あまり、これにこだわらずに、Docmdの使い方を勉強した方が、正しい道かなとも思いますが・・・・

補足日時:2005/08/14 10:43
    • good
    • 0

SELECT T_得意先.フリガナ, T_得意先.得意先名, T_得意先.得意先名


FROM T_得意先
WHERE (((T_得意先.得意先名)=[????]));

この内容に「MyQuery」と名前をつけて保存した後
Private Sub Command0_Click()
 DoCmd.OpenQuery "MyQuery", , acReadOnly
End Sub

>ACCESS,パラメータクエリをフォーム上のボタンで起動する

は解決すると思いますが。

>エクセルのように、テーブルが合って、ボタンがあって、ボタンを押すと、条件設定のダイアログが出てきて、リターンで目の前のテーブルが変更される,と言うようには出来ないのでしょうか?

質問が変わっているようです。この質問の意味がよく分かりません。

この回答への補足

2つのテーブルの見た目一致は、「ACCESS-VBA の組み方 (ADOと表の世界) 」で別の質問にしております。
申し訳ない。

補足日時:2005/08/18 09:29
    • good
    • 1
この回答へのお礼

ありがとうございます。まだ、ACCESSがよくわかっていないものですから、色々、迷っています。
フォームにはすでにテーブル(エクセル風DataSheetではない)が表示されています。また、ボタンも設定されています。このボタンを押すと、パラメータクエリが起動されて、パラメータクエリにて定義されるテーブル(エクセル風DataSheet)が表示される。見かけ上の問題なのですが、この二つのテーブルが同じに見えるとありがたいと言う質問に”変わっていました”。申し訳ない。

お礼日時:2005/08/18 09:14

DoCmd.OpenQuery


ヘルプを見て下さい。
helpより
使用例
次の例では、[年次売上高] クエリをデータシート ビューで開きます。ユーザーはレコードを表示することはできますが、編集したり追加することはできません。

DoCmd.OpenQuery "年次売上高", , acReadOnly
    • good
    • 0
この回答へのお礼

やっとわかりました。
フォームにテーブルを表示させておいて、このクエリを呼び出したとすると、異なるテーブルが出てきてしまう。イマイチ、操作性に納得が出来ていません。
エクセルのように、テーブルが合って、ボタンがあって、ボタンを押すと、条件設定のダイアログが出てきて、リターンで目の前のテーブルが変更される,と言うようには出来ないのでしょうか?

お礼日時:2005/08/17 12:51

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