Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.07.2010, 11:26
antoni antoni вне форума
Прохожий
 
Регистрация: 01.08.2008
Сообщения: 20
Репутация: 10
Печаль выборка из диапазона дат в ADOQuery

Народ помогите! дайте пример выборки из диапазона дат по полям period1 and period2

SELECT base_doc.id_base, spr_doc.spr_doc, base_doc.data, spr_user.spr_user, base_doc.period1, base_doc.period2, base_doc.rezul, base_doc.data_akt,
base_doc.naim_subj, base_doc.id_doc, base_doc.id_user
FROM base_doc LEFT OUTER JOIN
spr_doc ON base_doc.id_doc = spr_doc.id_SprDoc LEFT OUTER JOIN
spr_user ON base_doc.id_user = spr_user.id_user

заранее очень благодарен.
Ответить с цитированием
  #2  
Старый 27.07.2010, 11:36
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Примерно так:
Код:
SELECT base_doc.id_base, spr_doc.spr_doc, base_doc.data, spr_user.spr_user, base_doc.period1, base_doc.period2, base_doc.rezul, base_doc.data_akt, 
base_doc.naim_subj, base_doc.id_doc, base_doc.id_user
FROM base_doc LEFT OUTER JOIN
spr_doc ON base_doc.id_doc = spr_doc.id_SprDoc LEFT OUTER JOIN
spr_user ON base_doc.id_user = spr_user.id_user
WHERE :UserDate between base_doc.period1 AND base_doc.period2
где :UserDate дата которую надо проверить на вхождение диапазон дат.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 27.07.2010, 12:05
antoni antoni вне форума
Прохожий
 
Регистрация: 01.08.2008
Сообщения: 20
Репутация: 10
По умолчанию

а можно как то по подробнее? желательно код, я просто не силен в Delphi а исходник достался от прошлого программиста.
Ответить с цитированием
  #4  
Старый 27.07.2010, 14:07
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

причем тут Delphi, это SQL запрос.
Страдалецъ написал запрос.

ключевое:
Код:
WHERE :UserDate between base_doc.period1 AND base_doc.period2

where-Ограничивает возвращаемые значения.
between- указывает значения в диапазоне от и до.(включительно)

ПС. если надо указать диапазон и чтоб поля period1 и period2 входили в него то можно так:
Код:
WHERE  (base_doc.period1 between :UserDate1 AND :UserDate2)
and (base_doc.period2 between :UserDate1 AND :UserDate2) 
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #5  
Старый 27.07.2010, 14:30
antoni antoni вне форума
Прохожий
 
Регистрация: 01.08.2008
Сообщения: 20
Репутация: 10
По умолчанию

а UserDate1 что значит поля на форме?
Ответить с цитированием
  #6  
Старый 27.07.2010, 14:37
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от antoni
а UserDate1 что значит поля на форме?
это параметры которым ты будешь присваивать даты между которыми будет происходить выборка
Ответить с цитированием
  #7  
Старый 28.07.2010, 08:59
antoni antoni вне форума
Прохожий
 
Регистрация: 01.08.2008
Сообщения: 20
Репутация: 10
По умолчанию

Прости не понимаю, ты можешь на примере моего запроса написать правильно?
Ответить с цитированием
  #8  
Старый 28.07.2010, 09:38
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Например на форме имеем:
ADOQuery1
2 DateTimeEdit (календарь короче не помню как оно называется)
1 кнопку.

в свойство SQL компонента ADOQuery1 пишем запрос:
Код:
SELECT base_doc.id_base, spr_doc.spr_doc, base_doc.data, spr_user.spr_user, base_doc.period1, base_doc.period2, base_doc.rezul, base_doc.data_akt, 
base_doc.naim_subj, base_doc.id_doc, base_doc.id_user
FROM base_doc LEFT OUTER JOIN
spr_doc ON base_doc.id_doc = spr_doc.id_SprDoc LEFT OUTER JOIN
spr_user ON base_doc.id_user = spr_user.id_user
WHERE  (base_doc.period1 between :UserDate1 AND :UserDate2)
and (base_doc.period2 between :UserDate1 AND :UserDate2)
далее...
жмем 2 раза на кнопку.
в обработчике пишем:
Код:
ADOQuery1.Active := false;
ADOquery1.parameters.parambyname('UserDate1').Value:=DatetimeEdit1.date;
ADOquery1.parameters.parambyname('UserDate2').Value:=DatetimeEdit2.date;
ADOQuery1.Active:=true;
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #9  
Старый 28.07.2010, 12:51
antoni antoni вне форума
Прохожий
 
Регистрация: 01.08.2008
Сообщения: 20
Репутация: 10
По умолчанию

Огромное спасибо! сегодня вечером попробую.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter