2012-06-08 3 views
0

Я пытаюсь проверить наше соответствие стандартам для документирования информации о пациенте с использованием SSRS 2008 R2. Например, в заголовке группы для PatientID у меня есть =Not IsNothing(Fields!DATEOFBIRTH.Value). Теперь я хотел бы подсчитать количество пациентов, для которых это возвращает True. Очевидный способИтоговое выражение из заголовка группы в SSRS

=Sum(Iif(Not IsNothing(Fields!DATEOFBIRTH.Value) 
     , 1 
     , 0 
     ) 
    ) 

(который на самом деле не работает, потому что у меня есть несколько линий на одного пациента, но никогда не забывайте, что на данный момент.) Проблема заключается в том, что если я нахожу мою логику не так, у меня есть сделать коррекцию в двух местах, и это не будет очевидно, если я забуду. В Crystal я либо использовал бы текущую таблицу, оценивая изменение группы, либо ручную таблицу с WhilePrintingRecords;, имея формулу, возвращающую результат T/F в обоих местоположениях. Каков общепринятый способ SSRS? Благодарю.

ответ

2

Если вы хотите централизовать логику, вы можете использовать пользовательский код в отчете или создать пользовательскую сборку. С помощью настраиваемого кода вам придется обновлять каждый отчет, который использует эту же логику, если вы обнаружите, что вам нужно внести изменения, но его просто добавить в отчет. С помощью специальной сборки вы должны создать библиотеку классов, скомпилировать ее и добавить код на свой компьютер, чтобы BIDS мог его использовать (и, при необходимости, на каждом компьютере разработчика) и на сервере отчетов. Преимущество с пользовательской сборкой заключается в том, что есть одно место для хранения логики (не считая распределения DLL), поэтому каждый отчет автоматически обновляется при обновлении логики. Эта ссылка является отправной точкой для вас и содержит ссылки на более подробную информацию об обоих этих параметрах: http://msdn.microsoft.com/en-us/library/ms155798(v=sql.100).aspx.

Смежные вопросы