Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Reporting Services: Деление на ноль / 8 сообщений из 8, страница 1 из 1
03.03.2009, 15:43
    #35848590
PrettyBlond
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reporting Services: Деление на ноль
Коллеги, помогите, пожалуйста, решить проблему. Похоже Reporting Services Глючит...

У меня для ячейки в таблице определено выражение "=IIF(ReportItems!A1=0,0,ReportItems!A2/ReportItems!A1)". При таком выражении в ячейке, где должен быть 0 по заданному выражению, стоит #Error. То сеть такое ощущение что сперва происходит деление, а потом уже анализ значения A1.

Кто-нибудь сталкивался с такой проблемой, как у нее workaround?
Всем заранее спасибо!
...
Рейтинг: 0 / 0
03.03.2009, 16:25
    #35848781
buven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reporting Services: Деление на ноль
Что приходит в ReportItems!A1 ? Тип?
Есть подозрение, что там может появится "NULL".
...
Рейтинг: 0 / 0
03.03.2009, 16:45
    #35848861
PrettyBlond
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reporting Services: Деление на ноль
Вообще тип float. Там у меня не может быть NULL так как в процедуре я пишу ISNULL(A1,0)...
И еще, я поигралась с выражением и если оно такое (буду писать кратко): "=IIF(A1=0,0,A2/(A1+1))", то выводится 0 :) А это как-то странно...
...
Рейтинг: 0 / 0
03.03.2009, 16:54
    #35848899
buven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reporting Services: Деление на ноль
А если так "=IIF(ReportItems!A1=0.0,0,ReportItems!A2/ReportItems!A1)"
...
Рейтинг: 0 / 0
03.03.2009, 17:01
    #35848932
PrettyBlond
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reporting Services: Деление на ноль
Так тоже не работает :(
Абстрагируемся от 0, вот так "=IIF(A1=0,4,A2/(A1+1))" выводит 4...значит условие A1 = 0 сработало верно, значит глюк где-то в другом месте :(
...
Рейтинг: 0 / 0
03.03.2009, 17:25
    #35849034
buven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reporting Services: Деление на ноль
Ну а если с другой стороны?

"=IIF(ReportItems!A1<>0,ReportItems!A2/ReportItems!A1,0)"

ну или

"=IIF(ReportItems!A1=0,"Нолик",ReportItems!A2/ReportItems!A1)"

?

У меня просто получилось восстановить вашу ситуацию, только когда A1 у меня был строковый.

100% где то происходит неявное преобразование типов. Без исходных данных сложно угадать, где именно.
...
Рейтинг: 0 / 0
04.03.2009, 10:27
    #35850046
PrettyBlond
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reporting Services: Деление на ноль
Уф...Проблема решилась утром сама собой. Дело вроде как получается не в неявном преобразовании типов, а в том, что в функции IFF сперва вычисляются все аргументы, соответственно считается и деление вне зависимости от условия "Если не ноль".

Чтобы работало, можно написать так: =IIF(A1 = 0, 0, A2/IIF(A1=0,1,A1)).
...
Рейтинг: 0 / 0
23.04.2009, 12:44
    #35949499
mynameisvova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reporting Services: Деление на ноль
PrettyBlond,

еще один выход:
Создать пользовательскую функцию, в которой написать:

Код: plaintext
1.
2.
3.
Public Function SafeDivide(Numerator as Double, Denominator as Double) as Double
If Denominator =  0  then return  0 
Return (Numerator / Denominator)
End Function

и вызывать её:
=100 * Code.SafeDivide(reportitems!textbox141.value,reportitems!textbox43.value)
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Reporting Services: Деление на ноль / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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