

下記のようなパラメータクエリがあるとします。
SELECT T_得意先.フリガナ, T_得意先.得意先名, T_得意先.得意先名
FROM T_得意先
WHERE (((T_得意先.得意先名)=[????]));
(内容は、何でも構いません。気にしないでください)
これを、フォームに設定したボタンで起動したいのです。
どのようにすれば良いですか?
ボタンに on clickで、下記のようにやってみましたが、案の上だめでした。
Private Sub Command0_Click()
SELECT T_得意先.フリガナ, T_得意先.得意先名, T_得意先.得意先名
FROM T_得意先
WHERE (((T_得意先.得意先名)=[????]));
End Sub
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
根本的な誤解を含んでいるように思います。
アクセス以外で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の使い方を勉強した方が、正しい道かなとも思いますが・・・・
No.3
- 回答日時:
SELECT T_得意先.フリガナ, T_得意先.得意先名, T_得意先.得意先名
FROM T_得意先
WHERE (((T_得意先.得意先名)=[????]));
この内容に「MyQuery」と名前をつけて保存した後
Private Sub Command0_Click()
DoCmd.OpenQuery "MyQuery", , acReadOnly
End Sub
>ACCESS,パラメータクエリをフォーム上のボタンで起動する
は解決すると思いますが。
>エクセルのように、テーブルが合って、ボタンがあって、ボタンを押すと、条件設定のダイアログが出てきて、リターンで目の前のテーブルが変更される,と言うようには出来ないのでしょうか?
質問が変わっているようです。この質問の意味がよく分かりません。
この回答への補足
2つのテーブルの見た目一致は、「ACCESS-VBA の組み方 (ADOと表の世界) 」で別の質問にしております。
申し訳ない。
ありがとうございます。まだ、ACCESSがよくわかっていないものですから、色々、迷っています。
フォームにはすでにテーブル(エクセル風DataSheetではない)が表示されています。また、ボタンも設定されています。このボタンを押すと、パラメータクエリが起動されて、パラメータクエリにて定義されるテーブル(エクセル風DataSheet)が表示される。見かけ上の問題なのですが、この二つのテーブルが同じに見えるとありがたいと言う質問に”変わっていました”。申し訳ない。
No.1
- 回答日時:
DoCmd.OpenQuery
ヘルプを見て下さい。
helpより
使用例
次の例では、[年次売上高] クエリをデータシート ビューで開きます。ユーザーはレコードを表示することはできますが、編集したり追加することはできません。
DoCmd.OpenQuery "年次売上高", , acReadOnly
やっとわかりました。
フォームにテーブルを表示させておいて、このクエリを呼び出したとすると、異なるテーブルが出てきてしまう。イマイチ、操作性に納得が出来ていません。
エクセルのように、テーブルが合って、ボタンがあって、ボタンを押すと、条件設定のダイアログが出てきて、リターンで目の前のテーブルが変更される,と言うようには出来ないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ビジネスマナー・ビジネス文書 食事の席順について 建築商社勤務です。 得意先の社長と、弊社社長、弊社部長、私(所長)で食事に行くこ 6 2022/09/06 12:43
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- 訴訟・裁判 弁護士について 2 2023/04/01 17:14
- 会社・職場 得意先を飲みの接待します。 その得意先が知り合いの店があるから行こうか?と言ってきたのですが、こちら 3 2023/04/11 20:48
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- 世界情勢 中国は、世界中でインフラ建設をしているけど、 4 2022/07/27 20:46
- その他(ビジネス・キャリア) 仕事について 従業員100名規模の小売業をしています。 例えば、ですが。 売り上げが20万、人件費や 5 2023/02/25 20:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Thunderbird 振り分けされなく...
-
xcopyバッチを管理者として実行...
-
x64とIA64の違い
-
vbsファイルによるネットワーク...
-
これはなんて読むんですか?
-
ポリシーでコンピュータの構成...
-
タスクススケジューラを停止さ...
-
WindowsServer2003の、SMB1.0を...
-
DIGコマンドでstatusがREFUSED...
-
エクセルで定期的(30分おき)...
-
ACCESS,パラメータクエリをフォ...
-
batファイルの実行が1行目のみ...
-
CHKDSKの実行を解除したい
-
GIGABYTE ユーティリティについて
-
XAMPP1.7.3でApacheが起動しない
-
IE正しいページの戻り方・戻る...
-
Outlook Expressの「ユーザーの...
-
SystemWalkerについて
-
MIPSプロセッサの命令と、イン...
-
OnTimeの取り消しについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Thunderbird 振り分けされなく...
-
xcopyバッチを管理者として実行...
-
JP1で月末以外で毎週月曜日のジ...
-
エクセルで定期的(30分おき)...
-
SSDのTrimって毎日実行していい...
-
ADのDC移行の手順を教えてください
-
WindowsServer2003の、SMB1.0を...
-
2010でShiftキーを使っても自動...
-
Teratermで、条件分岐させたい
-
CHKDSKの実行を解除したい
-
ポリシーによる自動ログオフ
-
bat 処理の中止
-
VBAのタイマー
-
bashで15分前と現在のエポック...
-
スクリプトエラー表示
-
Teratermマクロ動作について
-
MODE関数を文字でできる関数は...
-
タスクがSYSTEMアカウントで実...
-
ログオフ状態でパソコンをシャ...
-
batファイルの実行が1行目のみ...
おすすめ情報