2012/07/31

【Access】サブフォームからレコードを選択する方法

「同一のレコードソースを持つメインフォーム(帳票)とサブフォーム(データシート)を用意し、サブフォームのあるレコードを選択したら、メインフォームも同一レコードへ移動するように。」と部下に課題を出してみたところどうやら煮詰まってる模様。

こっちは解答も用意せず何気なしに出題したわけだけどそんな難しいことかいな?と自分でも作ってみると、意外とやっかいというか…。一般的なサンプルはメインフォームとサブフォームの関係は親子の関係であり、サブフォームは詳細表示に使いましょう的なものが多く、今回のように対等に扱うケースはあんまり見あたりませんでした。すまん、すまん。これはちょっとうっかり。そりゃ初心者じゃ煮詰まるわ。

せっかくなので要点だけのサンプルを載せときます。サブフォームのレコード移動時イベントで割と強引にメインフォームのレコードを移動させてます。

Option Compare Database
Option Explicit

Private Sub Form_Current()

DoCmd.GoToRecord acDataForm, "メインフォーム名", acGoTo, Me.CurrentRecord

End Sub

何でも屋の「DoCmd」ですが、こーゆー別フォームの操作ができちゃうのが良いとこなんだか悪いとこなんだか…。個人的にはもうちょいちゃんとした手続きが間に欲しかったりするとこだけど、そこまでやるんだったらVBAじゃなくてもいいだろって話になっちゃうので…。

後は追加・削除時に互いにRequeryかけるとか、細かいとこ見てやれば大丈夫なはず。次からはちゃんと解答用意してから出題しようと思いましたとさ。


pagetop