我正在尝试使用SSRS 2008 R2检查我们是否符合记录患者信息的标准。例如,在PatientID的组标题中,我有=Not IsNothing(Fields!DATEOFBIRTH.Value)
。现在,我想计算返回True的患者数量。显而易见的方法是
=Sum(Iif(Not IsNothing(Fields!DATEOFBIRTH.Value)
, 1
, 0
)
)
(实际上这不起作用,因为我每个病人都有多行,但暂时不介意。)问题是如果我发现我的逻辑错了,我必须在两个地方进行修正,如果我忘记了,那就不明显了。在Crystal中,我要么使用运行计数,评估组的更改,要么使用WhilePrintingRecords;
进行手动计数,并使用公式返回两个位置的T / F结果。通常接受的SSRS方式是什么?感谢。
答案 0 :(得分:2)
如果要集中逻辑,可以在报表中使用自定义代码或创建自定义程序集。使用自定义代码,如果您发现需要进行更改,则必须更新使用相同逻辑的每个报表,但添加到报表很简单。使用自定义程序集,您必须创建一个类库,编译它并将代码添加到您的机器,以便BIDS可以使用它(以及每个开发人员的机器,如果适用)和报表服务器。自定义程序集的优点是存在一个存储逻辑的位置(不计算DLL的分布),因此在更新逻辑时每个报表都会自动更新。此链接是您的起点,并提供了有关这两个选项的更多详细信息的链接:http://msdn.microsoft.com/en-us/library/ms155798(v=sql.100).aspx。