有人可以帮助我。 这听起来很简单,但我不知道我是否可以做到这一点。 这个想法是:如果存在参数而不是打开该记录,否则打开一个新的输入数据。
这是我的尝试,但我甚至无法让它运行。
Private Sub Form_Load()
If (Me.Type = Act _
and Me.Title <> null _
and section <> null) _
or Me.Type in ('Proposed','Final')
and Me.Rule <> null
Then
Docmd.OpenForm "F_Eval" (but open that specific f_Eval)
Else
Docmd.OpenForm "F_NewEval" (to enter new record)
End If
End Sub
答案 0 :(得分:2)
修改您的Null比较。作为一个示例,请从 If 条件中考虑此部分:
Me.Title <> null
没有什么能够“不等于”Null,就像没有任何东西可以“等于”Null一样。甚至没有其他Null可以等于Null(或不等于Null)。
因此,无论Me.Title是Null还是包含非Null值,该表达式都将返回Null。您想要一个返回True或False的表达式。使用IsNull()函数。
If Not IsNull(Me.Title) Then
'do what you want for a non-Null Title here '
End If
对于“打开特定的f_Eval”要求,请将WhereCondition参数与OpenForm Method一起使用。这是从该链接页面复制的示例。它将打开一个名为Employees的表单,并将表单的记录源限制为LastName为“King”的行。
DoCmd.OpenForm "Employees", , ,"LastName = 'King'"
所以OpenForm WhereCondition就像没有单词WHERE的查询中的WHERE子句。
答案 1 :(得分:0)
你的第一句话对我来说是错误的。我怀疑你的意思是“行动”,一方面。尝试
If (Me.Type = "Act" _
And Me.Title <> Null _
And Me.Section <> Null) _
Or (Instr("Proposed,Final",Me.Type) >0
And Me.Rule <> Null )
我不相信你从代码中剪切并粘贴了你的例子,最好这样做。