我有一个创建新工单的表单。我希望能够从新客户表单或主菜单中提取ClientID,无论哪个是开放的。但是我没有得到预期的结果:
我在新工作订单表单的控件的默认值中使用了=IIf(IsNull(Forms![New Client]![txtClientID]), Forms![Main Menu]![txtClientID], Forms![New Client]![txtClientID])
。当我从New Client转到表单时,我得到了正确的ID,但是当我尝试从主菜单访问它时出现#Name错误。
我该怎么做才能让它发挥作用?
答案 0 :(得分:0)
您需要检查表单是否已加载,例如(您需要添加自己的错误陷阱):
Function IsLoaded(ByVal strFormName As String) As Boolean
Const conObjStateClosed = 0
Const conDesignView = 0
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If
但是,使用OpenArgs(http://msdn.microsoft.com/en-us/library/office/ff820845(v=office.15).aspx)
可能更容易在这种情况下你可以这样说:
If IsNull(Me.OpenArgs) Then
MsgBox "No openargs"
Else
Me.txtClientID = Me.Openargs
End If
甚至可以使用Openargs设置默认值。