![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Null в вычисляемых полях [D7, IB6.x]
Andrio © (2003-05-10 13:17:00)Есть такое поле: (Можно не углубляться в его описание)
NUMERIC(18,2)
COMPUTED BY ((select sum(SummaLgot) from LgotsMan where ((LgotsMan.LicScet=Nachislenia.LicScet) and (LgotsMan.Usluga=Nachislenia.Usluga) and (LgotsMan.YYYY=Nachislenia.YYYY) and (LgotsMan.MM=Nachislenia.MM))))
В общем - оно вычисляемое по другим полям, а те в свою очередь, вычисляютс по третьим.
Суть в том, что если одно из полей по которым ведется расчет пустое "NULL" (или Nill), то общая сумма тоже - Null.
Как сделать так, чтобы пустые значения не приводили общий результат к "Null", и в место промежуточных "Null" - подставлялось "0".
"Default 0" в данном случае не дает результатов...
Может скрипт на вычислимое поле поменять... Но я не знаю как в этот скрипт конструкцию "If-Then-Else" поставить и какие значения и куда будут передаваться. Ведь это не триггер - переменные вести нельзя (как мне кажется). Тогда как?
Писать триггеры на эти таблицы и в них подставлять данные значения - слишком грубо и некрасиво :)
Заранее благодарен.
Alexandr (2003-05-11 09:36:00) [1]грубо это использовать такие computed by
" триггеры это как раз нормально
Desdechado (2003-05-10 17:49:00) [2]солидарен с kaif
если уж очень горит, см. на ibase.ru UDF-коллекцию rfunc, функция Z
kaif (2003-05-10 17:01:00) [3]Можно порекомендовать 2 пути
1. Никогда не использовать поля NULL в качестве полей, хранящих данные, по которым могут производиться вычисления. Я лично придерживаюсь этого правила и все такие поля создаю NOT NULL.
2. Написать свои UDF для конвертации NULL в разных типах данных, например, 0 или "" и применять эти UDF.