Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как в sql-запросе отфильтровать по дате [D7, XP]


sipsik ©   (2007-02-25 16:37:00) 

Здравствуйте!
Подскажите, как при подключении БД *.mdb с помощью компонента ADOQuery выводить только те записи, у которых в поле [дата поставки] дата меньше текущей?

у меня

'SELECT * FROM [заказ на поставку] where
"Дата поставки"='+datetostr(date)

пишет ошибку, что неправильный синтаксис выражения
[дата поставки]=25.02.2007


sipsik   (2007-02-26 11:13:00) [1]

Вчера с ребятишками занималась, не написала, как получилось. А получилось вот так:

fMain.ADOQuery1.Parameters[0].Value:=date;
QuerySQL := 'SELECT * FROM [заказ на поставку] where "Дата поставки"<:data';
fMain.ADOQuery1.SQL.Add(QuerySQL);

Получилось с параметрическим запросом.
Спасибо за подсказку.


Anatoly Podgoretsky   (2007-02-25 17:27:00) [2]

> sipsik  (25.02.2007 17:18:10)  [10]

Боюсь ошибиться, но вроде "Дата поставки" это не имя поля, а литерал, попробуй квадратные скобки.


SergP_n/a   (2007-02-25 17:23:00) [3]


> sipsik   (25.02.07 17:09) [8]
> я не знаю, как использовать параметры
> я писала
>
> 'SELECT * FROM [заказ на поставку] where
> "Дата поставки"<25/02/2007'
>
> ошибки нет, но не находит ничего


Формат не тот... Лучше используй параметрические запросы чтобы не заморачиваться с форматом даты...


sipsik   (2007-02-25 17:18:00) [4]

я написала

'SELECT * FROM [заказ на поставку] where
"Дата поставки"<'+quotedstr('25.02.2006')

и пишет теперь несоответствие типов данных выражению условия отбора


Anatoly Podgoretsky   (2007-02-25 17:13:00) [5]

> sipsik  (25.02.2007 17:09:08)  [8]

Сказано было про кавычки, а у тебя 25 поделить на 2, поделить на 2007, это дата очень близка к нулевой 1.01.1900


sipsik   (2007-02-25 17:09:00) [6]

я не знаю, как использовать параметры
я писала

'SELECT * FROM [заказ на поставку] where
"Дата поставки"<25/02/2007'

ошибки нет, но не находит ничего


Anatoly Podgoretsky   (2007-02-25 17:04:00) [7]

И если параметры не будешь использовать, то QuotedStr(datetostr(date)), литералы должны быть в кавычках, но без параметров все равно будут рано или поздно проблемы.


Anatoly Podgoretsky   (2007-02-25 17:02:00) [8]

> sipsik  (25.02.2007 16:50:04)  [4]

Вот это уже другое дело используй критерий отбора Where D<:D


Virgo_Style   (2007-02-25 17:00:00) [9]

Используй параметры и не забывай, что слову меньше соответствует значок "<", а не "="


sipsik   (2007-02-25 16:50:00) [10]

я хотела сказать, как правильно написать sql-строку при активации запроса, чтобы в dbgrid у меня вывелись только те записи из таблицы, у которых дата в поле "дата поставки" меньше текущей?


Anatoly Podgoretsky   (2007-02-25 16:48:00) [11]

> sipsik  (25.02.2007 16:44:02)  [2]

Что как? Как сделать то чего нет в природе? Ну так это к магам.


sipsik   (2007-02-25 16:44:00) [12]

но все же как?


Anatoly Podgoretsky   (2007-02-25 16:40:00) [13]

В SQL запросе нет фильтров, это привелегия клиентской стороны.


Наверх

Титульная страница Поиск, карта сайта Написать письмо