0

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

现在我的问题是,我怎样才能让最后输入的产品(参数)总是出现在报告的底部?这将帮助我在哪里查看报告中的最新产品。例如,我的产品编号如下:
abc-234、
abc-570、
ght-908、

现在我想要的是最新输入的产品编号 ght-908 出现在 ssrs 报告的底部。现在它给了我多个产品的报告,但它到处都是,我不得不眯着眼睛试图找出我最近输入的产品编号(参数)在哪里。每次添加产品编号时,我也尝试停止刷新参数。

4

3 回答 3

0

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

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

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

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

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

假设产品列在 tablix 中,那么我会将 tablix 排序表达式设置为上述,这应该将产品排序为报告参数中指定的顺序。

在此处输入图像描述

于 2013-06-12T21:33:10.207 回答
0

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

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

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

更新:这是带有步骤的屏幕截图:

在此处输入图像描述

这是运行时结果

在此处输入图像描述

于 2013-06-12T19:34:41.613 回答
0

这个表达对我有用:

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

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

例如:

在此处输入图像描述

在此处输入图像描述

于 2013-06-12T20:28:09.077 回答