• ベストアンサー

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

下記のようなパラメータクエリがあるとします。 SELECT T_得意先.フリガナ, T_得意先.得意先名, T_得意先.得意先名 FROM T_得意先 WHERE (((T_得意先.得意先名)=[????])); (内容は、何でも構いません。気にしないでください) これを、フォームに設定したボタンで起動したいのです。 どのようにすれば良いですか? ボタンに on clickで、下記のようにやってみましたが、案の上だめでした。 Private Sub Command0_Click() SELECT T_得意先.フリガナ, T_得意先.得意先名, T_得意先.得意先名 FROM T_得意先 WHERE (((T_得意先.得意先名)=[????])); End Sub よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

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

noname#95859
質問者

補足

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

その他の回答 (2)

  • samui
  • ベストアンサー率31% (6/19)
回答No.3

SELECT T_得意先.フリガナ, T_得意先.得意先名, T_得意先.得意先名 FROM T_得意先 WHERE (((T_得意先.得意先名)=[????])); この内容に「MyQuery」と名前をつけて保存した後 Private Sub Command0_Click()  DoCmd.OpenQuery "MyQuery", , acReadOnly End Sub >ACCESS,パラメータクエリをフォーム上のボタンで起動する は解決すると思いますが。 >エクセルのように、テーブルが合って、ボタンがあって、ボタンを押すと、条件設定のダイアログが出てきて、リターンで目の前のテーブルが変更される,と言うようには出来ないのでしょうか? 質問が変わっているようです。この質問の意味がよく分かりません。

noname#95859
質問者

お礼

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

noname#95859
質問者

補足

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

  • samui
  • ベストアンサー率31% (6/19)
回答No.1

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

noname#95859
質問者

お礼

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

関連するQ&A

専門家に質問してみよう