MS Access:为什么无法访问我的代码?

问题描述

我正在尝试对我的代码进行一些错误处理,并且我希望在用户尝试输入现有记录时显示我的自定义错误消息。 Access 给出了自己的标准错误消息,指示重复记录,但我希望显示我的。问题是无法到达我的自定义错误消息的代码部分,因此给了我认消息。

文本框的名称是“DepartmentCode”,它所提取的表的名称是“tDepartment”,列名称是“DepartmentCode”

我的代码是这样的...

Private Sub bAddDepartment_Click()
On Error GoTo bAddDepartment_Click_Err

   Dim OKToSave As Boolean
    OKToSave = True

    If Not SomethingIn(Me.DepartmentCode) Then          ' Null
        Beep
        MsgBox "A department code is required",vbOKOnly,"Missing information"
        OKToSave = False
   
    Else
        Dim myDepartmentCode As String
        myDepartmentCode = "DepartmentCode = " + Chr(34) + Me.DepartmentCode + Chr(34)
        If DLookup("DepartmentCode","tDepartment",myDepartmentCode) <> Null Then
            MsgBox "Department already on file","Department already on file."
            OKToSave = False
        End If
    End If
    If OKToSave Then
        ' If we get this far,all data is valid and it's time to save
        Me.Dirty = False
        DoCmd.GoToRecord,"",acNewRec
        
       
    End If
bAddDepartment_Click_Exit:
    Exit Sub

bAddDepartment_Click_Err:
   
    Resume bAddDepartment_Click_Exit

End Sub

未到达的部分是If DLookup("DepartmentCode",myDepartmentCode) <> Null Then

为什么会这样?

解决方法

Debugging VBA Code

If DLookup("DepartmentCode","tDepartment",myDepartmentCode) <> Null Then

你无法与 Null 相比。在立即窗口中试试这个:

? ("foo" <> Null)
Null

使用IsNull()

If Not IsNull(DLookup("DepartmentCode",myDepartmentCode)) Then

或者如果空字符串也是可能的,请使用 Nz()

If Nz(DLookup("DepartmentCode",myDepartmentCode),"") <> "" Then