2009-05-28 50 views
2

问候,导出使用访问查询与参数

我有使用内置的参数(例如,[开始日期])以提示用户在查询被跑到输入日期参数​​的访问的查询为文本。

在大多数情况下,这工作今天除了罚款我试图查询导出到一个文本文件,我收到了一个错误:

Too few parameters. Expected 2.

这是有道理的,因为在查询两个参数[开始日期]和[停止日期],它出错的原因是我永远不会提示我提供一个值。

如果我导出到Excel这工作正常,只是没有文本文件。

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

谢谢

Brett

例Access查询:

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])); 

回答

1

创建一个名为新出口形式。将两个文本框放在窗体上,并将它们命名为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)); 

通过双击打开窗体。填写两个日期字段,并让表单继续运行。以通常的方式导出您的查询。

+0

确定这是有道理的,但什么是疼痛的屁股。这是MS Access的错误,它不提示输出文本向导中的参数? – Brettski 2009-05-29 05:49:58

+0

提示参数事实上只是Access UI的一个怪癖。它知道如何处理缺少的参数,导出文本向导不会。在真实的Access应用程序中,会编写一些将参数值直接插入到查询中的代码。 – 2009-05-29 06:23:51

2

一对夫妇更多的方法:

  • 有一个在微软的KB269671给出一个解决方法。
    基本上,您必须使用具有特殊语法的中间查询。

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

  • 使用和其中RecordSource设置为查询,然后它的FormLoad事件导出窗体为文本,然后关闭窗体的中间隐形数据表窗体。
    只要打开表格就会提示用户输入参数,然后自动保存。

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

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]")