【问题标题】:Use value from a text box as a parameter in a pass through query in Access在 Access 中的传递查询中使用文本框中的值作为参数
【发布时间】:2020-04-09 04:16:43
【问题描述】:

我有一个 Firebird 数据库,我在其中使用名为 SP_SALES 的存储过程来生成相当复杂的销售报告。我现在想使用 MS Access 将几个数据库中的销售报告合并到一个报告中。在 Access 中,我创建了一个普通的通过查询充当链接表,并将为每个数据库执行此操作,从中我可以轻松地整合报告。我现在的问题是我的存储过程中有 FROM DATE 和 TO DATE 参数。所以我在 Access 中的直通查询如下所示:

SELECT * FROM SP_SALES ('2019/01/01' , '2019/12/31')

在提取我的合并报告时,用户应该能够定义 FROM DATE 和 TO DATE。所以我创建了一个可以填充的用户表单。用户窗体名为 frm_CONSOLIDATED_SALES,日期框分别命名为 txt_FROM_DATE 和 txt_TO-DATE。因此,我将 Access 查询更改为如下所示:

SELECT * FROM SP_SALES ([Forms]![frm_CONSOLIDATED_SALES][txt_FROM_DATE] , [Forms][frm_CONSOLIDATED_SALES][txt_TO_DATE]) 

但是,我在运行查询时收到 TOKEN UNKNOWN 错误。我试图避免在 VBA 中执行此操作,因为我不确定如何在 VBA 中进行传递查询。但是,如果我需要走那条路,我们将不胜感激。

【问题讨论】:

    标签: ms-access pass-through


    【解决方案1】:

    Firebird 在收到直通查询时应该如何知道有关您的数据库的任何信息?它不知道[Forms]![frm_CONSOLIDATED_SALES][txt_FROM_DATE] 是什么意思,除了无效语法。

    因此,在传递查询之前,将其 SQL 属性 调整为:

    SELECT * FROM SP_SALES ('2019/01/01' , '2019/12/31')
    

    使用类似的东西:

    YourQuery.SQL = "SELECT * FROM SP_SALES ('" & Format([txt_From_Date], "yyyy\/mm\/dd") & "' , '" & Format([txt_To_Date], "yyyy\/mm\/dd") & "')"
    

    【讨论】:

    • 谢谢,这没有多大意义。但是,这是否意味着我需要在 VBA 中执行查询?
    • 不……你可以留着以后用;这种变化将是持久的。只要你打算使用它时调整它,你不确定参数是否已按要求设置。
    • 非常感谢,在您的帮助下,我能够满足我的要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2014-08-31
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多