【问题标题】:Access Call Macro from Query (Opening a Form) Run-time error '2486': You can't carry out this action at the present time从查询访问调用宏(打开表单)运行时错误“2486”:您目前无法执行此操作
【发布时间】:2014-01-22 22:02:24
【问题描述】:

我有一个访问查询,它要求在表单内的组合框中设置一个值才能工作

Criteria: Forms![_SelectCustomer]![CmbSelectCustomer]

到目前为止一切都很好,但是,我希望查询在使用宏运行时以编程方式打开、读取和关闭此表单。

我一直在关注@David-W-Fenton 在THIS similar stack overflow question 中的回答,并提出了以下代码:

Public Function rtnSelectCustomer() As Variant

DoCmd.OpenForm "_SelectCustomer", , , , , acDialog
  With Forms![_SelectCustomer]
    If .Tag <> "Cancel" Then
      rtnSelectCustomer = Nz(!CmbSelectCustomer, "*")
    Else
      rtnSelectCustomer = "*"
    End If
  End With
  Close acForm, "_SelectCustomer"
End Function

我从要在查询中过滤的属性的条件字段中调用此函数:

Like rtnSelectCustomer()

此时我遇到了几个问题:

  • 首先,我不确定将实际代码放在哪里:我似乎无法在“Microsoft Access Class Objects”文件夹中为我的查询创建特定的类或模块,所以我已经采取了措施在 Modules 文件夹中创建我自己的模块。 (这是正确的方法吗?)

  • 第二个问题是,当我使用我创建的当前模块中的代码运行查询时,出现以下错误:

    运行时错误“2486”: 您目前无法执行此操作。

任何建议将不胜感激


编辑:

我应该澄清的是,在进一步测试后似乎导致运行时错误的行如下:

DoCmd.OpenForm "_SelectCustomer", , , , , acDialog

实际上调用该函数是因为用以下代码替换内部代码确实有效(尽管毫无用处)

Public Function rtnSelectCustomer() As Variant
  rtnSelectCustomer
End Function

【问题讨论】:

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


    【解决方案1】:

    一般来说,我讨厌微软“预编程”的东西,我宁愿自己做。看来这也是你的情况......

    我会分两步完成。

    第 1 步:向用户显示查询正在运行(而不是实际运行)并存储用户选择的值。

    第二步:使用值参数化查询

    如果您的功能运行良好,那么只需记住用户选择的内容然后执行:

    set qdf = new QueryDef
    ' set the qdf and add all parameters to it
    DoCmd.Execute qdf 
    

    为了进一步了解 QueryDef 的工作原理,我将使用 msdn site

    【讨论】:

    • 好的,我需要考虑一下,看看它是否适用于我的情况。我希望查询直接运行表单而不是反之亦然(通常这样做)的原因是,可以轻松地从报告中执行查询。该工具的预期最终用户不是很熟练,如果他不能使用报表向导将查询集成到报表中,那么查询对他来说将毫无用处。报表可以执行宏来获取数据吗?
    • 对不起...这超出了我的技能水平。我总是创建自己的表单和自己的 Excel 报告,因为您可以作为用户使用它们,并作为开发人员使用按钮和其他功能。这可能需要更多的工作,但我认为这是值得的灵活性
    猜你喜欢
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多