【问题标题】:Access 2007 - Docmd.OpenForm not opening form, OpenArgs?Access 2007 - Docmd.OpenForm 没有打开表单,OpenArgs?
【发布时间】:2011-03-20 12:19:05
【问题描述】:

所以我尝试使用按钮单击打开下一个表单(在我的表单流程中),并使用 openArgs 将 ID 传递给下一个表单:

docmd.openform "NextForm",,,,,, MainID
docmd.close acform, "CurrentForm", acSaveYes

第二个表单将无法打开....我以前从未遇到过在 sub 中使用 docmd.openform 的问题。然而,这是我第一次使用 OpenArgs....通常我会将值传递给隐藏的文本框,但我正在尝试不同的东西。

例程运行没有错误,并且当前窗体正常关闭。就像访问确信第二种形式实际上是开放的,但它没有出现。另外,如果我什至尝试显示数据库对象窗口,然后单击从那里打开表单.....什么都没有

请帮忙! 谢谢 贾斯汀

【问题讨论】:

    标签: database ms-access forms ms-access-2007


    【解决方案1】:

    就像 access 确信第二个表单实际上是打开的,但它没有显示出来。

    如果在表单显然无法打开时没有收到错误消息,请检查 NextForm 是否存在于 Forms 集合中。在即时窗口中,尝试:

    ? Forms("NextForm").Name
    

    会发生什么? Forms 集合包括打开的表单。如果您收到未找到 NextForm 的错误消息,则 NextForm 未打开。但是,如果该命令返回名称 NextForm,则该表单已打开但您看不到它。

    这至少可以通过两种方式发生:

    1. 表单已隐藏打开
    2. 表单已在可见显示区域之外的屏幕位置打开

    如果表单确实无法打开,并且您没有收到错误消息,请确保您没有关闭 SetWarnings 和 Echo。

    如果这些建议不能让您找到解决办法,请向我们展示 NextForm 正在尝试使用 OpenArgs 做什么。如果你暂时禁用它的 OpenArgs 处理代码,你能让 NextForm 打开吗?

    更新:还有几个问题...

    你能在设计视图中打开 NextForm 吗?

    如果您在即时窗口中尝试以下命令会发生什么?错误信息?

    DoCmd.OpenForm "NextForm",,,,,acWindowNormal
    

    【讨论】:

    • 你是对的 Hans....他们显示为隐藏,因为他们没有控制框。一旦我启用了控制箱...您所看到的只是控制箱,直到我重新调整它的大小...谢谢!
    • 这是个好消息!我还没有遇到过没有错误消息而无法打开表单的情况。我不知道这是否可能。因此,您缺少错误消息使我怀疑该表单确实打开了。同时,我仍然很好奇表单何时无法打开而没有错误消息。
    • 在我的情况下,问题出在我连接了第二台显示器时。
    【解决方案2】:

    您无需使用 Open Args 即可打开表单并对其进行控制

    您可以通过打开另一个表单来做到这一点,就像它是一个班级一样

    创建一个名为 GlobalVars 的模块,其中包含这一行:

    Public Form_MyFormNameToOpen as Form_MyFormNameToOpen
    

    (您打开的表单将一直保持打开状态,直到此变量“死亡”,因此将其设为全局以使其保持活动状态)

    MyFormNameToOpen 是您要打开的表单的名称,在我的一些示例代码中前面有 Form_。这告诉访问获取“表单类”,即您创建的表单之一。

    然后在要打开表单的代码中使用:

    ' Opens the form using it as it were a class
    Set GlobalVars.Form_MyFormNameToOpen = New Form_MyFormNameToOpen
    
    ' The modify the form you have just opened however you want to.
    With Form_MyFormNameToOpen
        .Visible = True
    
        ' This relies ont he control names never changing
        .Controls("ProviderID") = 10
        .Controls("ProviderFileID") = 11
    
    
        ' it's better to use properties created on the called form
        ' eg
        .MyLetProviderID = 10
        .MyProviderFileID = 11
    End With
    

    我希望这会有所帮助。

    我发现使用开放参数真的很痛苦,除了最基本的东西。使用这样的表单让生活变得更轻松。

    (也许您可以对子表单等使用类似的技术...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多