Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS: Выражение / 10 сообщений из 10, страница 1 из 1
11.04.2012, 11:21
    #37748138
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
Ребят, не пойму где ошибка:
Код: vbnet
1.
=IIf(IsNothing(Fields!Trades2011IT.Value) or IsNothing(Fields!Trades2012IT.Value), Nothing, (Fields!Trades2012IT.Value - Fields!Trades2011IT.Value)/Fields!Trades2011IT.Value)

Выводит "Ошибка", несмотря на имеющуюся проверку IsNothing(Fields!Trades2011IT.Value) or IsNothing(Fields!Trades2012IT.Value)
...
Рейтинг: 0 / 0
11.04.2012, 13:31
    #37748493
Andy Jr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
Может скобочек нехватало и кавычек? О_о
=IIf(IsNothing(Fields!Trades2011IT.Value) or IsNothing(Fields!Trades2012IT.Value), "Nothing" , ((Fields!Trades2012IT.Value - Fields!Trades2011IT.Value)/Fields!Trades2011IT.Value))
...
Рейтинг: 0 / 0
11.04.2012, 13:32
    #37748497
Andrews25
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
rsolanov,
Функция IIf вычисляет обе части выражения, несмотря на то, что возвращается только одно из них.
В некоторых случаях это приводит к нежелательным ошибкам
...
Рейтинг: 0 / 0
17.04.2012, 17:52
    #37757729
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
...
Рейтинг: 0 / 0
25.04.2012, 14:48
    #37770640
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
LR FAQ: Why does the “Attempted to divide by zero” error still happen?
Код: vbnet
1.
=IIf(Fields!Field1.Value=0, 0, Fields!Field 2.Value/IIf(Fields! Field 1.Value=0, 1, Fields! Field 1.Value))

Обалдеть, вот как оказывается надо. То что IIf выщитывает обе части выражения это конечно пипец.
...
Рейтинг: 0 / 0
25.04.2012, 15:06
    #37770712
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
Чем плодить такие выражения, пользовательские коды:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Function Divide(Numerator as Decimal, Denominator as Decimal)

If Denominator = 0 Then

Return 0

Else

Return Numerator/Denominator

End If

End Function

Наверное лучшим вариантом является расчет таких значений в самом источнике данных (на стороне СУБД)
...
Рейтинг: 0 / 0
25.04.2012, 15:21
    #37770762
Klick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
rsolanov То что IIf выщитывает обе части выражения это конечно пипец.

Нда... Типа не знали? Ну так теперь знайте: Особенности вычисления логических выражений !!!
А вообще, такие выражения считают на стороне СУБД - ваш вопрос пример плохого стиля.
...
Рейтинг: 0 / 0
25.04.2012, 16:34
    #37770965
Andrews25
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
Klick,

к сожалению, не всегда возможно рассчитать все на стороне SQL
Например, когда надо поделить Sum-ы по группе
P.S. Чем использовать сегмент Code , лучше создать DLL со всякими оплезными функциями - если , конечно, есть полный контроль над приложением
...
Рейтинг: 0 / 0
25.04.2012, 17:11
    #37771066
Klick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
Andrews25к сожалению, не всегда возможно рассчитать все на стороне SQL

Этот случай как раз из серии "пусть сервак попашет".

Andrews25Чем использовать сегмент Code , лучше создать DLL со всякими оплезными функциями - если , конечно, есть полный контроль над приложением

А вот это не всегда есть. А так конечно удобно.
...
Рейтинг: 0 / 0
26.04.2012, 10:07
    #37771715
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS: Выражение
KlickAndrews25к сожалению, не всегда возможно рассчитать все на стороне SQL

Этот случай как раз из серии "пусть сервак попашет".А все выражения в определении отчета выполяет ведь тоже сервер, но только конечно не компонент Database Engine, а службы Reporting Services. Поэтому как пример, не делать дополнительных вычислений на стороне Database Engine можно если только сами компоненты расположенны на двух разных серверах, находящихся в разных подсетях чтобы не создавать большой трафик. Но это мне не видится каким-то узким моментом, который может повлиять на производительность. Поэтому, если выражение легче реализовать и вы уверены что построенное вами выражение будет быстрее работать на стороне Database Engine, почему бы и нет.
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS: Выражение / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]