问候,
我有一个访问查询,它使用内置参数(例如[开始日期])来提示用户在运行查询时输入日期参数。
在大多数情况下,这已经正常工作,除了今天我尝试将查询导出到文本文件,我收到一个错误:
参数太少。预计2。
这是有道理的,因为查询[开始日期]和[停止日期]中有两个参数,错误的原因是我从未被提示提供值。
如果我导出到Excel,这可以正常工作,而不是文本文件。
有关如何解决此问题或允许我将查询导出到文本文件的任何建议?
谢谢,
访问查询示例:
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]));
答案 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]")