当子窗体的总和为0时,我需要锁定主窗体和子窗体上的所有控件。主窗体上保存该值的未绑定控件被命名为
sumBalance
,控件源拾取子窗体的总和形式=Nz([frm_0_accs_fin_trans_journ_subf]![JournalTotal],"")
我在主窗体上的当前事件中制作了两个替代VBA代码:
If IsNull(Me!sumBalance) Then
Me!fin_trans_id.Locked = False
Me!fin_trans_tstamp.Locked = False
Me!fin_trans_description.Locked = False
Me!frm_0_accs_fin_trans_journ_subf.Locked = False
ElseIf Me!sumBalance < 0 Then
Me!fin_trans_id.Locked = False
Me!fin_trans_tstamp.Locked = False
Me!fin_trans_description.Locked = False
Me!frm_0_accs_fin_trans_journ_subf.Locked = False
ElseIf Me!sumBalance > 0 Then
Me!fin_trans_id.Locked = False
Me!fin_trans_tstamp.Locked = False
Me!fin_trans_description.Locked = False
Me!frm_0_accs_fin_trans_journ_subf.Locked = False
ElseIf Me!sumBalance = 0 Then
Me!fin_trans_id.Locked = True
Me!fin_trans_tstamp.Locked = True
Me!fin_trans_description.Locked = True
Me!frm_0_accs_fin_trans_journ_subf.Locked = True
End If
If Me!sumBalance = 0 Then
Me!fin_trans_id.Locked = True
Me!fin_trans_tstamp.Locked = True
Me!fin_trans_description.Locked = True
Me!frm_0_accs_fin_trans_journ_subf.Locked = True
Else
Me!fin_trans_id.Locked = False
Me!fin_trans_tstamp.Locked = False
Me!fin_trans_description.Locked = False
Me!frm_0_accs_fin_trans_journ_subf.Locked = False
End If
我预计这两个 VBA 代码都会导致主窗体控件和子窗体在除控件
sumBalance
= 0 之外的所有其他条件下都会解锁。
但是当子表单中没有记录而导致
sumBalance
字段为空时,表单也会被锁定,无法创建新记录。
我错过了什么?
无法检查不存在的记录,所以先统计一下记录:
Dim Locked As Boolean
If Me!NameOfYourSubformCONTROL.Form.RecordsetClone.RecordCount > 0 then
Locked = (Nz(Me!sumBalance.Value, 0) = 0)
End If
Me!fin_trans_id.Locked = Locked
Me!fin_trans_tstamp.Locked = Locked
Me!fin_trans_description.Locked = Locked
Me!frm_0_accs_fin_trans_journ_subf.Locked = Locked