将一个表字段作为参数传递给 s-s-rS 报告中的另一个表
Posted
技术标签:
【中文标题】将一个表字段作为参数传递给 s-s-rS 报告中的另一个表【英文标题】:Pass one table field as a parameter to another table in s-s-rS report 【发布时间】:2014-01-07 12:22:00 【问题描述】:我是 s-s-rS 报告的新手。我正在使用 SQL Server 2008 R2。我创建了一个包含两个表的 s-s-rS 报告,第一个表只有一列,第二个表有多个列。现在我想将第一个表列作为参数传递给第二个表以获取第二个表的结果。
First Table:
Column: Assined_To
Second Table:
Columns: Assined_To,
Status,
Start_date,
End_Date
根据第一个表“Assined_to”的值,我必须显示第二个表。 我为此做了很多谷歌搜索,但没有得到任何解决方案。 我得到的链接: "http://social.msdn.microsoft.com/Forums/sqlserver/en-US/c7e4d614-c4e2-4013-88c0-6aaa947af34f/want-to-pass-one-report-column-values-to-another-report-as-a-parameter-s-s-rs?forum=sqlreportingservices"
我们能做到吗? 请提出您的宝贵建议。提前致谢。
【问题讨论】:
您是希望在打开报表时填充第二个表格,还是通过单击第一个表格中的行值来填充第二个表格? 【参考方案1】:您需要使用级联参数来执行此操作(如果我正确阅读了您的解释) 首先,在报表数据部分展开参数,右键添加参数
如果列有一个固定值,你可以把它分配在那里 - 如果它有多个值,在“默认值”下,你可以将它设置为“从查询中获取结果” 如果您想将它们全部带入,请确保您允许多个结果 - 它会给您一个逗号分隔的字符串到该参数
还请记住,它返回一个字符串,因此要比较这些值,您需要使用 IN 运算符,而不是等于...并且 NOT IN 不是 s-s-rS 中的选项 - 因此需要一些巧妙的解决方法。
我一直在 s-s-rS 中这样做,因为您不能在 SQL 中声明变量 - 这有时令人讨厌,但它确实有效 让我知道这是否有帮助或您有任何其他问题!
【讨论】:
我不确定您所说的 NOT IN 在 s-s-rS 中不可用或无法在 SQL 中声明变量是什么意思。您能否详细说明这些要点? 在 SQL 中,您可以在查询中声明变量以保存数据,但查询设计器中不提供 Declare 函数 - 他们希望您使用报表级别参数来完成所有这些操作。此外,IN 是一个比较运算符,例如在字符串中查找子字符串匹配 - 但您不能执行 NOT IN,与此相反(您永远不知道何时需要 NOT 某些内容)。就是这样,但这听起来不像是您目前需要担心的事情 我想我不同意你的评估,这就是我问的原因。您在 T-SQL 中没有可用的 IN 并且可以在 s-s-rS 中使用它(您只需确保您的查询编写得当)。我想我不认为级联参数是一种解决方法。我认为这可能是在 s-s-rS 中定义变量然后在 SQL 中使用它与在 SQL 中定义它的语义差异。但我相信您可以使用 s-s-rS 中提供的功能实现相同的目标。 NOT IN 在 s-s-rS 中不是一个可用的运算符,不幸的是 - 但是,在设计查询时有一些合理的变通方法。您也不能在 s-s-rS 的查询设计器中使用 DECLARE,因此如果您要生成变量,您将被降级为报告级别参数 啊,我想我明白你在说什么了。在 s-s-rS 中构建表达式时,NOT IN 未列为运算符。确实如此。但是您可以在 SQL 语句中使用 NOT IN 从源中检索数据。我倾向于只提取我需要的数据,因此只在我的 SQL 语句而不是运算符中需要它。由于 s-s-rS 将一次评估给定单元格或单个参数值的数据,因此我从未发现操作员需要执行 NOT IN 函数。您可以使用使用 DECLARE 的存储过程或使用 s-s-rS 参数来完成与在 SQL 中声明变量相同的目标。以上是关于将一个表字段作为参数传递给 s-s-rS 报告中的另一个表的主要内容,如果未能解决你的问题,请参考以下文章