• ベストアンサー

アクセス2010;クエリ結果の中に埋込マクロボタン

クエリで得た結果の各行の中に、マクロを実行するボタンを設置したいのですが、どのようにやればよいでしょうか。 あるクエリ実行結果の各行にID番号のフィールドがあります。この隣にボタンを設置し、クリックすると該当行のID番号のデータの入力フォームが開くようにしたいです。 クエリ実行結果にボタンを設置することは、そもそも不可能でしょうか。できるとしたら、手順や参考ページなどを教えていただくだけでも助かります。よろしくお願いします。

  • wilion
  • お礼率63% (242/382)

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

  • ベストアンサー
noname#231195
noname#231195
回答No.2

クエリそのものにはコマンドボタンは配置できません。 そういう目的にはフォームを作ります。 ただし、データシートビューがクエリの結果と同じに見えるですが、ここにはやはりコマンドボタンは配置できません。 イメージされているそのままのことは実現できませんが、いかにいくつか代替のアイデアをあげてみます。 まずは、コマンドボタンではなく、フィールドのダブルクリックで入力フォームを呼ぶ方法があります。ご質問のような機能は私はいつもこうして実現しています。 その目的のクエリーをもとにフォームを作ります。フォームはデータシートビューで開くようにしておきます。 デザインビューで、それぞれのフィールドに対応するテキストボックスを配置し、ID番号のテキストボックスのダブルクリックイベントにフォームを開くマクロなりVBAコードを書いておきます。 別にダブルクリックでなくてもいいです。都合のいいイベントを選べばいいのですから。 あるいは非連結のテキストボックスを付け加えて、ここのダブルクリックイベントで入力フォームを開いてもいいかもしれません。その非連結のテキストボックスには「ダブルクリックで入力フォームを開く」とか書いておくと、初めての人でも「あ、ここをダブルクリックすればいいのか」とわかりますね。 または、データシートビューではなくフォームビューをつかっていいのなら、各レコードにお考えになっているようなコマンドボタンとを配置することができます。 コマンドボタンを使う他の方法としては、たとえば、クエリーをもとにしたフォームをサブフォームとしてある親フォームに配置します。親フォームの方にコマンドボタンとを一つだけ配置して、サブフォームのカレントレコードに対応したレコードを入力フォームで開くようにしておきます。 一度サブフォームのほうでカーソルを目的のレコードにあてて、それをカレントレコードにしてから、親フォームのコマンドボタンを押す、という操作になります。 いま、ぱっと思いつくのはそんなやり方かな。

wilion
質問者

お礼

詳しい解説をありがとうございました。 まだ知らない知識が多いので、1つずつ確かめながら対処したいと思います。 誠にありがとうございました!

その他の回答 (1)

回答No.1

最近は Access を利用していないので、 概要だけ回答します。 ボタン等のオブジェクトを配置できるのは、 実質的にフォームだけになります。 クエリは実態がSQLなので、 これにオブジェクトを配置するというのは ありえません。 クエリ結果を表形式でフォームに表示して そのフォームにボタンを設けます。 そのボタンをクリックしたら、 単票形式のフォームが開くようにしたら よろしいかと思います。 (参考) http://fk-plaza.jp/acs/KIS/Manabu_MakeForm5.htm なお、マクロではすぐに動作の限界がですので プロシージャでの処理をお勧めします。

wilion
質問者

お礼

なるほどクエリの実態はSQL…それでは、プロシージャで対応できますよう、勉強してやってみたい思います。

関連するQ&A

  • アクセスのクエリを開く前にマクロを実行できますか?

    フォームやレポートを開く前にマクロを実行できますが、同様のことをクエリを開く前にもする方法はないでしょうか? 具体的には、いくつかのテーブル作成クエリと追加クエリをまとめて行うマクロを実行してから、選択クエリを開きたいのです。 「SQLビューで1行加えるだけ」みたいなのができると助かります。 よろしくお願いします。

  • エクセルのマクロでアクセスのクエリ結果をコピーしたい

    アクセスのクエリ結果をエクセルで編集しているのですが、エクセル側から マクロを登録したボタンをクリックすると、クエリ結果がエクセルにコピー されるようにしたいのです。 アクセスは中身を変更してはいけないということなので、エクセルから自動で コピーできる方法があれば、と思い質問しました。 アクセスは、最初に検索用のフォームに条件を入力して、結果を違うフォームに 表示させています。 現在は結果が出たところでデータベースウィンドウを表示させ、該当するクエリ を開いてそれをエクセルにコピー&ペーストしています。クエリ結果を表示させた フォームをコピー&ペーストすると、セルに色がついてしまうし、データの並びが 違うのでひと手間多くしています。 また、検索に使うクエリは条件によって変わるようで、2種類あります。 (アクセスはよく判らないので、あやふやな説明しかできないのですが、すみません) 今後はこの作業を、パソコンに詳しくない他の人がするというので、 できるだけ作業を簡単にしたいのです。 使っているアプリケーションは、エクセル97とアクセス97です。 ご存知のかた、よろしくお願いします。

  • <<ACCESS2000>>クエリの結果をエクセルで表示させることはできますか?

    宜しくお願いします。 アクセスのクエリで実行した内容を フォームではなく、エクセルで表示させたいのですが、方法はありますか? フォームのように開くとマクロなどでクエリが 勝手に動き、結果がエクセルで表示される様にしたいのですが。

  • Accessのクエリ

    初めまして。Accessのクエリについての質問です。 Access2003を使っています。 検索フォームを作り、その検索フォームにテキストボックスを2つ作り、そのテキストボックスに検索したい言葉を入力し、コマンドボタンで作った検索ボタンを押すとマクロでフィルタの実行がされデータを抽出できるというものを作りました。フィルタには選択クエリを使用しています。抽出したい2つのフィールドの抽出条件にあいまい条件のLike "*" & [Forms]![フォーム名]![テキストボックス名] & "*"を入れています。 今はテキストボックスが2つですが、もっと増やしていろんな条件で検索出来るようにしたいので、3つ目のテキストボックスを作り、抽出条件も同じように入れました。ですが、そうすると今までちゃんとできていた最初の2つのテキストボックスによる抽出が違った結果となりでてきました。このとき、新しく作った3つ目のテキストボックスは空欄なので最初と同じ結果が出ると思ったのですが、これは抽出条件が3つはできないということでしょうか?どなたか教えてください。

  • マクロを使ってコマンドボタンを実行するには

    お世話になります。 OSは、Windows 98 Second Edition アプリケーションは、Access 2000 です 下記作業の一連を簡素化したいのですが マクロを使うのが良いかと考えています。 1.データをインポート 2.レポート印刷 3.追加クエリ実行 4.削除クエリ実行 インポートはフォームのコマンドボタンから 実行できるようにして有ります。 追加、削除クエリも別のフォームのコマンドボタンから 実行できるようにして有ります。 マクロでフォームを開く、閉じるはできるのですが コマンドボタンの実行方法がわかりません。 どのアクションを選べばよろしいのでしょうか? よろしくお願い致します。

  • accessマクログループの全マクロの実行方法

    お世話になります。 現在、顧客のデータベースを作成しております。DBは名前、住所等の連絡先を入力したテーブルを元に下記のクエリやマクロを作成しています。取引がない顧客等はメイン名簿テーブルから削除して、メインテーブルの構造をコピーした、削除テーブルに入れるようにしたいと考えています。 そこで下記のテーブル、クエリ、グループマクロを作成しました。グループマクロは作成したクエリ3つで構成されています。各アクションクエリは一個一個は正常に作動するのですが、グループマクロを実行しますと、1行目のクエリしか実行されません。実行方法はマクロの画面で更新ボタンを押しても、フォームに削除というボタンを作成してクリック時にグループマクロを実行させるよう設定した場合の両方で起きます。  グループマクロに登録されているマクロを全て実行するにはどうしたらいいのでしょうか。色々調べると、グループマクロは1行目しか実行できないようですが、全て実行する簡単な方法はありませんか?できればVBAではない方法を希望します。大変お手数ですがどうぞ、よろしくお願い致します。  ・(テーブル)メイン名簿(以下、名簿tblとします)    ⇒フィールド:名前、郵便番号、住所、電話、メモ欄、削除の有無、削除処理日  ・(テーブル)削除テーブル(以下、削除tblとします)    ⇒フィールドは上記と同じ  ・(更新クエリ)削除処理日追加    ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、「削除処理日」に処理日が     入力されるようにdate関数を設定しています。(date())  ・(追加クエリ)削除tblへ追加    ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、「削除tbl」へそのレコードを、     追加する。    ・(削除クエリ)名簿tblからの削除    ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、名簿tblからそのレコードを、     削除する。  ・(マクログループ)削除処理(上から順番に実行希望)     マクロ名           アクション     クエリ名     削除処理日追加     クエリを開く    (更新クエリ)削除処理日追加     削除tblへコピー      クエリを開く    (追加クエリ)削除tblへ追加   名簿tblからの削除    クエリを開く    (削除クエリ)名簿tblからの削除                                                        以上

  • アクセス:クエリへのID番号手入力を合理化するには

    アクセス2010を使っています。 入力フォームに、コマンドボタンを作りました。これは「あるクエリをデザインビューで開く」というマクロを動かすものです。 デザインビューで開く理由は、抽出条件を手入力する必要があるからです。 開いたクエリのデザインビューの中のあるフィールドに、上記の入力フォームに割り当てられたID番号を手入力します。そしてデータシートビューに開きなおし、保存し、その後のCSV出力の工程(保存済みのエクスポート操作)に進みます。 手入力して、データシートビューに開き直し、保存する、という三工程をマクロに割り当てたいのですが、手入力の作業があるため、一連の操作を、一つのマクロにまとめるのはできないように思います。 最初にフォームを開いている段階で、そのフォームのID番号を自動で、もしくは手動で、クエリのフィールド内に入れることはできないでしょうか。こちらの技術が低いため、現段階ではすぐに実現は難しいかと思いますが、どういう方針で何を勉強したらよいか判断が付きません。 そこで上級者の方にアドバイスをいただきたいと思います。方針と勉強すべき分野を教えて下さい。よろしくお願いいたします。わかりづらい部分は補足いたしますので、ご指摘ください。

  • (続き)accessでの2段階クエリの作り方

    お世話になります。 accessで下記の質問を立てましたが、解決できなかったので再度質問いたします。 (http://okwave.jp/qa/q6890851.html) 下記に説明をしています、分かりにくいかもしれません。。 どうぞご指導をお願い致します。 ◆DBの構成◆ 1)テーブル名:名簿(フィールドは下記の通り)  ID,名前1、名前2(担当者名)、ふりがな、住所、電話、住所1、住所2(マンション名等)、備考等) 2)フォーム名:検索フォーム  デザインビューで初めから作成して、テキストボックスを1つ作っています。  名前は『キーワード検索ボックス1』です。  またテキストボックスの下に検索をしてヒットした名簿を表示するサブフォームを入れています。 3)サブフォームのクエリ ・元データ   ⇒名簿のテーブル。全フィールドを挿入して作成。     メインフォーム内のサブフォーム名は『(sub)キーワード検索』  ・抽出条件   ⇒フィールドの『名前1』、『名前2』、『ふりがな』、『住所1』、『住所2』、『備考』の抽出条件欄に    1行ごとずらして、『Like & "*" & [Forms]![検索フォーム]![キーワード検索ボックス1] & "*"    とした。  ・マクロ   ⇒メインフォームのテキストボックスの隣に検索という名前をつけたボタンを配置。    マクロは再クエリでコントロール名を『(sub)キーワード検索』とした。    ボタンのプロパティのイベントタブでクリック時に上記のマクロが実行されるように登録した。 ◆やりたい事◆  accessで会社の顧客名簿を作成しました。  今の状態は1個のキーワードだと検索結果がサブフォームに表示されます。  それを、2段階で絞りこんでいく方法を探しています。  テキストボックスをもう一個作り、2個のキーワードで絞りこみたいです。   まず、1個のキーワードで『名前1』、『名前2』、『ふりがな』、『住所1』、『住所2』、『備考』のフィールドを検索してヒットしたものをサブフォームで表示させる。さらにそこから、また任意のキーワードを 『キーワード検索ボックス2』に入力してボタンをクリックすると、同じサブフォーム(または別のフォームに)絞りこみ検索結果が表示されるようにしたい。またVBAは苦手なので、クエリで解決をしたいです。   ◆出来たこと、出来なかった事◆ ・質問NO(6890851)で指導を頂いた、chuparkさんのある一つのフィールドに 『Like "*" & [Forms]![検索フォーム]![名前検索1] & "*" And Like "*" & [Forms]![検索フォーム]![名前検索2] & "*"』と入れると、そのフィールドに対しては2個のキーワードがヒットするとサブフォームに表示される事が出来た。 ⇒これだと1つのフィールドに対してなので、やりたい事ではない。  1つのフィールドだけでなく、検索したいフィールド全てに対してまず1個のキーワードで  検索されたものを表示させ、そこから更にキーワードを検索して表示させたい。   ・クエリに新しいフィールドを作りました。そこは全てのフィールドを『&』で結び、 抽出条件にchuparkさんの条件を入れてました。 ⇒これだと一度に2個のキーワードを検索してしまう。1回目と2回目を比較もしたいので、一度ではなく、段階を踏んで検索が出来ない。また、フォーム自体を開いた時にサブフォームが真っ白になり メッセージも出て見辛い。。(どんなメッセージが忘れました…)                                                        以上

  • Accessマクロでパラメータークエリ実行

    Microsoft Accessのマクロでパラメータークエリを実行する方法を調べると、VBAで実行する方法しか出てきませんが、マクロではできないでしょうか。 検索フォームに条件を入力して検索するマクロを作りたいです。

  • access フォームのコマンドボタンをマクロ実行

    access97 フォームの中のコマンドボタンをひとつのマクロで実行したい お世話になります 上記表題のように現在access97をwindowsXP sp3で使用しています ここで例えば フォーム Aというフォームのなかに コマンドボタンBが 設置されているとします コマンドボタンBをワンクリックするとイベントプロシージャーCが実行されるとします お尋ねしたいのは ひとつのマクロDによって 上記 一連の操作をしたいのですが マクロをデザインビューで開きますと まず アクションにおいて フォームを開く 下左のダイアログに フォームの名称に コンボリストから Aを選択します 次に このコマンドボタンBを実行するために このマクロDのデザインビューにおいて 以下の行のアクションに どのように 入力したら よいものか 御教示願いたいです コマンドの実行 から できるかなと 思ったのですが 適切な項目がリストから 表示されません 御存じの方 宜しくお願い致します access97以降の新しいバージョンでのご解説でも参考になりますので 宜しくお願い致します

専門家に質問してみよう