|
Запрос . деление на ноль | ☑ | ||
---|---|---|---|---|
0
Domanoff26
27.05.13
✎
10:50
|
скулы выдают в запросе деление на ноль. виновато вот это выражение
ВЫБОР КОГДА ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 ТОГДА 0 ИНАЧЕ ВЫРАЗИТЬ((ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)) / (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) * 100 КАК ЧИСЛО(10, 2)) КОНЕЦ КАК ПроцентОтклонения |
|||
1
Domanoff26
27.05.13
✎
10:50
|
поменял на вот такое, но все равно ругается
/ВЫБОР // КОГДА ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 // //ИЛИ (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 // ТОГДА 0 //ИНАЧЕ ВЫРАЗИТЬ((ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)) / (Выбор когда не (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 Тогда ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН иначе 1 конец) * 100 КАК ЧИСЛО(10, 2)) //КОНЕЦ КАК ПроцентОтклонения |
|||
2
acsent
27.05.13
✎
10:50
|
Эта грустная история о прекрасной восточной девушке Наноль, которая любит двух прекрасных и мужественных юношей и не может выбрать. Юноши тоже любят ее. Казалось бы, в нынешние–то времена, зажить бы им простой и дружной семьей. Но трагедия в том, что Наноль делить нельзя.
|
|||
3
zak555
27.05.13
✎
10:51
|
и сделай проверку
|
|||
4
zak555
27.05.13
✎
10:51
|
(2) бу га га
|
|||
5
Domanoff26
27.05.13
✎
10:51
|
ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН в полях равно нулю, тогда почему моя проверка не работает?
|
|||
6
salvator
27.05.13
✎
10:52
|
(5) Где млять у тебя эта проверка?
|
|||
7
Domanoff26
27.05.13
✎
10:53
|
arithmetic overflow error converting numeric to data type numeric
|
|||
8
Domanoff26
27.05.13
✎
10:53
|
(6) Выбор когда не (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 Тогда ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН иначе 1 конец)
|
|||
9
zak555
27.05.13
✎
10:54
|
ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) =0
это не то же самое, что и ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН = 0 отличаются на ВлЗапрос.ФактическийПрофит |
|||
10
Domanoff26
27.05.13
✎
10:54
|
(7) это сообщение в консоли, (9) нет конечно
|
|||
11
salvator
27.05.13
✎
10:56
|
ВЫБОР
КОГДА (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 ТОГДА 0 ИНАЧЕ ВЫРАЗИТЬ((ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)) / (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) * 100 КАК ЧИСЛО(10, 2)) КОНЕЦ КАК ПроцентОтклонения |
|||
12
PR
27.05.13
✎
10:56
|
Мне кажется, ТС просто тупо троллит
|
|||
13
Domanoff26
27.05.13
✎
10:57
|
(11) это по логике не верно, это же отклонение, отклонение в случае ноль должно быть 100 процентов
|
|||
14
Domanoff26
27.05.13
✎
10:58
|
короче тут что то хитрее смотрите какое сообщение странное arithmetic overflow error converting numeric to data type numeric...может не только в нуле дело
|
|||
15
hhhh
27.05.13
✎
10:59
|
(14) нет, это не хитрее, это тупо. Потому что ВЫРАЗИТЬ.
|
|||
16
Domanoff26
27.05.13
✎
11:00
|
(15) вот я тоже дмаю об этом, а что конкретно?
|
|||
17
zak555
27.05.13
✎
11:02
|
ты лучше весь запрос покажи
может проще внутренне соединение использовать ( тогда нули исключаться ) |
|||
18
Domanoff26
27.05.13
✎
11:02
|
(17) да но строчку то надо выводить, запрос большой. смотреть никто не будет, без этого поля все норм отрабатывает
|
|||
19
PR
27.05.13
✎
11:04
|
ЕСТЬ NULL
|
|||
20
Domanoff26
27.05.13
✎
11:05
|
(19) см (5)
|
|||
21
PR
27.05.13
✎
11:10
|
(20) см (19)
|
|||
22
hhhh
27.05.13
✎
11:11
|
(20) ты так и не показал, где у тебя эта проверка на ноль?
|
|||
23
Domanoff26
27.05.13
✎
11:15
|
(22) в (1) (Выбор когда не (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 Тогда ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН иначе 1 конец)
|
|||
24
Domanoff26
27.05.13
✎
11:16
|
(22) так что с выразить то?
|
|||
25
Domanoff26
27.05.13
✎
11:19
|
(21) что на нул я должен проверять то, если я написал что делитель равен нулю в выборке этого запроса
|
|||
26
PR
27.05.13
✎
11:20
|
(23) За "не (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0" вообще руки отрывать нужно.
|
|||
27
PR
27.05.13
✎
11:20
|
Все, что в формуле числовое.
|
|||
28
НЕА123
27.05.13
✎
11:22
|
ошибка арифметического переполнения, преобразовывающая числовой в числовой тип данных
|
|||
29
Domanoff26
27.05.13
✎
11:24
|
(28) не понял, что значит ичсловой в числовой
|
|||
30
Domanoff26
27.05.13
✎
11:25
|
(26) ну <> не спасает так же
|
|||
31
НЕА123
27.05.13
✎
11:28
|
(28)
в (15) все сказано. |
|||
32
PR
27.05.13
✎
11:36
|
(30) Логично. Потому что выражение <> 0.
|
|||
33
azernot
27.05.13
✎
11:39
|
(29) Вырази 100000000000 как число (10,2). Просто попробуй написать на бумажке.
|
|||
34
Domanoff26
27.05.13
✎
11:40
|
(33) ну там нет такого числа, там 44000 делитс\я на 1000 (32) посмотри внимательно на проверку еще раз!
|
|||
35
PR
27.05.13
✎
11:41
|
(34) Что мешает проверить?
|
|||
36
Михаил 1С
27.05.13
✎
11:44
|
(0) Блин, зачем ты проверяешь на ноль Числитель? Если он ноль, то и все выражение будет ноль по правилам арифмитики! Все само получится!
В условии надо поставить проверку на ноль знаменателью! И если он ноль, то тогда... пусть ответ тогда = бесконечность! Ну или сто сикстилионов! |
|||
37
azernot
27.05.13
✎
11:44
|
(34) ты можешь убрать своё вычисление и просто выполнить запрос с тремя полями в результате (ну кроме прочих): ФактическийПрофит, РеализацияПлан, ССПЛАН и запостить сюда результаты этих трёх колонок?
|
|||
38
alextom81
27.05.13
✎
11:45
|
ВЫБОР
КОГДА (ЕстьNULL(ВлЗапрос.РеализацияПлан,0) - ЕстьNULL(ВлЗапрос.ССПЛАН,0)) = 0 ТОГДА 0 ИНАЧЕ ВЫРАЗИТЬ((ВлЗапрос.ФактическийПрофит - (ЕстьNULL(ВлЗапрос.РеализацияПлан,0) - ЕстьNULL(ВлЗапрос.ССПЛАН,0))) / (ЕстьNULL(ВлЗапрос.РеализацияПлан,0) - ЕстьNULL(ВлЗапрос.ССПЛАН,0)) * 100 КАК ЧИСЛО(10, 2)) КОНЕЦ КАК ПроцентОтклонения |
|||
39
azernot
27.05.13
✎
11:45
|
(36) Где у него ошибка в проверке?
КОГДА ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 ИЛИ (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 Почему-то все игнорируют часть после "ИЛИ".. |
|||
40
alextom81
27.05.13
✎
11:45
|
Сдаётся мне, где-то раньше (во вложенном запросе) нет проверки на null
|
|||
41
mistеr
27.05.13
✎
11:50
|
(0) Сначала ВЫРАЗИТЬ, потом делить.
|
|||
42
1Сергей
27.05.13
✎
11:53
|
(39) у него там вообще не понятно что куда, куча закоменчего кода в хаотическом порядке
|
|||
43
Domanoff26
27.05.13
✎
12:03
|
все что вы тут кричите про проверку - чушь, в выразить и правда большое число! hhhh спасибо!
|
|||
44
PR
27.05.13
✎
12:09
|
(43) Смешно.
А ты ведь так спорил, помнится :)) |
|||
45
Михаил 1С
27.05.13
✎
12:11
|
(43) Блин, сам ты чушь, я тебе дело говорил. Проверку на ноль знаменателю ставить необходимо!
|
|||
46
Михаил 1С
27.05.13
✎
12:12
|
(45) А если у тебя на работало по другой причине, то значит у тебя на глюк больше.
|
|||
47
Domanoff26
27.05.13
✎
12:21
|
(45) не гони она стоит там знаменателю, посмотри внимательнее
|
|||
48
Domanoff26
27.05.13
✎
12:21
|
(44) я как раз и говорил что дело не в проверке не фига
|
|||
49
Domanoff26
27.05.13
✎
12:22
|
НАЧЕ ВЫРАЗИТЬ((ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)) / (Выбор когда не (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 Тогда ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН иначе 1 конец) * 100 КАК ЧИСЛО(10, 2)) - вот и деление и проверка на знаменатель!!!!
|
|||
50
alextom81
27.05.13
✎
13:26
|
(49) У тебя просто выразить Null значение откидывает из построения результатов :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |