![]() |
![]() |
|
как узнать - на какой строке запроса идет деление на 0 ? | ☑ | ||
---|---|---|---|---|
0
lamme
08.06.16
✎
17:24
|
Многокилометровый запрос .. с многими местами где идет деление...
Ошибка лаконична и понятна. Ошибка при выполнении операции над данными: Microsoft OLE DB Provider for SQL Server: Обнаружена ошибка: деление на ноль. HRESULT=80040E14, SQLSrvr: SQLSTATE=22012, state=1, Severity=10, native=8134, line=1 Как определить - какое условие надо исправить? на каком оно валиться ? |
|||
1
Зая Бусечка
08.06.16
✎
17:24
|
Предлагаю поправить все деления
|
|||
2
lamme
08.06.16
✎
17:25
|
раза 4 повторяется
| ТОГДА РТУ.Сумма * 100 / РТУ.ПроцентСкидкиНаценки - ЕСТЬNULL(Возвраты.Сумма * 100 / Возвраты.ПроцентСкидкиНаценки, 0) + ЕСТЬNULL(Корректировки.Сумма * 100 / (100 - Корректировки.ПроцентСкики), 0) вот че тут не так ? и как так - чтобы отработалось ? Проверку на нулл добавить ? |
|||
3
lamme
08.06.16
✎
17:25
|
(1)
да я за ... этим и занимаюсь |
|||
4
Timon1405
08.06.16
✎
17:26
|
заменить
икс/игрек на икс/Выбор когда игрек=0 тогда 0.0001 иначе игрек конец там где будут большие числа, там и был 0 |
|||
5
Nuobu
08.06.16
✎
17:30
|
РТУ.Сумма * 100 / РТУ.ПроцентСкидкиНаценки - ЕСТЬNULL(Возвраты.Сумма * 100 / Возвраты.ПроцентСкидкиНаценки, 0) + ЕСТЬNULL(Корректировки.Сумма * 100 / (100 - Корректировки.ПроцентСкики), 0)
РТУ.Сумма * 100 / РТУ.ПроцентСкидкиНаценки = (Выбор Когда РТУ.ПроцентСкидкиНаценки = 0 Тогда 0 Иначе РТУ.Сумма*100/РТУ.ПроцентСкидкиНаценки Конец) - ЕСТЬNULL(Возвраты.Сумма * 100 / Возвраты.ПроцентСкидкиНаценки, 0) = (Выбор Когда Возвраты.ПроцентСкидкиНаценки = 0 Тогда 0 Иначе ЕСТЬNULL(Возвраты.Сумма * 100 / Возвраты.ПроцентСкидкиНаценки, 0) Конец) + ЕСТЬNULL(Корректировки.Сумма * 100 / (100 - Корректировки.ПроцентСкики), 0) = (Выбор Когда (100 - Корректировки.ПроцентСкидкиНаценки) = 0 Тогда 0 Иначе ЕСТЬNULL(Корректировки.Сумма * 100 / (100 - Корректировки.ПроцентСкики), 0)) Слева и справа от "=" изменённые выражения. |
|||
6
Nuobu
08.06.16
✎
17:31
|
(5) В конце получится:(Выбор Когда
РТУ.ПроцентСкидкиНаценки = 0 Тогда 0 Иначе РТУ.Сумма*100/РТУ.ПроцентСкидкиНаценки Конец) - (Выбор Когда Возвраты.ПроцентСкидкиНаценки = 0 Тогда 0 Иначе ЕСТЬNULL(Возвраты.Сумма * 100 / Возвраты.ПроцентСкидкиНаценки, 0) Конец) + (Выбор Когда (100 - Корректировки.ПроцентСкидкиНаценки) = 0 Тогда 0 Иначе ЕСТЬNULL(Корректировки.Сумма * 100 / (100 - Корректировки.ПроцентСкики), 0)) |
|||
7
lamme
08.06.16
✎
17:32
|
ага ..
понятно ... был многокилометровым .. добавим еще пару километров - чтоб потом нифига не разобрать ... спасибо |
|||
8
lamme
08.06.16
✎
17:33
|
в итоге такое вот получилось
ВЫБОР КОГДА СантМотивацияОбороты.ТипЦен = &Базовая ТОГДА ВЫБОР КОГДА РТУ.Акция = ИСТИНА ИЛИ Возвраты.Акция = ИСТИНА ИЛИ Корректировки.Акция = ИСТИНА ТОГДА ВЫБОР КОГДА РТУ.ПроцентСкидкиНаценки = 0 ТОГДА 0 ИНАЧЕ РТУ.Сумма * 100 / РТУ.ПроцентСкидкиНаценки КОНЕЦ - ВЫБОР КОГДА Возвраты.ПроцентСкидкиНаценки = 0 ТОГДА 0 ИНАЧЕ ЕСТЬNULL(Возвраты.Сумма * 100 / Возвраты.ПроцентСкидкиНаценки, 0) КОНЕЦ + ЕСТЬNULL(Корректировки.Сумма * 100 / (100 - Корректировки.ПроцентСкики), 0) ИНАЧЕ РТУ.Сумма - ЕСТЬNULL(Возвраты.Сумма, 0) + ЕСТЬNULL(Корректировки.Сумма, 0) КОНЕЦ КОНЕЦ |
|||
9
lamme
08.06.16
✎
17:39
|
не читабельно вообще такой синтаксис ...
ВЫБОР КОГДА СантМотивацияОбороты.ТипЦен = &Базовая ТОГДА ВЫБОР КОГДА РТУ.Акция = ИСТИНА ИЛИ Возвраты.Акция = ИСТИНА ИЛИ Корректировки.Акция = ИСТИНА ТОГДА ВЫБОР КОГДА РТУ.ПроцентСкидкиНаценки = 0 ТОГДА 0 ИНАЧЕ РТУ.Сумма * 100 / РТУ.ПроцентСкидкиНаценки КОНЕЦ - ВЫБОР КОГДА Возвраты.ПроцентСкидкиНаценки = 0 ТОГДА 0 ИНАЧЕ ЕСТЬNULL(Возвраты.Сумма * 100 /Возвраты.ПроцентСкидкиНаценки, 0)КОНЕЦ + ЕСТЬNULL(Корректировки.Сумма * 100 / (100 - Корректировки.ПроцентСкики), 0) ИНАЧЕ РТУ.Сумма - ЕСТЬNULL(Возвраты.Сумма, 0) + ЕСТЬNULL(Корректировки.Сумма, 0) КОНЕЦ КОНЕЦ |
|||
10
lamme
08.06.16
✎
17:39
|
вот так на мой взгля хоть понятнее . читабельнее
|
|||
11
Nuobu
08.06.16
✎
17:41
|
(9) / (100 - Корректировки.ПроцентСкики),
|
|||
12
Cyberhawk
08.06.16
✎
17:47
|
Чтобы было читабельнее, помещай запрос, где у полей обертки естьнулл, в ВТ и в следующем пакете работай уже с полями этой ВТ без этих оберток
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |