Вопрос

Я ищу способы отследить, где возникает ошибка SSRS.

У меня есть отчет шириной около 90 столбцов с несколькими формулами.Проблема, с которой я столкнулся, заключается в том, что в одной из формул есть ошибка деления на ноль.Я реализовал ответ Роберта Харви в этом вопрос но я все равно получаю ошибку.Я знаю, что ответ работает, поскольку я проверил его на небольшом отчете.

Итак, вопрос:Как же определить, где происходит ошибка в SSRS, если SSRS сообщает только о том, что произошла ошибка?

РЕДАКТИРОВАТЬ Отображаемая ошибка

Произошла ошибка во время локальной обработки отчета.
При обработке отчета произошла ошибка
Невозможно прочитать следующую строку данных для набора данных MainReport.
Обнаружена ошибка деления на ноль

Это было полезно?

Решение

РЕДАКТИРОВАТЬ
Вместо того, чтобы использовать операторы IIF и другие, я бы рекомендовал сделать следующее...Добавьте пользовательскую функцию в свой отчет, перейдите в свойства отчета и вкладку «Код».Создайте следующее.Чтобы конкретно определить поле, в котором выдается ошибка, вы можете изменить это значение, чтобы оно возвращало строку и, возможно, «#OOOOOOPS», чтобы она выделялась в отчете.

Public Function SafeDivision(ByVal top As Decimal, ByVal bottom As Decimal) As Decimal
   If bottom = 0 Then
      Return 0
      Else : Return top / bottom
   End If
End Function

После добавления этой функции перейдите к представлению выражений для всех имеющихся у вас полей, в которых будет происходить деление.Вы можете выполнить эту вновь созданную функцию, набрав:

=Code.SafeDivivision(CDbl(1.24), CDbl(0))

ОРИГИНАЛ
Если вы запускаете отчет в Visual Studio, сообщает ли он вам, в каком конкретном текстовом поле/метке/поле произошло сбой вычислений?Это должно помочь определить, откуда возникла проблема, но вы также можете убедиться, что никогда не выполняете деление с 0 в знаменателе, посмотрев код ниже...

//myBottom would be the value of the denominator 
//myTop would be the value of the numerator 

= IIF(myBottom <> 0, myTop / myBottom, "")

Другие советы

Последующие действия
Проблема оказалась в SQL-запросе. Как часть SQL-запроса, у меня было предложение In, подобное следующему

Select ID, Name, price/kg as unitpice from products where ID In (@ProductIds)

SSRS использует exec sp_executesql и string.replace для вставки идентификаторов в предложение IN.

У меня возникла проблема: я запустил запрос в SQL Studio Manager. со всеми введенными переменными, и это будет работать как ожидалось. но при использовании SSRS он потерпел бы неудачу с ошибкой деления на ноль, и не было реального четкого указания, где произошла ошибка.

После того как я сделал копию отчета и удалял элементы один за другим, пока в отчете не осталось буквально ничего для отображения, и это все равно привело к ошибке, я переключил свое внимание на SQL-запрос.

Именно там и произошла ошибка. Я нашел его только после использования SQL Profiler, чтобы узнать, что на самом деле работает SSRS.

После этого это было относительно легко исправить, удалив поврежденную строку и вернув отдельные части раздела и пропустив ее через функцию, предложенную Р.С.Ольбергом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top