Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по типу данных:DATE в IBExpert 
V
    Опции темы
Cheshuya
Дата 5.5.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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...
 
 

PM MAIL   Вверх
Fazil6
Дата 5.5.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: нет
Всего: 60



Цитата

А как быть со значение поля для колонки с типом DATE? 
Если второе условие не проходит то возвращается послдняя дата из :DATEpole...

Ничего не понятно, по русски можно это написать? 
Задай значение для Date точно также как для pole_int1 или любого другого
По твоему коду если второе условие (я понимаю, что имеется в виду это) 
Код

if(exists(select * from Two where pole=:pole and pole1=:pole1 
and pole3=:pole3 PLAN(Two INDEX(FIND_ALL)))) 

не проходит, то процедура заканчивается. Куда ты хоешь вернуть :DATEpole ? 
PM MAIL   Вверх
Cheshuya
Дата 5.5.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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? 
 
PM MAIL   Вверх
Fazil6
Дата 5.5.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: нет
Всего: 60



определись с значением по умолчанию и присваивай его в виде литерала даты. Например
Код

DATEpole = '1.1.0001'
 
PM MAIL   Вверх
Cheshuya
Дата 6.5.2006, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 29.7.2004

Репутация: нет
Всего: нет



впринципе я думаю это единственное корректное решение.......
спасибо...

был еще вариант с null, но это черевато проблемками при сравнении в будущем...
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0630 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.