Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Delphi
(Модератор:
x77
) > Тема:
SQL
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: SQL (Прочитано 8651 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
Len
Гость
SQL
«
:
12-09-2007 08:10 »
Помогите, пожалуйста, построить SQL.
У меня есть таблица РН (Дата, Номер, Сумма). Нужно выбрать строки в заданном периоде, например, за месяц, год, квартал или другой произвольный период. На форме ставлю два Edit-a (для проставления нач. и кон. даты), кнопка (для выполнения запроса) и Grid (для результата запроса).
Записан
Sla
Команда клуба
Offline
Пол:
Re: SQL
«
Ответ #1 :
12-09-2007 08:59 »
select * from PH where Дата between '01.01.2007' and '01.12.2007'
или
select * from PH where Дата => '01.01.2007' Дата <= '01.12.2007'
соответственно нужно использовать функции преобразования дат для конкретной СУБД
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
Re: SQL
«
Ответ #2 :
12-09-2007 11:50 »
Это я умею, я хочу ставить значения дат в Edit-ы и получать результат запроса по произвольным периодам
Записан
kroum
Интересующийся
Offline
Re: SQL
«
Ответ #3 :
12-09-2007 13:14 »
В запросе вместо конкретных дат поставить
where date_column between :beg_date and :fin_date
В инспекторе объектов появится список в свойстве "Params". Установить для них тип "Date" (или DateTime)
Перед открытием запроса с помощью Query1.ParamByName('beg_date').AsDate=[значение из TEdit'ов] установить требуемый диапазон дат
Изменение значения параметров применяется только после "переоткрытия" запроса
Записан
Len
Гость
Re: SQL
«
Ответ #4 :
13-09-2007 08:22 »
Разрешите уточнить таблица RN(DataRN,NumRN,SumRN), соответственно, правильно ли я написал запрос:
select * from RN where DataRN between :beg_date and :fin_date
Далее в модуле написал:
Query1.ParamByName('beg_date').AsDate:=DateTimePicker1.Date; (вместо Edit-ов думаю лучше
Query1.ParamByName('fin_date').AsDate:=DateTimePicker2.Date; использовать DateTimePicker)
Query1.Open;
Если что-то не правильно, поправьте, пожалуйста, запрос почему-то не выполнился.
Записан
Sla
Команда клуба
Offline
Пол:
Re: SQL
«
Ответ #5 :
13-09-2007 08:50 »
он мог не выполниться по причине не соответствия формата дат в СУБД и в запросе
т.е. даты нужно привести к одинаковому виду
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
Re: SQL
«
Ответ #6 :
13-09-2007 10:14 »
Формат дат был в соответствии dd.mm.gggg. Ошибка была не в этом. В модуле добавил всего две строки, но так и не понял, почему они так уж принципиально здесь понадобились:
Query1.Close;
Query1.Prepare;
Первая всего лишь деактивирует запрос, вторая, для убеждения, что запрос подготовлен...
Странно до этого все запросы работали и без этих строк.
Всем, огромное спасибо за участие!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Delphi
(Модератор:
x77
) > Тема:
SQL
Загружается...