You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

表单字段权限控制问题:仅允许主管级用户更新已填写字段

问题分析与修正方案

原代码核心问题

  1. 代码结构错误:内层If DLookup(...)语句缺少对应的End If,导致逻辑分支混乱,主管权限判断的代码无法正确执行,这是主管无法解锁字段的直接原因。
  2. 触发事件不合理:仅用Click事件只能在用户点击字段时触发逻辑,当表单切换记录、字段值被其他方式填充后,无法自动更新锁定状态。
  3. 逻辑嵌套冗余:原代码的条件嵌套容易引发分支错误,可简化为更直观的判断逻辑。

修正后的代码

建议同时使用GotFocus(字段获得焦点时)和Form_Current(切换记录时)事件,确保权限规则在所有场景下生效:

字段焦点触发逻辑

Private Sub DateStarted_GotFocus()
    Dim isSupervisor As Boolean
    isSupervisor = DLookup("TFSupervisor", "qrySplashUserCheck") = True
    
    If IsNull(Me.DateStarted) Then
        '字段为空,所有用户可编辑
        Me.DateStarted.Locked = False
    Else
        '字段已填写,仅主管可编辑
        Me.DateStarted.Locked = Not isSupervisor
    End If
End Sub

记录切换触发逻辑

Private Sub Form_Current()
    Dim isSupervisor As Boolean
    isSupervisor = DLookup("TFSupervisor", "qrySplashUserCheck") = True
    
    If IsNull(Me.DateStarted) Then
        Me.DateStarted.Locked = False
    Else
        Me.DateStarted.Locked = Not isSupervisor
    End If
End Sub

简化逻辑说明

直接通过两个条件组合判断锁定状态:

  • 当字段为空时,无条件解锁,所有用户可填写。
  • 当字段已填写时,根据用户是否为主管决定是否解锁:主管解锁,普通用户锁定。

内容的提问来源于stack exchange,提问作者Edufritsch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:40:27