我试图为我正在处理的Access数据库编写登录系统的代码,除了这一个错误之外,一切都运行得很顺利。 我得到了
将登录详细信息放入我创建的登录表单后出现无效使用空
错误,这样可以正常工作。问题在于应该将可查看的表单限制为" Read-Only"如果用户只有读取权限。我已经做了一些调查,看起来错误是由VBA尝试从具有NULL值的字段读取整数引起的,但是VBA不会告诉我确切的位置错误是,只有一行。
我发布了实际导航表单的代码,希望有人可以指出我的错误在哪里,所以我可以着手修复它。这是我的登录系统唯一的问题,它只是一个确定问题实际位置的案例,因此我可以实现所需的任何更改,因为我感觉它在识别实际Userlevel的位置时遇到了问题价值来自。
Option Compare Database
Option Explicit
Private Sub Form_Load()
Dim UserLogin As String
Dim UserLevel As Integer
UserLogin = Environ("UserName")
Me.TxtLogin = UserLogin
UserLevel = DLookup("[UserType]", "TblUser", "[UserLogin] = '" & Me.TxtLogin
& "'")
If UserLevel = 3 Then
Me.AllowAdditions = False
Me.AllowDeletions = False
Me.AllowEdits = False
End If
End Sub
答案 0 :(得分:4)
您没有提到错误发生的位置。我想这是在线
UserLevel = DLookup("[UserType]", "TblUser", "[UserLogin] = '" & Me.TxtLogin & "'")
您应该Dim UserLevel as Variant
,因为Dlookup
可能会返回Null
。
或者,您可以离开UserLevel as Integer
并使用:
UserLevel = Nz(DLookup("[UserType]", "TblUser", "[UserLogin] = " & Me.TxtLogin & "'"),0)
将可能的Null
变为0。
答案 1 :(得分:0)
使用NZ()
函数来转义空值。
Nz(Value, ValueIfNull )
UserLevel = DLookup("[UserType]", "TblUser", "[UserLogin] = '" & NZ(Me.TxtLogin,"") & "'")
参考:Application.Nz Method (Access)
@PatrickHonorez提出了一个很好的观点。但您也可以使用NZ
函数来包装DLookup
。
UserLevel = NZ(DLookup("[UserType]", "TblUser", "[UserLogin] = '" & NZ(Me.TxtLogin,"") & "'"),"")