表格从两种其他形式收集信息

时间:2014-08-02 04:24:29

标签: forms field ms-access-2013 isnull

我有一个创建新工单的表单。我希望能够从新客户表单或主菜单中提取ClientID,无论哪个是开放的。但是我没有得到预期的结果:

我在新工作订单表单的控件的默认值中使用了=IIf(IsNull(Forms![New Client]![txtClientID]), Forms![Main Menu]![txtClientID], Forms![New Client]![txtClientID])。当我从New Client转到表单时,我得到了正确的ID,但是当我尝试从主菜单访问它时出现#Name错误。

我该怎么做才能让它发挥作用?

1 个答案:

答案 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设置默认值。