我有一份ssrs报告,这给了我多个产品的价格。我的参数没有向下钻取,我必须输入参数(因为我有大范围的产品编号)。
现在我的问题是,如何让最后输入的产品(参数)始终显示在报告的底部?这将有助于我在报告中查看最新产品的位置。例如,我的产品编号如下:
ABC-234,
ABC-570,
GHT-908,
现在我想要的是最新输入的产品编号ght-908出现在ssrs报告的底部。现在它给了我多个产品的报告,但它遍布整个地方,我不得不眯着眼睛试图找出我最近输入的产品编号(参数)的位置。我还试图在每次添加产品编号时停止刷新参数。
答案 0 :(得分:0)
假设您的参数名称为MyParameter
,请在报表设计器(BIDS)中将文本框放在数据下方的报表上(例如表格),并将以下表达式放入其值的公式中:
=Parameters!MyParameter.Value.Split(",")(Parameters!MyParameter.Value.Split(",").Length - 1)
它将拆分参数列表并获取最后一个值
更新:这是包含以下步骤的屏幕截图:
这是运行时结果
答案 1 :(得分:0)
这个表达式对我有用:
=Trim(Right(Parameters!Product_Number.Value
, InStr(StrReverse(Parameters!Product_Number.Value), ",") - 1))
Trim
可能不是绝对必要但有用,因为如果使用空格和逗号分隔值,它将起作用。
例如:
答案 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排序表达式设置为上面的,它应该按照报表参数中指定的顺序对产品进行排序。