Как преобразовать занчение Null в запросе в числовой 0 . Помогите!!!

Кристина Г.
Дата: 20.12.2011 10:21:50
Преамбула такая что у меня есть массив действующих, закрытых и планируемых гарантий и аккредитивов.

Гарантии и аккредитивы выдаются в рамках одного и того же лимита, но нет четкой суммы выделенной на гарантии или аккредитивы. Т.е лимит на 100 рублей может быть использован как на 80р Гарантии и 20р Аккредитивы, а может быть на все 100р выданы гарантии или на все 100р выданы аккредиитвы.

На основании массива данных с гарантиями сделан запрос с подсчетом итоговых сумм по всем Гарантиям в рамках одного лимита. Такой же запрос сформирован по гарантиям. Проблема в том что есть лимиты где нет ни одной гарантии, или нет ни одного аккредитива. Следовательно в столбце Всего гарантий, или Всего Аккредитивов появляется Пустое значение, именно пустое а не 0. В этом проблема потому что далее все настроено так что мы складываем Сумму Гарантий с Аккредитивами и получаем очень важный для нас параметр ЗАГРУЖЕННОСТЬ ЛИМИТА - но если мы к 100рублям прибавляем ПУСТО то в сумме тоже ПУСТО, а не 100р.

Дело в том что все эти вычисления происходят в запроме а не в таблице (так как ДАТА на которую считается - это параметр), и в таблице я знаю как поставить значение по умолчанию.
А здесь надо установить условие что если ПУСТо то проставляется значение "0" . я уже всякие способы испробовала но ничего не выходит(


Так вот я не понимаю как мне проставить условие чтоб в пустых результирующих строчках появился - 0

по логике должна быть введена такая вот функция

=IIf([Всего аккредитивов]=Null, 0, [Всего аккредитивов])


но он не дает ее даже исполнить - указывает на неправильную пунктуацию... но по справке формат использования функции именно такой


Заранее спасибо за помощь.
mds_world
Дата: 20.12.2011 10:30:53
Смотрите функцию NZ в хелпе, по форуму.
mds_world
Дата: 20.12.2011 10:33:48
И еще. Сравнивать с NULL нельзя. NULL это непределенность. Проверка на NULL это функция isnull(переменная). В запросе можно использовать выражение "Поле IS NULL"
Кристина Г.
Дата: 20.12.2011 11:33:10
mds_world, СПАСИБО ОГРОМНОЕ!!!

Заработало!
Sator Arepo
Дата: 20.12.2011 15:13:07
Кристина Г.
.........................

Так вот я не понимаю как мне проставить условие чтоб в пустых результирующих строчках появился - 0

по логике должна быть введена такая вот функция

=IIf([Всего аккредитивов]=Null, 0, [Всего аккредитивов])


но он не дает ее даже исполнить - указывает на неправильную пунктуацию... но по справке формат использования функции именно такой
................

Кроме того, что написал mds_world, чуть-чуть дополню. Во-первых, хорошо, что вы смотрите справку - так держать! Просто здесь есть одна тонкость - если в региональных установках Виндоуз в качестве разделителя списков указана точка с запятой (как в русской локали по умолчанию), а не запятая (как в американской), то в конструкторе выражений нужно использовать точку с запятой - хотя, если переключиться в режим SQL, то там будет точно как в справке - запятая в качестве разделителя аргументов функций. Про сравнение с NULL уже сказали, так что правильно выражение _в режиме конструктора_ должно быть записано так:
=IIf([Всего аккредитивов] IS Null; 0; [Всего аккредитивов])

Функцию IsNull _в запросах_ лучше не использовать - лишний вызов ВБА функции.
У NZ есть побочный эффект - может преобразовать значение в текст. IIF надежней - хотя и многословней.
alvk
Дата: 20.12.2011 16:16:04
Sator Arepo,

Я последнее время заметил, что акс сам ругается и выделяет мне точку с запятой либо запятую для исправления, удобно , последнее время я обленился и не заморачиваюсь по этому поводу
Владимир Саныч
Дата: 20.12.2011 16:30:47
alvk
последнее время я обленился и не заморачиваюсь по этому поводу

...каждый раз, когда переезжаю из страны в страну.
полином
Дата: 20.12.2011 16:35:27
я бы еще отметил, что при замещении Null (пусто) нулями (0) далеко не все так просто.

при подсчете общего количества ВсегоГарантий или общего количества ВсегоАккредитивов вас могут ждать сюрпризы,
при расчете отношения число Гарантий к числу Аккредитивов, при рассчете средних значений и т.п.

т.е. "ВыданоГараний = 0" и "ВыданоГарантий = Null" это совсем не равнозначные выражения в некоторых случаях
alvk
Дата: 20.12.2011 16:36:50
Владимир Саныч
alvk
последнее время я обленился и не заморачиваюсь по этому поводу

...каждый раз, когда переезжаю из страны в страну.


alvk
Дата: 20.12.2011 16:38:50
полином
"ВыданоГарантий = Null"


я лично вообще сомневаюсь в таком сравнении, не знаю как другие.