2008年3月10日月曜日

Access で複数のサブフォーム間でのフォーカスの移動

サブフォーム間を移動するためのショートカットキー

サブフォーム間を移動するためのショートカットは、 Ctrl + Tab 。サブフォーム内で Tab キーを押し続けると、サブフォーム内に限定されたレコード間のフォーカスの移動が行われる。帳表の形式である場合、通常の入力において、サブフォーム内の新しいレコードを追加するための動作が生じる。

 

1 対 1 のサブフォーム

あるフォームに、複数のサブフォームを存在させることがある。その中に、親となるフォームに対して、 1 対 1 の関係にあるサブフォームがあるとする。この場合、データの入力において、タブキーを押し続けると、上記と同様に、サブフォーム内で新しいレコードを追加しようとする動作が生じる。 親フォームに対して 1 対 1 の関係のサブフォームなので、そのまま追加すると、主キーの制約違反の通知がされる。

1 対 1 の関係である場合、最後のフィールドの入力が終ったら、レコード追加の動作が生じるのではなくて、できれば、次の入力フィールドへ移ってほしい。例えば、入力中のサブフォームから、別のサブフォームのフィールドへフォーカスが移ってほしい場合、入力が終ったフィールドの「フォーカス喪失時」のイベントにおいて、以下のようなコードを記述することによって、タブキーによるスムーズなデータの入力を実現できる。

Forms!フォーム名!サブフォーム名.SetFocus

フォーカスされた方のサブフォームでは、「フォーカス取得時」のイベントで対応する。