Ms access 如何避免ms access公式中的名称错误?

Ms access 如何避免ms access公式中的名称错误?,ms-access,ms-access-2007,ms-access-2010,Ms Access,Ms Access 2007,Ms Access 2010,我想将表单字段的DefaultValue设置为 =IIf(IsNull([Forms]![MyForm]![MySubForm].[Form]![MyField]);"";[Forms]![MyForm]![MySubForm].[Form]![MyField]) 当MyForm关闭时,我想将字段值设置为“”。不幸的是,我找不到如何测试MyForm是否已关闭:我尝试了IsNull、IsObject,它是否总是返回#Name 这可能吗?我使用这样的函数检查表单是否打开: Function IsL

我想将表单字段的DefaultValue设置为

=IIf(IsNull([Forms]![MyForm]![MySubForm].[Form]![MyField]);"";[Forms]![MyForm]![MySubForm].[Form]![MyField])
当MyForm关闭时,我想将字段值设置为“”。不幸的是,我找不到如何测试MyForm是否已关闭:我尝试了IsNull、IsObject,它是否总是返回#Name


这可能吗?

我使用这样的函数检查表单是否打开:

Function IsLoaded(ByVal strFormName As String) As Boolean
 ' Returns True if the specified form is open in Form view or Datasheet view.

    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

End Function
函数作为布尔值加载(ByVal strFormName作为字符串)
'如果指定的表单在表单视图或数据表视图中打开,则返回True。
Const conobjstate closed=0
Const conDesignView=0
如果SysCmd(acSysCmdGetObjectState、acForm、strFormName)conobjstate已关闭,则
如果表单(strFormName).CurrentView conDesignView则
IsLoaded=真
如果结束
如果结束
端函数

我建议您使用VBA设置默认值,而不是使用上面的语句。尽可能避免IIF。当然,但我还是想知道这是否可能。我认为除了创建这样的函数外,别无选择。也不起作用,但问题似乎来自iff函数。