Access のサブフォームに問題があり、理解できないことがあります。コントロール(コンボ)を含むフォーム(frm)があり、フォームにはサブフォーム(subfrm)が含まれています。デバッグモードでは、combo_AfterUpdate と frm_AfterUpdate に 1 つずつ、2 つのブレークポイントを作成します。コンボのデータを変更すると、すべて問題ないようです。
ombo_AfterUpdate で停止 > (フォームを保存) > frm_AfterUpdate で停止
ここで、subfrm.Form.Recordset を変更するコードを自分のombo_AfterUpdate イベント ハンドラに追加します。
ombo_AfterUpdate で停止 > (フォームを保存) > ...
frm_AfterUpdate で止まらない!? 誰かが理由を知っていますか?
編集: ここで、combo_AfterUpdate で実行されるコード:
If Not IsNull(Me!childID) Then
Dim childSubSource As QueryDef
Set childSubSource = CurrentDb.QueryDefs("qry_parent_Detail_child_WithParam")
childSubSource.Parameters("childID").Value = Me!childID
Set frmChildSub.Form.Recordset = _
childSubSource.OpenRecordset(dbOpenDynaset, dbSeeChanges)
End If
編集:興味深い..私が変更した場合
Set frmChildSub.Form.Recordset = _
childSubSource.OpenRecordset(dbOpenDynaset, dbSeeChanges)
に
frmChildSub.Form.Recordsource= childSubSource.SQL
イベントは意図したとおりに機能しています。親フォームのダーティ プロパティを確認しましたが、ここに問題があるようです。.recordset を介してサブフォームに新しいオブジェクトを割り当てると、親フォームの変更が保存されるか失われます。とにかく、コンボボックスを変更しても、dirty は再び false になります。
ご挨拶