【问题标题】:access 2007 bug - intermittent query parameter promptsaccess 2007 bug - 间歇性查询参数提示
【发布时间】:2010-07-26 18:18:50
【问题描述】:

我正在开发由其他人创建的 Access 2007 应用程序。它有一个奇怪的间歇性错误,当打开主窗体时它会提示用户输入查询参数。查询参数显然不是必需的,因为错误并不总是发生。

这个问题的一个非常奇怪的“修复”是在打开主窗体之前打开和关闭一个特定的模块。然后表单打开,没有参数提示。但是,我当然不能要求最终用户打开和关闭模块。

我尝试在打开数据库时使用宏来打开和关闭模块。这修复了错误,但使 VBA 代码窗口保持打开状态,所以这不好。

以前有没有人遇到过这样的事情?任何建议的解决方案、变通方法、调试技巧等?

【问题讨论】:

  • 也许这些缺失的参数是对有时打开有时不打开的表单或报表上的控件的引用。要求什么参数?
  • 它提示输入一个表单组合框值,它应该自动填充用户的 Windows 登录。
  • 组合框在主窗体上。有一个主窗体和几个子窗体,显示在主窗体的选项卡中。当我打开主窗体并提示输入参数时,没有其他窗体打开。
  • 问题是组合框没有填充,还是您在特定上下文中不需要它的值?
  • 如果我取消参数提示,则不会加载任何表单数据,包括组合框。

标签: ms-access ms-access-2007 vba


【解决方案1】:

如果您使用“Database Documenter”功能并对所有选项选中“是”,您将获得一份详尽的报告,让您可以捕获问题参数。将此报告导出为 .rtf 或 .pdf 文档,以便进行搜索。从对话框提示中识别一个关键字,然后进行搜索。


使用 Documenter 检查查询对象后,请检查您的 VBA 代码。您将通过单步执行 IDE 中的代码来完成此操作。如果主窗体有子窗体,它们会在主窗体中(在主窗体内)打开。它们在主窗体之前加载。

  1. 识别这些子表单。
  2. 洒 代码模块中的断点 (如果你找到一个 Load 函数,那 高度相关)。
  3. 如果主窗体有 代码模块,在那里做同样的事情。

【讨论】:

  • 我这样做并从提示对话框中搜索组合框的名称。它出现在九个查询中。它也出现在主窗体和子窗体之一的代码中。不知道如何从这里开始。我应该寻找什么?
  • 有时临时参数会“卡”在查询中——一些随意的东西,比如排序,无法清除自身,然后让事情挂起。 Documenter 将帮助您找到它——然后您可以打开查询并将其删除。更有可能的情况是,您的表单中的代码以某种您不期望的方式被调用。 (子表单在父表单之前加载,这可以产生有趣的行为。)你知道如何设置断点,我相信?
  • 我会更仔细地查看查询。是的,我知道如何设置断点——有什么特别需要检查的吗?通过单击带有嵌入宏的按钮打开主窗体。该宏所做的只是打开主窗体。所以我看不到如何首先加载任何子表单。有没有办法验证?
  • @ '我会更仔细地查看查询' -- 不要通过 Access 界面尝试这样做;相反,请检查来自 Documenter 的这 9 个搜索结果。 Access 将查询参数存储在一些奇怪的位置,但 Documenter 会公开所有这些参数。
【解决方案2】:

查看模块中需要打开和关闭的全局变量或属于表单的模块中引用的任何变量。

【讨论】:

  • ???我不相信无法访问的变量会产生参数提示。他们只会给你一个编译错误。
  • OP 说“解决方案是打开和关闭特定模块”,这指向该模块中定义的变量。它可能会以导致缺少参数的方式使用。
  • 我仍然没有看到模块如何导致参数提示,除非模块中有一个未公开声明的函数。 SQL语句不能直接访问变量,所以我只是不认为公共变量的范围是参数提示的原因。
  • 在我看来,只有当模块包含全局变量时,打开模块才能解决问题。比如说,只是为了好玩,它包含要包含的字段的名称,该名称在另一个模块中被错误地命名。
  • 我认为打开模块很可能被误认为是解决方案。模块中唯一可以通过查询访问的是公共函数或使用该模块中的变量的公共函数。但是 VBA 会在函数需要时立即加载带有公共变量定义的模块。事实上,在 2000 年后,我认为整个 VBA 项目首先被加载,所以我不认为这是可行的合理理由。 OP 似乎对提供更多细节不感兴趣,所以我们可能永远不会知道。
【解决方案3】:

当您打开包含 Access 无法解释的标识符或表达式的对象时,Access 会显示 输入参数值 对话框。您需要确定源对象。这是一个分步指南: http://office.microsoft.com/en-us/access-help/why-does-access-want-me-to-enter-a-parameter-value-HA010274377.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多