Reporting services SSRS-从sum中排除隐藏值-无SQL使用行号()
希望use能帮助我做到这一点: 我的数据集使用预构建模块,因此无法使用SQL为字段添加行号() 我需要能够从总和中排除隐藏值,如下所示:Reporting services SSRS-从sum中排除隐藏值-无SQL使用行号(),reporting-services,sum,hidden-field,Reporting Services,Sum,Hidden Field,希望use能帮助我做到这一点: 我的数据集使用预构建模块,因此无法使用SQL为字段添加行号() 我需要能够从总和中排除隐藏值,如下所示: 在字段中,我使用了以下表达式: IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),0,Fields!SpaceArea.Value) 在该字段的SpaceArea->Visibility->show或hide的Textbox属性中,我还将此表达式用于hidden: =IIF(Fields!Space
IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),0,Fields!SpaceArea.Value)
=IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),True,False)
=Sum(IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),Fields!SpaceArea.Value,Nothing))
SpaceID\u组
李>
SpaceArea=(123+12+1)
的预期总和李>
行编号()
,因为没有SQL。查询是用XML而不是SQL设计的李>
我设法在tablix中创建了另一列,行值为=行号(“SpaceID\u组”)
但我不知道如何把它和我的总数联系起来。如果我有SQL,它会是这样的:
sum(iif(Fields!RowNumber.Value=1,Fields!SpaceArea.Value,Nothing))
公共共享MyTotal作为整数
函数AddTotal(ByVal t作为整数)作为整数
MyTotal=MyTotal+t
返回我的总数
结束功能
code.AddTotal(Fields!SpaceArea.Value)
添加到SpaceId组code.MyTotal
添加到字段摘要中。
在某些版本(如SSRS 2005)中,由于执行顺序的原因,您可能会注意到计算返回零。在本例中,添加一个字段,该字段的表达式位于表下方您的数据集中是否有唯一的列?对于这个受限场景,唯一想到的可能是一个代码隐藏函数,它查找唯一的列值并返回0,或者返回基于先前逻辑的值,您将使用vb进行编码。这似乎太容易了,但是您是否尝试过对值求和?您已将该值设置为0,以便它可以正常工作。非常感谢您的快速回答。他们都没有工作。即使我将复制的值设置为0加上隐藏。总和仍然将这些值相加。使用Previous aggregate函数时出现了我前面提到的错误:=Sum(IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),Fields!SpaceArea.Value,Nothing))错误是:aggregate,RowNumber,RunningValue,在计算字段表达式中不能使用Previous和lookup函数。即使我将重复值设置为0,然后尝试作为Sum(Fields!SpaceArea.value),它仍然不起作用。等等,如果你已经在你的tablix上创建了一个包含行号的新列,为什么不能使用你提到的IIF语句呢?嗨,NIKTRS,我可以在页脚添加一个文本框。然后我在文本框中添加了这个表达式:=Sum(ReportItems!SpaceArea.value),得到了非常正确的Sum结果,这是我期望看到的结果。但是,如何将该值从页脚中的隐藏文本框链接到主表中的报告?@Tubi我已使用自定义代码更改了方法,效果更好。我听从了您的建议。首先,由于您说RowId不起作用,我在这里看不到它的作用,所以我删除了RowId列。我将代码添加到报告中,并将code.MyTotal添加到总和中。然而,它只是一个接一个地求和。例如,它应该和1+2+3+4+5相加。但是第一次结果是1,当我选择上一页,返回到最后一页时,sum=3表示(1+2),我做了相同的操作:切换页面,第三次结果是sum=6,表示(1+2+3),然后继续这样。不确定我在这里是否做错了什么…您使用的是哪个版本的SSRS?嗨,Niktrs,我终于能够按如下方式使其工作:=Sum(Max(Max(Fields!SpaceArea.Value,“SpaceIDGroup”))我非常感谢您的好意和宝贵的时间。:)