如果值小于阈值

时间:2017-01-10 18:19:44

标签: reporting-services ssrs-2008 ssrs-2008-r2 ssrs-2012 ssrs-tablix

我有一个非常独特的问题&我已经阅读了无数的主题,没有找到正确的答案。 请帮助我。

  1. 我有一个矩阵,我计算所有满意,非常安全,既不满意也不满意或非常不满意或不满意的计数。 即使计数值小于5 i,使用下面的代码隐藏5的计数。

    =(切换(计数(字段!Q27_A_1.Value)< 5," *",  Count(Fields!Q27_A_1.Value)> 5,Count(Fields!Q27_A_1.Value)))

  2. 我需要将此单元格的总数计入行中的另一个单元格并显示其值

    But if it contains any "*" values 
    then total will be "*" 
    else display = Count(Fields!Q27_A_1.Value).
    

    我已经写了这些自定义代码行但没有工作。 : 获取错误:输入字符串的格式不正确

    Public Function SafeConvert(ByVal num As String) As String
    
    Dim s as String
    IF IsNumeric(num) <5 
    Then
    Return "*"
    Else :
    For i as integer = 0 to 4
    s += num
    Next 
    Return s
    End IF
    
    End Function
    

    最后,我使用

    将此功能调用到该单元格中
    =Code.SafeConvert(ReportItems!Textbox4.Value)
    

1 个答案:

答案 0 :(得分:0)

您的自定义代码的问题似乎是多余的,因为除了您已经拥有的表达之外,它不会完成更多任务。所以我建议不要使用任何自定义代码。

这里的主要问题是引用其他单元格中的值。 SSRS对此内置的支持有限。您不能拥有分组表达式,然后引用它并再次聚合它。但是有办法解决它以获得理想的最终结果。

执行此操作的一种方法是在SQL中使用子查询来获取所需的其他值。然后在报告中,您将引用新列来计算过滤值。如果可能,我建议使用这种方法。

另一种选择是将计算字段添加到数据集中。您需要编写一个逐行过滤数据的表达式。根据您的具体要求,这可能还不够。同样,您将在表中引用此新列。

我知道这不是一个具体的答案,但我希望它能指出你正确的方向。