SSRS报告多值参数

时间:2013-06-12 19:15:48

标签: reporting-services reporting

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

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

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

3 个答案:

答案 0 :(得分:0)

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

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

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

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

enter image description here

这是运行时结果

enter image description here

答案 1 :(得分:0)

这个表达式对我有用:

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

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

例如:

enter image description here

enter image description here

答案 2 :(得分:0)

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

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

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

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

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

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

enter image description here