Microsoft Access 掲示板

サブフォーム先頭行の内容を条件として

2 コメント
views
4 フォロー

メイン用テーブル、サブ用テーブルを基としたメイン/サブフォームがあります。メインIDでリレーションさせておりサブにはオートナンバーのサブIDもあります。サブフォームのフィールド(F)にはいくつかの項目がありF1・F2項目はコンボボックスでの選択となっています。F1・F2は選択必須となっており入力順はF2からでも可能です。
こんな事は可能?と思っているのは下記です。
メインに入力しサブの1行目を入力後にサブの次のレコード(2行目)に移り入力の際、1行目のF1・F2が特定の選択組み合わせので2行目のF2が特定の選択の場合、F1は1行目のF1と同じものを選択をさせたい。(MsgBoxを表示させでYesなら所定の選択を実行)。
例えばサブの1行目が F1:車-F2:電車 が特定の組み合わせで2行目のF2が”徒歩”の場合F1には”車”を選択させたい (下記の★は車の選択をさせたい) *説明と例えが下手ですみません。
[F1〕  [F2]
 車     電車
 ★     徒歩  

メッセージ出してYesなら代入させる事は分かるのですが、同一メインID内でのサブの先頭レコード内容を条件とするコードが分かりません(この条件下で2行目のF2も条件にプラスされる)。  
いいアイデアがあればよろしくお願いします。

Batsu
作成: 2024/03/15 (金) 22:44:06
通報 ...
1
hatena 2024/03/16 (土) 00:51:25 修正

1行目(先頭レコード)の値は、フォームヘッダーにテキストボックスを配置して、コントロールソースを=First([F1])などとすれば取得できます(必要ないなら非表示にしておく)。代入するときにこのテキストボックスを参照すればいいでしょう。

ただし、質問内容から判断するに、ご希望のことは1行目といういうより前レコードの値を取得したいということでは。
その場合は下記をご参考に。

フォームで前レコードの値を複写する関数 - hatena chips

ちなみに、いちいちメッセージボックスを表示させて確認するのは、ユーザーにとって面倒だと思うので、自分が設計するなら、F1、F2の更新後処理で、規定値プロパティに入力値を設定すれば、新規レコードに直前に入力した値が規定値として表示されるので、変更があるときのみ入力、選択するようなUIにします。

Private Sub F1_AfterUpdate()
    Me.F1.DefaultValue = Me.F1.Value
End Sub

2
Batsu 2024/03/18 (月) 11:50:17 ddfe5@93384

hatenaさまへありがとうございます(返信遅くなりました)。
規定値をコードで設定出来るとは知りませんでした。その方が簡単に出来そうですね。試して上手くいかない場合はまた投稿致します。宜しくお願いします。