访问:当 WHERE 子句嵌入复杂 SQL 时如何传递参数报告
Posted
技术标签:
【中文标题】访问:当 WHERE 子句嵌入复杂 SQL 时如何传递参数报告【英文标题】:Access: How to pass parameters to report when WHERE clause is embedded in complex SQL 【发布时间】:2010-10-04 13:34:00 【问题描述】:我知道如何传递参数的问题已经被问过一段时间了 Previous Stack Overflow question
但是,我的情况涉及的 SQL 稍微复杂一些,并且在打开报表时无法使用可用的“where 子句”过滤器。我的 SQL 语句是一种聚合,它生成一行,每个聚合都有一个字段。我有两个参数“@StartDate”和“@EndDate”需要传递到查询中。
SELECT q1.CasesAssigned, q2.WarningsIssued
FROM
(SELECT COUNT(*) AS CasesAssigned
FROM vwCaseDetail
WHERE DateAssigned Between @StartDate AND @EndDate) as q1,
(SELECT COUNT(*) AS WarningsIssued
FROM vwWarningDetail
WHERE DateIssued Between @StartDate AND @EndDate) as q2
我想做的是“弹出”一个对话框或小表单,让用户输入开始和结束日期,但我不知道如何将值传递到报告所基于的查询中。有什么建议么?谢谢。
【问题讨论】:
【参考方案1】:您需要做的就是从表单中调用报告。在此表单上,您有两个文本框,分别表示您的开始日期和结束日期。
然后必须将查询更改为
WHERE DateAssigned Between [Forms]![frmReporting]![txtDate_from] AND [Forms]![frmReporting]![txtDate_to]
【讨论】:
这很棒!这允许我在将用户输入传递给报告之前对其进行验证。现在我只需要弄清楚为什么报告会自行打开和关闭。输入所有值后单击“确定”按钮后启动报告。也许这是另一个问题 :) 谢谢凯文! 我添加了另一个堆栈溢出问题来解决这个问题..***.com/questions/3856261/… 正如我在其他问题的评论中建议的那样,您可以考虑在报表的 OnOpen 事件中打开表单并使用适当的 WHERE 子句设置报表的 Recordsource。以上是关于访问:当 WHERE 子句嵌入复杂 SQL 时如何传递参数报告的主要内容,如果未能解决你的问题,请参考以下文章