MS Access同表字段录入能否依赖另一字段?表单联动控制如何实现
MS Access 表单字段联动可编辑实现方案
操作步骤
- 打开目标表单的「设计视图」,确认两个控件的命名:绑定Impact字段的下拉框默认名称为
Impact,绑定Impact_if_Other字段的输入框默认名称为Impact_if_Other,如果有自定义改名,后续代码中对应替换即可。 - 配置下拉框选项切换时的联动逻辑:
- 右键点击Impact下拉框,选择「属性」,切换到「事件」选项卡
- 找到「更新后」事件,点击输入框右侧的
...按钮,选择「代码生成器」进入VBA编辑界面 - 在自动生成的事件框架中填入如下代码:
Private Sub Impact_AfterUpdate() If Me!Impact = "Other" Then Me!Impact_if_Other.Locked = False Me!Impact_if_Other.Enabled = True Else Me!Impact_if_Other.Locked = True Me!Impact_if_Other.Enabled = False ' 不需要保留非Other场景下的填写内容可取消下方注释 ' Me!Impact_if_Other = Null End If End Sub - 配置表单打开时的初始状态(避免历史数据为Other时字段仍被锁定):
- 双击表单设计视图左上角标尺交叉处的表单选择小方块,打开表单整体属性面板
- 切换到「事件」选项卡,找到「加载」事件,同样选择代码生成器,填入如下代码:
Private Sub Form_Load() If Me!Impact = "Other" Then Me!Impact_if_Other.Locked = False Me!Impact_if_Other.Enabled = True Else Me!Impact_if_Other.Locked = True Me!Impact_if_Other.Enabled = False End If End Sub - 保存代码和表单设计,切换到表单视图测试即可。
小提示:如果不希望控件在不可编辑时显示为灰色,可删除代码中所有
Enabled属性相关的行,仅保留Locked属性的设置即可。
内容的提问来源于stack exchange,提问作者vgb17
相关产品推荐
相关产品推荐

