仅对 SSRS 中的可见行求和

Summing Only Visible Rows in SSRS

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

=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.Paragraph[0].TextRuns[0]' 的值表达式具有对聚合函数无效的范围参数。

您将 True/False 作为 expression.You 的 SUM() 的输出,需要将您的表达式更改为,

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

感谢码农。 如果我使用“0”,我会收到一些错误消息,所以我替换了它没有用的东西。我认为这会有所帮助。

=SUM(IIF(ISNOTHING(Fields!value1.Value) OR ISNOTHING(Fields!value2.Value),NOTHING,Fields!value1.Value))

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

以下包含来自 "marked correct" 答案的代码:

=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",这将解决您的公式中任何挥之不去的问题。我遇到问题的公式是 return 单元格中的“#Error”,该单元格应该 return 行组内列中可见单元格的总和。

我的公式原来是这样的:

=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",这解决了我在使用单元格公式时遇到的问题。