- ベストアンサー
アクセス2003 イベントの取得方法
お世話になります。 環境:アクセス2003 ウインドウズXP アクセスのフォームにサブフォームを埋め込み、 データソースにテーブルを指定しています。 このサブフォームのデーターシートをクリック されたときのイベントの取得方法を知りたいのです。 やりたいことは、データシートのあるカラムを ダブルクリック(クリック)されたとき、そのカラムの 値をフォームのある部分に大きく表示したいのです。 イメージでいうと、画面を上下に割り、上部にデータ一覧を 下部にデータの詳細を表示させるような感じですね。 上部のデータ一覧をクリックするたびに、下部の詳細の内容が 変更するって感じです。 そもそも、こんなことできるのでしょうか? どなたかご教授ください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.1 です。 ソースオブジェクトがテーブルになっているのですね。 一旦、そのテーブルを元にしたフォーム(このフォームを「子フォーム」とします。)を作成して、 ソースオブジェクトにこの「子フォーム」を設定してください。 「子フォーム」の表示形式を「データシートビュー」に設定しておけば、 テーブルと同じような表示になります。 ソースオブジェクトをフォームにしておくと、 「ダブルクリックしたものを下部の詳細に表示する」 というのが、実現できそうです。 マクロは、 多分、「値の代入」を使って、 上の一覧の内容を下部の詳細に代入する、ということになると思います。 下部の詳細に表示する内容は、 上部のデータ一覧でダブルクリックした行の内容、ですか?
その他の回答 (4)
補足: Private Sub fld_1_DblClick(Cancel As Integer) End Sub 個々ですと、このイベント。 しかし、ダブルクリックで詳細表示ってのは普通はしないでしょう。 それに、表示するテキストボックスをフッターに配置してテストしましたか? データシートで表示した場合にそれが表示されましたか?
- CHRONOS_0
- ベストアンサー率54% (457/838)
>埋め込み0という名前でのオブジェクトが作成されているので、 これはサブフォームですか? サブフォームならフォーカス取得時というイベントがあるはずですが それにサブフォームの中にはテキストボックスもあるのでは データシートビューでも元になるテキストボックスは存在しますから それの各種イベントを利用したほうが細かい制御が可能になりますね
補足
回答ありがとうございます。 作成した方法は、フォームのデザインビューのツールボックスから サブフォーム/サブレポートを選択し、フォームに貼り付け、 フォームに貼り付けられたサブフォーム/サブレポートの埋め込み0の プロパティより、データタブのソースオブジェクトに既存のテーブル名を指定。 これにより、フォームビューを開くと、テーブルの内容が表示される。 この状態です。(サブフォーム/サブレポート:埋め込み0) ですので、テキストボックスとおっしゃられるのはどのことか検討つきません。 >サブフォームならフォーカス取得時というイベントがあるはずですが 確かにフォーカス取得時・喪失時のイベントはあります。 データシートのどのレコードに現在カーソルが当たっているか、 それを知りたいのです。 MSFlexGridのような使い方ができないかなぁと思っている次第です。 なんとなくですが、根本的にアクセスの使い方が間違っている気が してきました。今までVBで作って来ているので・・・ 皆様お手数おかけします。
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 と、ここで表示する意味がないでしょう。
お礼
申し訳ありませんが、私には理解できませんでした。 お時間とらせて申し訳ない。 回答ありがとうございました。
- mumu_bb
- ベストアンサー率50% (5/10)
こんにちは。 フォームをデザインビューで開くと、 それぞれのカラムに対応するテキストボックスがあるはずです。 そのテキストボックスのプロパティを開いて イベント タブの ダブルクリック時、または、マウスボタンクリック時 で、マクロを指定してください。
補足
回答ありがとうございます。 埋め込み0という名前でのオブジェクトが作成されているので、 個々にテキストボックスはありません。 また、どんなマクロを指定するのですか?
補足
やっと意味が理解できました~。 データシートビューの意味も理解できました。 確かに、皆さんのおっしゃられてテキストボックス等があります。 ダブルクリックで値を取得することもできました。 >下部の詳細に表示する内容は、 >上部のデータ一覧でダブルクリックした行の内容、ですか? 最終的には、SQL投げてかえって来た値を表示させたく考えています。