powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS: Выражение
10 сообщений из 10, страница 1 из 1
SSRS: Выражение
    #37748138
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, не пойму где ошибка:
Код: 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
SSRS: Выражение
    #37748493
Andy Jr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может скобочек нехватало и кавычек? О_о
=IIf(IsNothing(Fields!Trades2011IT.Value) or IsNothing(Fields!Trades2012IT.Value), "Nothing" , ((Fields!Trades2012IT.Value - Fields!Trades2011IT.Value)/Fields!Trades2011IT.Value))
...
Рейтинг: 0 / 0
SSRS: Выражение
    #37748497
Andrews25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanov,
Функция IIf вычисляет обе части выражения, несмотря на то, что возвращается только одно из них.
В некоторых случаях это приводит к нежелательным ошибкам
...
Рейтинг: 0 / 0
SSRS: Выражение
    #37757729
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SSRS: Выражение
    #37770640
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
SSRS: Выражение
    #37770712
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем плодить такие выражения, пользовательские коды:
Код: 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
SSRS: Выражение
    #37770762
Klick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanov То что IIf выщитывает обе части выражения это конечно пипец.

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

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

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

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

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

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


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