2

这是我的代码:

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

请注意,我们在 access 2010 中运行

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

非常感谢任何建议!

4

2 回答 2

0

创建您的控件值的临时变量,并将其传递给打开表单的 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
于 2015-03-31T21:57:03.433 回答
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

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

于 2013-09-17T03:01:51.087 回答