首页 > 解决方案 > 在 Access 中的传递查询中使用文本框中的值作为参数

问题描述

我有一个 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-accesspass-through

解决方案


接收传递查询时,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") & "')"

推荐阅读