SSRS报告多值参数

问题描述 投票:0回答:3

我有一份ssrs报告,这给了我多个产品的价格。我的参数没有向下钻取,我必须输入参数(因为我有大范围的产品编号)。

现在我的问题是,如何让最后输入的产品(参数)始终出现在报告的底部?这将有助于我在报告中查看最新产品。例如,我有以下产品编号: ABC-234, ABC-570, GHT-908,

现在我想要的是最新输入的产品编号ght-908出现在ssrs报告的底部。现在它给了我多个产品的报告,但它遍布整个地方,我不得不眯着眼睛试图找出我最近输入的产品编号(参数)的位置。我还尝试在每次添加产品编号时停止刷新参数。

reporting-services reporting
3个回答
0
投票

假设您的参数名称是MyParameter,在报表设计器(BIDS)中只需将文本框放到数据下方的报表上(例如表格),并将以下表达式放入其值的公式中:

=Parameters!MyParameter.Value.Split(",")(Parameters!MyParameter.Value.Split(",").Length - 1)

它将拆分参数列表并获取最后一个值

更新:这是包含步骤的屏幕截图:

这是运行时结果


0
投票

这个表达式对我有用:

=Trim(Right(Parameters!Product_Number.Value
  , InStr(StrReverse(Parameters!Product_Number.Value), ",") - 1))

Trim可能不是绝对必要但有用,因为如果值用空格和逗号分隔,它将起作用。

例如:


0
投票

听起来您希望按照产品代码的顺序对存储过程的结果进行排序,因为它们被输入到报告参数(以逗号分隔的列表)中。

您可以使用Array.IndexOf和Split函数返回参数中每个产品代码的索引(顺序),例如:

如果您有一个名为“ProductNumber”的报表参数,并且您的数据集中还返回了一个名为“ProductNumber”的字段,则以下代码将返回输入到参数列表中的产品编号的从零开始的索引:

=Array.IndexOf(
     Split(Parameters!ProductNumber.Value.ToString(), ",")
   , Fields!ProductNumber.Value
 )

因此,如果abc-234是参数列表中的第一个产品编号,则此代码将返回0.如果abc-570是参数列表中的第二个产品编号,则此代码将返回1,等等。

假设产品列在Tablix中,那么我将tablix排序表达式设置为上面的,它应该按照报表参数中指定的顺序对产品进行排序。

© www.soinside.com 2019 - 2024. All rights reserved.