我有一个Access 2003 MDB,我想在其中提供一个小表单,供用户输入两个参数“开始日期”和“结束日期”。感谢另一个Stack Overflow用户(“Kevin Ross”),我学会了如何将表单控件直接嵌入到我想要显示的报表所使用的查询中。
SELECT q1.CasesAssigned, q2.WarningsIssued
FROM
(SELECT COUNT(*) AS CasesAssigned
FROM vwCaseDetail
WHERE DateAssigned Between [Forms]![frmReporting]![txtStartDate]
AND [Forms]![frmReporting]![txtEndDate]) as q1,
(SELECT COUNT(*) AS WarningsIssued
FROM vwWarningDetail
WHERE DateIssued Between [Forms]![frmReporting]![txtStartDate]
AND [Forms]![frmReporting]![txtEndDate]) as q2
我尝试了两种不同的方法来打开报告并传递用户输入:
用户输入参数后,我拨打DoCmd.OpenReport "myReport", acViewPreview
。这里的问题是报告打开和关闭速度如此之快,我甚至都没有看到它。理想情况下,我想关闭输入集合表单,然后打开报告。
在Report_Open
事件中,我有代码打开收集用户输入的表单。输入集合表单打开,但报告仍然提示我输入两个参数。该报告似乎没有从输入集合表单中收集参数。
有关将表单上收集的数据传递到报告的正确方法的任何建议吗?谢谢。
答案 0 :(得分:3)
那么,
问题应该是你的wantig的逻辑。为什么要报告表单?为什么不填写参数的表单然后调用报告?
您可以通过以下方式执行您的必需品:
创建一个包含与所需参数对应的字段的表单(例如,两个名为Param1和Param2的文本框,名为Form1的表单)
创建一个查询,检索报表的数据,在条件字段中引用表单中的参数(在示例中为[Forms]![Form1]![Param1]
和[Forms]![Form1]![Param2]
)。此外,右键单击查询构建器的空白区域并选择“参数”。使用正确的数据类型通知所有参数(包含整个字符串[Forms]![Form1]![Param1]
和[Forms]![Form1]![Param2]
)。我们将此查询称为Query1
根据Query1创建报告。让我们将此报告称为Report1
返回Form1,创建一个按钮(使用向导,速度更快)来调用Report1。
执行Form1,在运行时用所需参数填充文本框,然后单击按钮。确保表中包含与查询对应的数据。
在应用程序的其他部分中,您可以直接调用Report1,调用将管理Report1查询和显示的Form1。