Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Непонятки с ICASE (число прочтений - 2055 )
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Непонятки с ICASE
23. Октября 2009 :: 08:09
Печать  
Доброве время суток!
У меня dbf-ная база. В запросе я получаю сумму некоторых полей из подзапроса, в котором написано в том числе это

Код
Выбрать все
SELECT
Организация,
ICASE($Организация.НеобнулСуммаНаДату=Null,0,$Организация.НеобнулСуммаНаДату) as НеобнулСуммаНаДату,
SUM(ICASE($ТабЧекПродажи.СуммаСоСкидкой=Null,0,$ТабЧекПродажи.СуммаСоСкидкой)) as СуммаПродажВсего
....... 



Ну а из этого подзапроса я запрашиваю:

Код
Выбрать все
SELECT
Организация,
ICASE(НеобнулСуммаНаДату=0,0, НеобнулСуммаНаДату) + ICASE(СуммаПродажВсего>0,СуммаПродажВсего,0) as  НеобнуляемаяСумма 


Прикол в том, что у меня есть две организации и по одной из них НеобнулСуммаНаДату равна 0, а по другой определенной положительной сумме, но ICASE(НеобнулСуммаНаДату=0,0, НеобнулСуммаНаДату) в обоих случаях возвращает 0, если я пишу НеобнулСуммаНаДату, то получаю нужные данные.
Далее другой прикол.
я решил заменить код:
Код
Выбрать все
SELECT
Организация,
ICASE(НеобнулСуммаНаДату=0,0, НеобнулСуммаНаДату) + ICASE(СуммаПродажВсего>0,СуммаПродажВсего,0) as  НеобнуляемаяСумма 


на
Код
Выбрать все
SELECT
Организация,
НеобнулСуммаНаДату + ICASE(СуммаПродажВсего>0,СуммаПродажВсего,0) as  НеобнуляемаяСумма 


и в результате получил нужные данные, но когда я его немнго изменил:
Код
Выбрать все
SELECT
Организация,
НеобнулСуммаНаДату+СуммаПродажВсего as  НеобнуляемаяСумма 


то опять получил нули.
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: Непонятки с ICASE
Ответ #1 - 23. Октября 2009 :: 08:20
Печать  
ОЧЕНЬ СМУЩАЕТ Null может нажо ставить 0 или '        ' или $ПустойИД

и в данном случае ICASE можно поменять на IIF
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Непонятки с ICASE
Ответ #2 - 23. Октября 2009 :: 08:23
Печать  
IIF вернул тот же результат, что и ICASE, а на $ПустойИД выпала ругань Operator/operand type mismatch
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: Непонятки с ICASE
Ответ #3 - 23. Октября 2009 :: 08:33
Печать  
$Организация.НеобнулСуммаНаДату это что(тип значения)?
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Непонятки с ICASE
Ответ #4 - 23. Октября 2009 :: 08:37
Печать  
kriblya писал(а) 23. Октября 2009 :: 08:33:
$Организация.НеобнулСуммаНаДату это что(тип значения)?

Число (15,2)
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: Непонятки с ICASE
Ответ #5 - 23. Октября 2009 :: 08:41
Печать  
тоды и ставь 0 а не null
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Непонятки с ICASE
Ответ #6 - 23. Октября 2009 :: 11:25
Печать  
Вычисляемые поля Fox форматирует по первой строке столбца.

Если первая строка 0 - будет резать.
Нужно явно преобразовывать к (15,2) и еще - вместо  0 писать
000000000000.00

http://www.1cpp.ru/forum/YaBB.pl?num=1242280046/1#1
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Непонятки с ICASE
Ответ #7 - 23. Октября 2009 :: 11:26
Печать  
Дык я и так ставил null только во вложенном, а в "верхнем" запросе использовал 0.
Попробовал исправить во вложенном - убрал вообще ICASE, а в верхнем использовал ICASE(НеобнулСуммаНаДату=0,0, НеобнулСуммаНаДату) - все равно возвращает 0.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Непонятки с ICASE
Ответ #8 - 23. Октября 2009 :: 11:34
Печать  
Код
Выбрать все
,Cast( НеобнулСуммаНаДату+СуммаПродажВсего AS Numeric(15,2)) as  НеобнуляемаяСумма 

  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Непонятки с ICASE
Ответ #9 - 31. Октября 2009 :: 05:48
Печать  
kiruha писал(а) 23. Октября 2009 :: 11:34:
Код
Выбрать все
,Cast( НеобнулСуммаНаДату+СуммаПродажВсего AS Numeric(15,2)) as  НеобнуляемаяСумма 


Не помогло

и так:
Код
Выбрать все
Cast( НеобнулСуммаНаДату AS Numeric(15,2))+Cast(СуммаПродажВсего AS Numeric(15,2)) as  НеобнуляемаяСумма 


тоже не помогло

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать