![]() |
Модераторы: Akella |
![]() ![]() ![]() |
|
Cheshuya |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 29.7.2004 Репутация: нет Всего: нет |
Здравствуйте...
У меня есть 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 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: нет Всего: 60 |
Ничего не понятно, по русски можно это написать? Задай значение для Date точно также как для pole_int1 или любого другого По твоему коду если второе условие (я понимаю, что имеется в виду это)
не проходит, то процедура заканчивается. Куда ты хоешь вернуть :DATEpole ? |
||||
|
|||||
Cheshuya |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 29.7.2004 Репутация: нет Всего: нет |
вхожу в цикл...
прохожу первое условие и 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 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: нет Всего: 60 |
определись с значением по умолчанию и присваивай его в виде литерала даты. Например
|
|||
|
||||
Cheshuya |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 29.7.2004 Репутация: нет Всего: нет |
впринципе я думаю это единственное корректное решение.......
спасибо... был еще вариант с null, но это черевато проблемками при сравнении в будущем... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Interbase" | |
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |