- ベストアンサー
アクセス2010;クエリ結果の中に埋込マクロボタン
クエリで得た結果の各行の中に、マクロを実行するボタンを設置したいのですが、どのようにやればよいでしょうか。 あるクエリ実行結果の各行にID番号のフィールドがあります。この隣にボタンを設置し、クリックすると該当行のID番号のデータの入力フォームが開くようにしたいです。 クエリ実行結果にボタンを設置することは、そもそも不可能でしょうか。できるとしたら、手順や参考ページなどを教えていただくだけでも助かります。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
クエリそのものにはコマンドボタンは配置できません。 そういう目的にはフォームを作ります。 ただし、データシートビューがクエリの結果と同じに見えるですが、ここにはやはりコマンドボタンは配置できません。 イメージされているそのままのことは実現できませんが、いかにいくつか代替のアイデアをあげてみます。 まずは、コマンドボタンではなく、フィールドのダブルクリックで入力フォームを呼ぶ方法があります。ご質問のような機能は私はいつもこうして実現しています。 その目的のクエリーをもとにフォームを作ります。フォームはデータシートビューで開くようにしておきます。 デザインビューで、それぞれのフィールドに対応するテキストボックスを配置し、ID番号のテキストボックスのダブルクリックイベントにフォームを開くマクロなりVBAコードを書いておきます。 別にダブルクリックでなくてもいいです。都合のいいイベントを選べばいいのですから。 あるいは非連結のテキストボックスを付け加えて、ここのダブルクリックイベントで入力フォームを開いてもいいかもしれません。その非連結のテキストボックスには「ダブルクリックで入力フォームを開く」とか書いておくと、初めての人でも「あ、ここをダブルクリックすればいいのか」とわかりますね。 または、データシートビューではなくフォームビューをつかっていいのなら、各レコードにお考えになっているようなコマンドボタンとを配置することができます。 コマンドボタンを使う他の方法としては、たとえば、クエリーをもとにしたフォームをサブフォームとしてある親フォームに配置します。親フォームの方にコマンドボタンとを一つだけ配置して、サブフォームのカレントレコードに対応したレコードを入力フォームで開くようにしておきます。 一度サブフォームのほうでカーソルを目的のレコードにあてて、それをカレントレコードにしてから、親フォームのコマンドボタンを押す、という操作になります。 いま、ぱっと思いつくのはそんなやり方かな。
その他の回答 (1)
- GreatDragon
- ベストアンサー率46% (186/402)
最近は Access を利用していないので、 概要だけ回答します。 ボタン等のオブジェクトを配置できるのは、 実質的にフォームだけになります。 クエリは実態がSQLなので、 これにオブジェクトを配置するというのは ありえません。 クエリ結果を表形式でフォームに表示して そのフォームにボタンを設けます。 そのボタンをクリックしたら、 単票形式のフォームが開くようにしたら よろしいかと思います。 (参考) http://fk-plaza.jp/acs/KIS/Manabu_MakeForm5.htm なお、マクロではすぐに動作の限界がですので プロシージャでの処理をお勧めします。
お礼
なるほどクエリの実態はSQL…それでは、プロシージャで対応できますよう、勉強してやってみたい思います。
お礼
詳しい解説をありがとうございました。 まだ知らない知識が多いので、1つずつ確かめながら対処したいと思います。 誠にありがとうございました!