如何解决将多个值传递到子报告参数SSRS
我有一个显示产品详细信息的报告。其中一些产品将是“亲子产品”。子级有3列Parent1
Parent2
和Parent3
。
子报表运行相同的查询,但有一个变量@ParentCodes
。设置为varchar(max)
。然后,我在where子句中使用一个函数来拆分可能传递的代码ParentCode in (SELECT [Value] FROM dbo.SplitMultiValueParameterString(@ParentCodes,','))
如果我在('123','456')
这样的字符串中输入2或3个代码,则查询将返回所需的2行。
我正在努力让它在SSRS中工作。我已经设置了两个报告,并将@ParentCodes
参数添加到了子报告中。
在主报表中,我正在对文本框执行操作以转到子报表,并使用以下值表达式@ParentCodes
传递参数=Fields!Parent1.Value & Fields!Parent2.Value & Fields!Parent3.Value
在子报表中,在数据集中的参数选项卡中,我添加了@ParentCodes
参数并使用表达式=JOIN(Parameters!ParentCodes,",")
这无法正常工作,任何人都可以理解我的工作并提出解决方案吗?
解决方法
在SSRS中,如果您使用直接语句(因为您只是将原始SQL转储到报表数据中),则需要使用class Client(models.Model):
name = models.TextField()
number = models.JSONField(default=list)
和SSRS(就我所讨厌的一样)“安全”将注入的参数替换IN
中的变量。简单来说,请执行以下查询:
IN
然后,在报告中选择参数SELECT *
FROM dbo.YourTable
WHERE ID IN (@ID);
,1
,2
和3
。它将注入这些,查询将变为以下内容:
4
但是,如果您使用的是存储过程,则需要使用字符串分隔符(例如DelimitedSplit8k_LEAD
)来完成工作,并将参数设置为SELECT *
FROM dbo.YourTable
WHERE ID IN (1,2,3,4);
:
(n)varchar
,
您似乎希望查询在子报表中执行动态SQL,但这无法正常工作,但SSRS应该可以满足您的需求。
尝试将This与带有多个父代码的子报表一起使用。
在子报表的where子句中,您应该可以执行以下操作:
其中的父代码输入(@parentcodes)
您可能需要根据this:文章来调整JOIN表达式,但这可能会起作用。
,如果我对您的理解正确,子报表将接受一个逗号分隔的字符串作为参数,并从主报表中填充该字符串?
如果是这种情况,那么您的表情
=Fields!Parent1.Value & Fields!Parent2.Value & Fields!Parent3.Value
错误,因为它没有任何分隔符,所以123和456将作为123456发送。
您可能需要类似的东西
=Fields!Parent1.Value & "," & Fields!Parent2.Value & "," & Fields!Parent3.Value
另一种选择是只传递子产品的ID,然后在子报表的查询中获取父ID。您无需进行任何处理即可以这种方式构建或拆分参数值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。