为什么我在条件表达式中收到错误消息数据类型不匹配,错误2950?

时间:2013-09-16 20:20:38

标签: ms-access

这是我的代码:

If Isnull([RECRUITMENT_NR]) Then
    Beep
End if

If Not Isnull([RECRUITMENT_NR]) Then

open form
formname frmHR_RECRUITMENT
view Form
where condition =="[RECRUITMENT_NR]=&[RECRUITMENT_NR]

Data mode
Window mode Dialog

请注意我们在2010年访问

错误讯息:     条件表达式中的数据类型不匹配     错误#2950

任何建议都非常感谢!

2 个答案:

答案 0 :(得分:0)

我们可以稍微清理一下代码:

If IsNull([RECRUITMENT_NR]) Then
  Beep
  Exit Sub
End If

DoCmd.OpenForm _
  "frmHR_RECRUITMENT" _
, acNormal, _ ' open in normal view
, "[RECRUITMENT_NR] = " & [RECRUITMENT_NR] _ ' explanation below
, acFormEdit _ ' allow user to add and edit records
, acDialog

我唯一怀疑的是在设置表单过滤条件之前在VBA中检查的[RECRUITMENT_NR]字段。我假设此代码作为某个表单的VBA代码的一部分运行,并且表单有一个名为[RECRUITMENT_NR]的字段,然后您打开的frmHR_RECRUITMENT表单还有一个基础数据字段 名为[RECRUITMENT_NR]。这应该工作......但说实话我不确定。我可能会根据您的反馈重新调整我的答案。

答案 1 :(得分:0)

创建控件值的临时变量,并将其传递给窗体open的where条件。

这是您的宏应该是什么样子:

SetTempVar
Name tmpRecruitment_NR
Expression = [RECRUITMENT_NR]

If IsNull([RECRUITMENT_NR]) Then
    Beep
    StopMacro
Else
    OpenForm
        Form Name frmHR_RECRUITMENT
        View Form
        Filter Name
        Where Condition = [RECRUITMENT_NR]=[TempVars]![tmpRecruitment_NR]
        Data Mode
        Window Mode Dialog
End If
RemoveAllTempVars