Пользовательский код в службах Reporting Services 2008 заставляет ячейку показывать #Error - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть следующий код в «Custom Code» в SSRS 2008. Он отлично работает в VS2008, но не работает на сервере:

Public Shared Function Ns(ByVal num as Object, ByVal def as Object) as Object
  if IsNothing(num) OrElse Not IsNumeric(num) OrElse System.Double.IsNaN(num) then 
      return def
  else  
      return num
  end if
End Function

Я ссылаюсь на него как «Code.Ns (..., ...)» в моих полях в SSRS 2008. В рендере VS2008 кажется, что он работает просто отлично. Когда я пытаюсь визуализировать его программно с помощью пользовательского приложения .NET, отчет отображается со всеми полями, кроме пользовательских частей кода, которые выглядят так: #Error. Что я делаю не так?

1 Ответ

0 голосов
/ 12 декабря 2011

Службы Reporting Services 2008 (НЕ R2) возвращают различные типы в зависимости от того, что они читают из базы данных. (см. Здесь для хорошего объяснения). Если вы вернете объект из подпрограммы, как я делал выше, тогда функция SUM () в SSRS 2008 будет испорчена, потому что вы можете суммировать разные типы. Вот что я делал в одной из своих ячеек в SSRS:

Sum(Ns(<some database field>, 0)

Хотя это работает на SSRS 2008 R2 (на моей тестовой машине), оно не работает на SSRS 2008 без R2 (на моей рабочей машине).

...