使用带参数的访问查询导出到文本

时间:2009-05-28 21:21:49

标签: ms-access export

问候,

我有一个访问查询,它使用内置参数(例如[开始日期])来提示用户在运行查询时输入日期参数​​。

在大多数情况下,这已经正常工作,除了今天我尝试将查询导出到文本文件,我收到一个错误:

  

参数太少。预计2。

这是有道理的,因为查询[开始日期]和[停止日期]中有两个参数,错误的原因是我从未被提示提供值。

如果我导出到Excel,这可以正常工作,而不是文本文件。

有关如何解决此问题或允许我将查询导出到文本文件的任何建议?

谢谢,

Brett

访问查询示例:

SELECT PR_EARN.Emp_No, PR_EARN.Pay_Code, PR_EARN.Hours, PR_EARN.Rate, PR_EARN.Pay_Amt, PR_EARN.Pay_Date
FROM PR_EARN
WHERE (((PR_EARN.Pay_Date) Between [Start Date] And [End Date]));

3 个答案:

答案 0 :(得分:2)

还有几种方法:

  • Microsoft的KB269671中提供了一种解决方法 基本上,您必须使用具有特殊语法的中间查询。

  • 您还可以将查询更改为生成表查询,然后导出其数据。

  • 使用和中间不可见的数据表单,其RecordSource设置为查询,然后让FormLoad事件将表单导出到文本然后关闭表单。
    只需打开表单,系统就会提示用户输入参数,然后自动保存。

Robert's answer可能仍然是最简单的。

答案 1 :(得分:1)

创建一个名为Export的新表单。在表单上放置两个文本框,并将它们命名为StartDate和EndDate。保存表单。更改您的查询以阅读以下内容:

SELECT PR_EARN.Emp_No, PR_EARN.Pay_Code, PR_EARN.Hours, PR_EARN.Rate, PR_EARN.Pay_Amt, PR_EARN.Pay_Date
FROM PR_EARN
WHERE (((PR_EARN.Pay_Date) Between Forms!Export!StartDate And Forms!Export!EndDate));

双击打开表单。填写两个日期字段,并保持表单运行。以通常的方式导出您的查询。

答案 2 :(得分:0)

我能够通过使用eval函数解决这个问题。所以而不是:

Between [Forms]![Reporting Import and Export]![date_exportstart] And [Forms]![Reporting Import and Export]![date_exportend]

使用Eval

Between Eval("[Forms]![Reporting Import and Export]![date_exportstart]") And Eval("[Forms]![Reporting Import and Export]![date_exportend]")