Microsoft Access 掲示板

サブフォームから選択したデータをフォームに表示 / 4

8 コメント
views
4 フォロー
4

まず、回答の前にひとつ提案ですが、
現状のサブフォームのレコードソースのテーブルから、分割フォームを作成すれば、単票フォームの下にデータシートビューが表示されて、データシートでレコードを選択して、単票フォームの方でそのレコードの編集ができるようになります。
いっさいVBAなしで、見た目は現状とほぼ同じものが作成できます。

分割フォーム(単票フォームとデータシートを同時に表示)の作成と使い方 | Access 2016 | 初心者のためのOffice講座

上記を検討されることをお勧めします。
現状のサブフォーム形式で行く場合、かなりのスキルを必要とします。

本題

サブフォーム形式にチャレンジするということなら、
まずは、サブフォームのレコード移動時のイベントプロシージャを下記のように記述します。

Private Sub Form_Current()
    With Me.Parent.Form
        !cmb_分類 = Me!分類
        !txb_コード = Me!コード
        !txb_品名 = Me!品名
        !cmb_単位 = Me!単位
        !txb_巾 = Me!巾
        !txb_長さ = Me!長さ
        !txb_登録日 = Me!登録日
        !txb_更新日 = Me!更新日
        !txb_単価 = Me!単価
        !txb_改訂前単価 = Me!改訂前単価
    End With
End Sub

 
次にメインフォームの各コマンドボタンのクリック時のイベントプロシージャを下記のように記述します。

Private Sub 修正_Click()
    With Me.F_売上.Form
        !分類 = Me!cmb_分類
        !コード = Me!txb_コード
        !品名 = Me!txb_品名
        !単位 = Me!cmb_単位
        !巾 = Me!txb_巾
        !長さ = Me!txb_長さ
        !登録日 = Me!txb_登録日
        !更新日 = Me!txb_更新日
        !単価 = Me!txb_単価
        !改訂前単価 = Me!txb_改訂前単価
        .Refresh 'レコードソースのテーブルに反映
    End With
End Sub

Private Sub 削除_Click()
    With Me.F_売上.Form
        'サブフォームが新規レコードでなければ、カレントレコードを削除
        If Not .NewRecord Then .Recordset.Delete
    End With
End Sub

このような設計にした場合、
現状の登録ボタンとクリアボタンの処理は再検討する必要があると思います。

登録ボタンは、サブフォームが新規レコードのときのみ有効にするとか。

また、クリアボタンが必要かどうかも検討する必要があります。

通報 ...