s-s-rS 报告 - 如何使参数灵活

Posted

技术标签:

【中文标题】s-s-rS 报告 - 如何使参数灵活【英文标题】:s-s-rS Report - How to make parameter flexible 【发布时间】:2022-01-06 23:51:44 【问题描述】:

我希望 s-s-rS 报告具有灵活的参数。

例如,得到两个参数,即 OTP No(文本字段)和分支代码(下拉列表中的多个值)。

如果要根据OTP No搜索,报告应该只根据OTP No搜索。

如果要根据分支代码进行搜索,则与分支代码相同,报告应仅根据分支代码进行搜索。 如果两个参数都有值,则报告应同时搜索字段 A 和字段 B。

以下是我的查询。

where ((@otpNo ='' ) and (@branchCode is not null) and (branch_code in (@branchCode))) 
or ((@branchCode is null) and (@otpNo is not null) and (otp_no = @otpNo))
or ((@otpNo is not null) and (@branchCode is null) and (otp_no = @otpNo) and (branch_code in (@branchCode)))

但是我遇到了错误,我怀疑分支代码是多值导致我的查询不起作用。

【问题讨论】:

仅供参考,SQL Server 2008 已完全不受支持超过 2 年;很久以前你就已经整理好升级路径了。 对于上述查询,您最好使用存储过程。 目前 SQL server 是 2016。请进一步详细说明您的意思是使用存储过程更好? 那你为什么要标记 [sql-server-2008] 和 [s-s-rs-2008-r2]?据我所知,[powerbi] 与这些版本不兼容。正确标记。 更新了标签。你能告诉你使用存储过程更好的意思吗? 【参考方案1】:

您应该让分支代码发送所有值(如果用户不想过滤特定值)以使查询更简单。

where 
   (NULLIF(@otpNo, '') IS NULL OR otpNo = @otpNo) AND
   branch_code IN (@branchCode)

【讨论】:

你是对的..如果不想要特定过滤器,用户分支代码应该发送所有值...感谢您的启发...

以上是关于s-s-rS 报告 - 如何使参数灵活的主要内容,如果未能解决你的问题,请参考以下文章

如何在第一个参数选择 s-s-rs 2008 报告的基础上添加级联参数

如何在 s-s-rS 订阅的主题行中包含报告参数?

如何在 s-s-rS 报告中将多个参数作为单独的多个页面传递?

如何根据 startdate 和 enddate 参数隐藏 s-s-rs 报告生成器中的列?

具有空值的 s-s-rS 输入参数触发报告本身

如何根据 2 个数据源过滤 s-s-rS 报告