无法判断报表排序参数列表(通过 Tablix 路由的子报表)如何



我在一个tablix中放置了一个子报表。tablix所在的报表采用一个参数,该参数是订单号列表(A4、B7等)。数据集拆分参数,分离订单号并将其路由到子报表。

当我在主报告中输入参数并运行时,它会根据需要吐出报告副本,但没有明显的顺序。

例如,如果订单号为(A400008,A400005,LSA327,FLA3654),则按以下顺序返回:(LSA327、A400005、FLA3654,A400008)

所以它似乎不是字母数字。我非常困惑,需要强制此报表按输入的顺序返回子报表。如果你需要更多细节,请告诉我。

我建议您重新访问数据集/查询和两个报告,以寻找更有效的方法。根据我的理解,你应该能够在一份报告中得到它,而不需要子报告。您应该能够使用tablix行组来完成此操作。

但如果你想保持原样,请在子报表中转到tablix属性。转到"排序"选项卡并添加"排序选项"。单击表达式。

如果传递的订单数量始终相同(4)。你可以试试这样的东西:

=IIF((Split(Parameters!OrderID.Value, ",")).GetValue(0) = Fields!OrderID.Value, 1,
IIF((Split(Parameters!OrderID.Value, ",")).GetValue(1) = Fields!OrderID.Value, 2,
IIF((Split(Parameters!OrderID.Value, ",")).GetValue(2) = Fields!OrderID.Value, 3,
IIF((Split(Parameters!OrderID.Value, ",")).GetValue(3) = Fields!OrderID.Value, 4,
0))))

如果传递的订单数量可以改变(我认为是这样),那么你可以修改上面的内容,以检查当SPLIT时,字符串每次都会在第n个位置有一个值,持续X次:

=IIF((Split(Parameters!OrderID.Value, ",")).GetValue(0) = Fields!OrderID.Value, 1,
    IIF(IIF((Split(Parameters!OrderID.Value, ",")).Length > 1, 
        SPLIT(IIF(
        SPLIT(Parameters!OrderID.Value, ",").Length > 1, 
        Parameters!OrderID.Value, "1,2")
, ",").GetValue(1), "0") = Fields!OrderID.Value, 2,
    IIF(IIF((Split(Parameters!OrderID.Value, ",")).Length > X, 
        SPLIT(IIF(
        SPLIT(Parameters!OrderID.Value, ",").Length > X, 
        Parameters!OrderID.Value, "1,2,...,X")
, ",").GetValue(X), "0") = Fields!OrderID.Value, X+1,
0)))

再次。。我不建议这样做,但这将按逗号分隔字符串中传递的顺序返回子报告。

最新更新