| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > вопрос по типу данных:DATE в IBExpert |
| Автор: Cheshuya 5.5.2006, 13:52 |
| Здравствуйте... У меня есть 2 таблицы ,допустим таблицы One и Two. Таблица One содержит 5 колонк одна из колонок этой таблицы содержит тип :DATE. При выполнении запроса происходит выборка из таблицы Two, и заполнение таблицы One записями для соответствующих колонок этой таблицы. Вот примерный кусок процедуры .... if (........) then begin select(.......) pole_int1=0; pole_smallint2=0; if(exists(select * from Two where pole=:pole and pole1=:pole1 and pole3=:pole3 PLAN(Two INDEX(FIND_ALL)))) then begin select max(PoleDATE),count(*),sum(perem) from Two where pole=:pole and pole1=:pole1 and pole3=:pole3 PLAN(Two INDEX (FIND_ALL)) into :DATEpole,:pole_int1,:pole_smallint2; end end при прохождении первого условия заполняются поля которые на сто порцентов имеют значения в таблице Two, а на втором условии могут встретиться записи с пустыми полями, и тут запрос не должен пройти. Если второе условие не проходит то в значения полей заносятся значения переменных описанные перед вторым условием pole_int1=0; pole_smallint2=0;(тоесть нули)(Это то что мне надо)... И у меня вот такой вопрос... А как быть со значение поля для колонки с типом DATE? Если второе условие не проходит то возвращается послдняя дата из :DATEpole... |
| Автор: Fazil6 5.5.2006, 14:04 | ||||
Ничего не понятно, по русски можно это написать? Задай значение для Date точно также как для pole_int1 или любого другого По твоему коду если второе условие (я понимаю, что имеется в виду это)
не проходит, то процедура заканчивается. Куда ты хоешь вернуть :DATEpole ? |
| Автор: Cheshuya 5.5.2006, 15:07 |
| вхожу в цикл... прохожу первое условие и select (в таблицу One из Two в колнки param1 и param2 записывается первая строка...) дальше следует еще одно условие и select(тут должны в таблицу ONE из Two записаться DATEpole,pole_int1 и pole_smallint2) если условие проходит то эти три значения записываются в свои поля... результат param1|param2|DATEpole|pole_int1|pole_smallint2| ______|______|________|_______|___________| 1 2 1.2.2006 5 6 следущая итерация .... заполнились param1 и param2 а второе условие непрошло и в полях с DATEpole,pole_int1 и pole_smallint2 остануться значения с предыдущей итерации.... во избежании этого я перед вхождением на второе условие зануляю pole_int1=0; pole_smallint2=0; а как мне занулить DATEpole? |
| Автор: Fazil6 5.5.2006, 16:52 | ||
определись с значением по умолчанию и присваивай его в виде литерала даты. Например
|
| Автор: Cheshuya 6.5.2006, 09:41 |
| впринципе я думаю это единственное корректное решение....... спасибо... был еще вариант с null, но это черевато проблемками при сравнении в будущем... |