Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Арифметическая ошибка? (число прочтений - 1479 )
Shtam
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 14. Ноября 2006
Арифметическая ошибка?
01. Июня 2007 :: 08:32
Печать  
Имеем запрос:
     |SELECT
     |      ДокС.LINENO_ as Номер,
     |      $ДокС.Товар as [Товар $Справочник.Номенклатура],
     |      $ДокС.Количество as Количество,
     |      Рег.КоличествоОстаток as Склад,
     |      $ДокС.Количество - Рег.КоличествоОстаток as Дельта
     |FROM
     |      $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
     |LEFT JOIN
     |      $РегистрОстатки.Остатки(,,,Номенклатура,Количество) as Рег ON Рег.Номенклатура = $ДокС.Товар
     |WHERE
     |      ДокС.IDDoc = RIGHT(:ТекДок,9)";

смотрю в результатах:
$ДокС.Количество = 6
Рег.КоличествоОстаток = 0
Дельта = 0
как-так понять не могу Улыбка
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Арифметическая ошибка?
Ответ #1 - 01. Июня 2007 :: 08:54
Печать  
Вероятно из-за этого: по этому товару остаток = 0, следовательно в результате ВТ записи об этом товаре вообще не будет, следовательно Рег.КоличествоОстаток есть null, т.к. такого значения в 77 нет, оно принимается из результата зпроса в ТЗ для чисел как 0.
Во всех вычислениях выражений в языке SQL, если хотябы один из операндов есть значение null, то результат вычисления всегда тоже null, т.е. Дельта будет тоже null. Ну и из результата запроса в ТЗ дельта тоже приходит как 0 (по выше описанной причине).
Надо писать так:
 |      isnull(Рег.КоличествоОстаток, 0) as Склад,
 |      $ДокС.Количество - isnull(Рег.КоличествоОстаток, 0) as Дельта
  
Наверх
ICQ  
IP записан
 
Shtam
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 14. Ноября 2006
Re: Арифметическая ошибка?
Ответ #2 - 01. Июня 2007 :: 09:02
Печать  
спасибо DmitrO. Только хотел отписать, что квери анализатор опять всех победил и я сам нашел ответ, но ты быстрее Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать