我正在尝试不同级别的用户有不同的访问不同的表单字段。有些用户可以在表单上填写字段,有些用户可以更新,有些用户可以删除,以遵守职责分离的原则。在这个字段中,我试图使所有用户都可以填写它,但是,一旦填写,只有主管用户可以更新或删除它。
这就是我所做的,一旦填充,它就无法更新,但是,当"主管级''''用户"尝试更新时,不会重新打开。
Private Sub DateStarted_Click()
If Not IsNull(DateStarted) Then
Me.DateStarted.Locked = True
If DLookup("TFSupervisor", "qrySplashUserCheck") = True Then
Me.DateStarted.Locked = False
Else
Me.DateStarted.Locked = False
End If
End Sub
DLookup
将返回在TFSupervisor
字段下的qrySplashUserCheck
查询中找到的第一个值。如果没有找到,它将返回Null。
因此下面的语句是不正确的。
If DLookup("TFSupervisor", "qrySplashUserCheck") = True Then
你可能要做的是:
If Nz(DLookup("TFSupervisor", "qrySplashUserCheck"), vbNullstring) = "User" Then
(注释后编辑).
放弃DLookup
,尝试DCount
。
DCount("*", "qrySplashUserCheck", "TFSupervisor = True")
为了避免每次都调用DCount(),请有条件地处理它(根据您的示例)。
With DateStarted
If IsNull(.Value) Then
.Locked = False
Else
.Locked = DCount("*", "qrySplashUserCheck", "TFSupervisor = True") = 0
End If
End With