• ベストアンサー

アクセス2003 イベントの取得方法

お世話になります。 環境:アクセス2003 ウインドウズXP アクセスのフォームにサブフォームを埋め込み、 データソースにテーブルを指定しています。 このサブフォームのデーターシートをクリック されたときのイベントの取得方法を知りたいのです。 やりたいことは、データシートのあるカラムを ダブルクリック(クリック)されたとき、そのカラムの 値をフォームのある部分に大きく表示したいのです。 イメージでいうと、画面を上下に割り、上部にデータ一覧を 下部にデータの詳細を表示させるような感じですね。 上部のデータ一覧をクリックするたびに、下部の詳細の内容が 変更するって感じです。 そもそも、こんなことできるのでしょうか? どなたかご教授ください。

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

  • ベストアンサー
  • mumu_bb
  • ベストアンサー率50% (5/10)
回答No.5

No.1 です。 ソースオブジェクトがテーブルになっているのですね。 一旦、そのテーブルを元にしたフォーム(このフォームを「子フォーム」とします。)を作成して、 ソースオブジェクトにこの「子フォーム」を設定してください。 「子フォーム」の表示形式を「データシートビュー」に設定しておけば、 テーブルと同じような表示になります。 ソースオブジェクトをフォームにしておくと、 「ダブルクリックしたものを下部の詳細に表示する」 というのが、実現できそうです。 マクロは、 多分、「値の代入」を使って、 上の一覧の内容を下部の詳細に代入する、ということになると思います。 下部の詳細に表示する内容は、 上部のデータ一覧でダブルクリックした行の内容、ですか?

123daa
質問者

補足

やっと意味が理解できました~。 データシートビューの意味も理解できました。 確かに、皆さんのおっしゃられてテキストボックス等があります。 ダブルクリックで値を取得することもできました。 >下部の詳細に表示する内容は、 >上部のデータ一覧でダブルクリックした行の内容、ですか? 最終的には、SQL投げてかえって来た値を表示させたく考えています。

その他の回答 (4)

noname#140971
noname#140971
回答No.4

補足: Private Sub fld_1_DblClick(Cancel As Integer) End Sub 個々ですと、このイベント。 しかし、ダブルクリックで詳細表示ってのは普通はしないでしょう。 それに、表示するテキストボックスをフッターに配置してテストしましたか? データシートで表示した場合にそれが表示されましたか?

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>埋め込み0という名前でのオブジェクトが作成されているので、 これはサブフォームですか? サブフォームならフォーカス取得時というイベントがあるはずですが それにサブフォームの中にはテキストボックスもあるのでは データシートビューでも元になるテキストボックスは存在しますから それの各種イベントを利用したほうが細かい制御が可能になりますね

123daa
質問者

補足

回答ありがとうございます。 作成した方法は、フォームのデザインビューのツールボックスから サブフォーム/サブレポートを選択し、フォームに貼り付け、 フォームに貼り付けられたサブフォーム/サブレポートの埋め込み0の プロパティより、データタブのソースオブジェクトに既存のテーブル名を指定。 これにより、フォームビューを開くと、テーブルの内容が表示される。 この状態です。(サブフォーム/サブレポート:埋め込み0) ですので、テキストボックスとおっしゃられるのはどのことか検討つきません。 >サブフォームならフォーカス取得時というイベントがあるはずですが 確かにフォーカス取得時・喪失時のイベントはあります。 データシートのどのレコードに現在カーソルが当たっているか、 それを知りたいのです。 MSFlexGridのような使い方ができないかなぁと思っている次第です。 なんとなくですが、根本的にアクセスの使い方が間違っている気が してきました。今までVBで作って来ているので・・・ 皆様お手数おかけします。

noname#140971
noname#140971
回答No.2

tab1: [ID]__[fld_1] __1____A __2____B tab2: [ID]__[tab1_ID]__[fld_1]__[fld_2] __1__________1____a________b __2__________1____aa_______bb フォーム:  ID:____[__1]  fld_1:_[A__________]  =======================================  [ID]|[tab1_ID]|[fld_1]|[fld_2]  =======================================  __1_|_______1_|_a_____|_b_____|  __2_|_______1_|_aa____|_bb____|  ____|_________|_______|_______|  ____|_________|_______|_______|  ____|_________|_______|_______|  ____|_________|_______|_______|  =======================================  fld_1:_[a__________]<----Current_fld_1  fld_2:_[b__________]<----Current_fld_2  ======================================= 思うに、現行の行データがこのように表示されれば事足りるのでは・・・。 Private Sub Form_Current()   Me.Current_fld_1 = Me.fld_1   Me.current_fld_2 = Me.fld_2 End Sub もちろん、サブフォームの既定のビューを[帳票フォーム]に。 そして、データーシートと同じ体裁で表示されるようにします。 Private Sub Form_DblClick(Cancel As Integer)   MsgBox "レコードセレクタがダブルクリックされました!" End Sub と、ここで表示する意味がないでしょう。

123daa
質問者

お礼

申し訳ありませんが、私には理解できませんでした。 お時間とらせて申し訳ない。 回答ありがとうございました。

  • mumu_bb
  • ベストアンサー率50% (5/10)
回答No.1

こんにちは。 フォームをデザインビューで開くと、 それぞれのカラムに対応するテキストボックスがあるはずです。 そのテキストボックスのプロパティを開いて イベント タブの ダブルクリック時、または、マウスボタンクリック時 で、マクロを指定してください。

123daa
質問者

補足

回答ありがとうございます。 埋め込み0という名前でのオブジェクトが作成されているので、 個々にテキストボックスはありません。 また、どんなマクロを指定するのですか?

関連するQ&A

  • Accessのフォームのイベントについて

    Accessのフォームをデータシートビューで開き、表示されたレコードを選択後、 セレクタのダブルクリックで、その詳細を別フォームで表示させます。 セレクタのダブルクリックで、フォームのダブルクリックイベントが発生するので、別フォームを開くことは問題ないのですが、 データシートビューのせいなのか、ラベルの部分(標題?)のダブルクリックでも、イベントが動作してしまいます。 セレクタのダブルクリックのみで処理をさせたいのですが、 フォームのダブルクリックイベント内で、セレクタがダブルクリックされたかどうかを判定する方法がありますでしょうか? よろしくお願いいたします。

  • アクセスでの詳細表示のしかた

    新規採用の応募者のDB作成しました。 学校の種別(大学院、大学、高校)や学校名で検索(クエリ)のフォーム(A)に、応募者テーブルを基にしたデータシート型のサブフォーム(B)を埋め込みました。 ここまでは、学校名の一覧表示のフォーム(O)に詳細表示用のボタンを配し、マクロで上記のサブフォームを含む、学校情報フォーム(A)を開くのはできました。 次に、このサブフォーム(B)中の応募者のID(氏名でも)をダブルクリックすると、応募者の詳細表示フォーム(C)を表示できるようにしたくて、応募者IDのコントロールのプロパティでイヴェントのダブルクリックにマクロを設定しました。 (C)フォームを開く where条件として [フォーム(B)]![応募者ID]=[フォーム(C)]![応募者ID]としても、左項の値が右項へ代入されず、うまく行きません。 どうしたら、サブフォーム(データシート)の帯び データから特定のレコードを指定して、更に別のフォーム(特定レコード)の表示が可能なのでしょうか? 不慣れで、説明もままならないこんな私にどなたかHELP!

  • ACCESSのサブフォームについて

    ACCESSにおいて、サブフォームにデータを表示させた状態で、あるレコードをダブルクリックで選択させ、 そのデータ(対象レコード)をメインフォームに戻って使用させるにはどのようにしたらよろしいのでしょうか? サブフォームの該当箇所に、ダブルクリック時イベントを貼り付けて、 制御をメインフォームへ移すのでしょうか。 よろしくお願いします。

  • サブフォームでのダブルクリックイベント

    Access2003です。 フォームにサブフォームを設置し、直接テーブルを表示させています。 このサブフォームのテーブルのある行をダブルクリックしたら その行のデータを他のフォームのオブジェクトにセットしたいのですが 行や行のデータ全てを取得は出来るのですが、サブフォームのイベントがEnterとExitしかなくて、イベント発生が出来ません。 フォームのダブルクリックでXとYを見て…と思ったのですがサブフォーム上ではフォームのダブルクリックイベントが発生せず。 サブフォームのテーブルはユーザーがソートする事もあるのでベタに上にテキストボックス等を置く事は出来ません。 どうにかダブルクリックで動作させる方法はありませんでしょうか?

  • Access 帳票フォームでカレント行だけ色反転させれますか?

    いつもここのサイトにはお世話になっています。 今回もよろしくお願いします。 Access2002と VBAを使用して、マスターテーブルのメンテナンスの画面を作成しています。 1フォームの構成は上部に入力欄があり、 下部にサブフォームで帳票フォーム形式でテーブルが表示してあります。 下部のテーブルでレコードをクリックすると、上部の入力欄にクリックした部分のレコード(サブフォームのカレント行)内容を表示し、上部の入力欄にてデータの変更/更新を行います。 みなさんに教えていただきたいのは、 下部のサブフォーム部分でクリックした際に、クリックしたレコードの部分だけ色反転させるなどして「目立たせたい」のですが、VBAなどで色の指定を変更しても、サブフォーム全体の色が変わってしまいます。 なんとかして、1目で「カレント行」と「それ以外」とわかるようにする方法はないでしょうか? 補足説明はしますのでなんなりと申し付けてください。 よろしくお願いします。

  • アクセス初心者です。

    アクセスのフォームなんですが、メインフォームとサブフォームがあって、16-1とか16-2等の管理番号でつながるようにしています。メインフォームに16-1のデータが表示されたときにサブフォームに16-1の詳細情報が表示されるようにするにはどのようにすればいいのでしょうか?参考書やネットを見ながら作成しているのですが、上手くいきません。わかる方いましたらご教示ください。宜しくお願いします。

  • アクセスVBA画面のスクロールバー

    アクセスVBAで画面を作っており、 あるフォーム画面に、あるサブフォーム画面を付けてます。 フォーム画面に条件を入力すると、サブフォーム画面に データが表示されます。 サブフォーム画面はデータが多くなると、 スクロールバーで上下に移動できるようにしてます。 今、フォーム画面で条件を入れると、サブフォーム画面は さほどデータが多くなくても スクロールバーの移動する枠がとても小さく表示されます (あたかもデータがたくさんあるように) 但し、その時に、スクロールバーをクリックしたりすると すぐに適切なスクロールバーの幅になります。 フォーム画面で条件を入れた直後に サブフォーム画面のスクロールバーの幅を適切にしたいのですが 何か、特別な設定とか必要なのでしょうか?

  • Access2000のクエリー抽出条件

    Access2000で、「メインフォーム」の中に「サブフォーム」を作り、「メインフォーム」上の複数のテキストボックス(非連結)の条件により「サブフォーム」内のデータシート形式の「一覧表」にフィルタをかけて表示させたい。 「サブフォーム」のコントロールソースである「選択クエリー」の抽出条件に「メインフォーム」上のテキストボックスの内容を記入してできるかと試みていますが・・・。意図としては条件が複数になると、その分だけ絞り込んだ表示結果を得たいのですが、うまくいきません。 どなたか、教えていただけないでしょうか?

  • Accessで簡単なアプリケーションを作っています。

    Accessで簡単なアプリケーションを作っています。 サブフォーム内のコントロールをダブルクリックした時に、フォームAを表示し、 入力した条件で別のフォームBを表示するというものです。 判らないのが、フォームAを表示した時に、フォームAにフォーカスが移らない(Activeにならない) ということです。 サブフォームをダブルクリックした時のイベントに DoCmd.OpenForm "フォームA" Forms!フォームA.フィールドY = Forms!元フォーム.フィールドX としていますが、その最後に、 DoCmd.SelectObject acForm, "フォームA" や Forms!フォームA!フィールドY.SetFocus などと追加してみたりしましたが、同じです。 ためしに、ダブルクリックでなく、クリックイベントにしてみると、フォーカスが移ります。 つまり、一旦移ったフォーカスがダブルクリックの2度目のクリックで、元のフォームに 移っているという当たり前といえば当たり前の動作のようです。 クリックでは都合が悪いので、ファンクションキーに割り当てればOKなのでしょうが、 これは仕方のないものなのでしょうか? (以前のAccessはこんな動作をしなかったような気がするのですが、CPUが早くなったせい なのでしょうか?)

  • Access2010クエリ結果をデータシートビュー

    いつもお世話になっています。access超初心者です。 いろいろまちがっているかもしれませんが、よろしくお願いします。 クエリの検索結果をデータシートで表示させるフォームをつくりました。 フォームをナビゲーションウィンドから動作させると、データシートで表示されるのですが、メインフォームをつくってそこにボタンを置きクリックすると、単票フォームで表示されてしまいます。 ボタンクリックの際、「DoCmd.OpenForm "フォーム_クエリ"」としているのですが、 この部分になにか引数が必要なのでしょうか? それとも、サブフォームをつくって表示させるしかないのでしょうか?

専門家に質問してみよう