连续表单中依据复选框值填充未绑定文本框的问题
问题解决思路与修正方案
核心问题分析
- 文本框赋值错误:Access中控件的
.Text属性仅在控件获得焦点时有效,直接用.Text赋值会导致焦点不在文本框时无法更新内容,应该改用.Value属性(可省略,直接写Me.HaveParts = "xxx")。 - 逻辑冗余与覆盖问题:原代码的条件可以简化,同时确保
PartsArrived的状态被正确识别。
修正后的代码
' 先处理优先级最高的PartsSupplied状态 If Me![PartsSupplied] = True Then Me.HaveParts = "Parts Supplied" ' 处理PartsArrived为True的情况,不管PartsBO状态 ElseIf Me![PartsArrived] = True Then Me.HaveParts = "Parts Arrived" ' 处理PartsOrdered为True但未到货的情况 ElseIf Me![PartsOrdered] = True Then If Me![PartsBO] = True Then Me.HaveParts = "Parts BO" Else Me.HaveParts = "Parts on Order" End If ' 其他默认情况(可根据需求补充) Else Me.HaveParts = "" End If
额外建议
- 把这段代码放在表单的当前事件(如
Form_Current())和每个复选框的更新后事件(如PartsOrdered_AfterUpdate())中,这样记录切换或复选框状态变化时,文本框会实时更新。 - 无需手动设置焦点到文本框,修正赋值方式后即可正常显示状态。
内容的提问来源于stack exchange,提问作者LarryDol
相关产品推荐
相关产品推荐

