访问:当 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 时如何传递参数报告的主要内容,如果未能解决你的问题,请参考以下文章

SQL在where子句中使用子选择中的列

VBA SQL 缺少 WHERE 子句的最后一个条件

EF Core 复杂的 where 子句

从搜索表单动态构建 WHERE 子句时如何防止 SQL 注入?

使用JPA在Sql中具有不同值的多个语句where子句

为啥聚集函数不能出现在where子句中