代码之家  ›  专栏  ›  技术社区  ›  MISNole

SSRS中仅对可见行求和

  •  1
  • MISNole  · 技术社区  · 9 年前

    我试图只对报表的可见行求和,我知道格式是:

    =Sum( iif( <use the condition of the Visibility.Hidden expression>, 0, Fields!A.Value))
    

    在我的报告中,我将行可视性设置为:

    =IIF(CInt(Fields!EM_ET.Value)=1 Or CInt(Fields!EM_ET.Value)= 2,True,False)
    

    不完全确定我缺少什么,但当我将其用作表达式时:

    =Sum(IIF(CInt(Fields!EM_ET.Value)=1 Or CInt(Fields!EM_ET.Value)= 2,True,False),0,Fields!EM_ET.Value)
    

    我遇到以下错误:textrun'FTD1.Paration[0].TextRuns[0]'的值表达式具有对聚合函数无效的作用域参数。

    enter image description here

    3 回复  |  直到 9 年前
        1
  •  3
  •   Mahesh    9 年前

    你给了 True/False 作为输出到 SUM() 您需要将表达式更改为,

    =Sum(IIF(CInt(Fields!EM_ET.Value) = 1 Or CInt(Fields!EM_ET.Value)= 2,0,Fields!EM_ET.Value))
    
        2
  •  0
  •   Hari    9 年前

    感谢代码的编写者。 如果我正在使用“0”,我会收到一些错误消息,因此我将其替换为无效。我想这会很有帮助。

    =SUM(IIF(ISNOTHING(Fields!value1.Value) OR ISNOTHING(Fields!value2.Value),NOTHING,Fields!value1.Value))
    
        3
  •  0
  •   coachT    6 年前

    我也有类似的问题。我知道这个问题有一个明确的答案,但它并不完全正确。

    以下包含“标记正确”答案的代码:

    =Sum(IIF(CInt(Fields!EM_ET.Value) = 1 Or CInt(Fields!EM_ET.Value) = 2,0,Fields!EM_ET.Value))
    

    下面的代码片段包含上面的代码,稍作调整:

    =Sum(IIF(CInt(Fields!EM_ET.Value) = 1 Or CInt(Fields!EM_ET.Value) = 2,NOTHING,Fields!EM_ET.Value))
    

    通过将“0”更改为“NOTHING”,这将解决公式中的任何遗留问题。我遇到的公式是在单元格中返回“#Error”,该单元格应返回行组中列中可见单元格的总和。

    我的公式最初是这样的:

    =IIF(Sum(Fields!VCBitType.Value) <> 0 OR (Parameters!Details.Value = "Detail"), Sum(IIF((Fields!VCBitType.Value = 0) and (Parameters!Details.Value = "Dangerous"),0,Fields!VC.Value)), "")
    

    在看到Hari的上述评论后,我改变了我的公式:

    =IIF(SUM(Fields!VCBitType.Value) <> 0 OR (Parameters!Details.Value = "Detail"), SUM(IIF((Fields!VCBitType.Value = 0) and (Parameters!Details.Value = "Dangerous"),NOTHING, Fields!VC.Value)), "")
    

    我想将单元格值设置为“”(空),而不是在报告中完全隐藏单元格或将单元格值设为“0”(因为不完全显示单元格会使报告看起来很奇怪)。因为我这样做了,所以在公式中使用“0”与单元格的值“”(空)冲突,导致公式中断。我所做的唯一更改是将“0”更改为“Nothing”,这解决了我在单元格公式中遇到的问题。