Microsoft Access 掲示板

メインフォーム上に置いたサブフォームコントロールのレコード移動時 / 14

16 コメント
views
14
hatena 2025/04/17 (木) 18:16:30 修正 >> 12

簡単なサンプルを作成して動作確認してみました。

テーブル
 Mtbl_名簿 (ID, F1, F2, F3, F4)

クエリ Qry_名簿
 SELECT ID, F1 FROM Mtbl_名簿;

メインフォーム
 テキストボックス テキスト1

コンボボックス cbFilelds
 値集合タイプ 値リスト
 値集合ソース F2;F3;F4
 規定値 "F2"

サブフォームコントロール SF1
 ソースオブジェクト 空欄

メインフォームのフォームモジュール

Option Compare Database
Option Explicit

Private Sub Form_Load()
    SetSFList
End Sub

Private Sub cbFilelds_AfterUpdate()
    SetSFList
End Sub

Public Sub SetSFList()
    Dim strFilelds As String
    strFilelds = "ID, F1, " & Me.cbFilelds

    CurrentDb.QueryDefs("Qry_名簿").SQL = "select " & strFilelds & " from Mtbl_名簿"
    Me.SF1.SourceObject = "クエリ.Qry_名簿"
    Me.SF1.Form.OnCurrent = "=CurentEvent()"
End Sub

標準モジュール

Function CurentEvent()
    With CodeContextObject
        Debug.Print "レコード移動しました!IDは" & !ID
        .Parent!テキスト1.Value = !ID
   End With
End Function

仕様
サブフォームのリストには ID, F1 フィールドは常に表示
コンボボックスで選択されたフィールドが表示

上記でメインフォームを開くと、ID, F1, F2列が表示されている
レコード移動するとイベントが発生してテキスト1にカレントのIDが表示される

コンボボックスでフィールド名を変更するとサブフォームの表示も変更される
レコード移動イベントも発生する。

というように動作確認できました。

通報 ...