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

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

Запрос к таблице с отбором по дате...... [D6, Access 2000]


Sanches ©   (2006-06-24 14:17:00) 

Делаю запрос к таблице oplata:

ADOQuery12.SQL.Add('select *  from oplata where data>02.03.2006');

где поле data - Дата/время в таблице Access 2000

Delphi выдает ошибку: "число содержит синтаксическую ошибку data>02.03.2006"

Вопрос: какой синтаксис при отборе по дате (если сделать поле data -текстовым, то отбор идет только по дням -месяц и год игнорирует)


Desdechado   (2006-06-24 19:02:00) [1]

> отсутствует Params
Заметь, я писал Query, а не ADOQuery. Суть та же, названия другие.


sniknik   (2006-06-24 19:00:00) [2]

> мож кому пригодится
ну судя по тому, что тебе не пригодились сотни аналогичных [13]-му постов здесь от более ранних участников... (закончи мысль сам)

и еще, не называй это проблемой пожалуйста... если этопроблема, то написать чтото сложнее "hello word" вообще невозможно, в принципе, а это не так.


Sanches   (2006-06-24 17:40:00) [3]

да нет, воплей не будет, спасибо что заставили думать, но на этот форум я обращаюсь для быстрого решения проблем!!!!!
А вот решение проблемы (мож кому пригодится):

ADOQuery12.Close;
ADOQuery12.SQL.Clear;
ADOQuery12.SQL.Add('select *  from oplata where  (data> :qqq) and (data< :qqq1)  order by data');
ADOQuery12.Parameters[0].Value:=DateTimePicker1.DateTime;
ADOQuery12.Parameters[1].Value:=DateTimePicker2.DateTime;
ADOQuery12.Open;


sniknik   (2006-06-24 15:40:00) [4]

Курдль ©   (24.06.06 15:36) [11]
думаеш поможет?
счаз будут вопли о нерабочести кода... (отсутствует Params).


Курдль   (2006-06-24 15:36:00) [5]


> Desdechado ©   (24.06.06 15:32) [10]


Не выдержало доброе сердце издевательства над юным мозхом советами почитать книжки! :)


Desdechado   (2006-06-24 15:32:00) [6]

Пережую [1] для непонятливых:
Query.SQL.Text:='SELECT * FROM tbl WHERE fld < :param1';
Query.Params[0].Value:=Date;
Query.Open;


Sanches   (2006-06-24 15:29:00) [7]

Ваш ответ - упадочный. наишите какие параметры :)


Курдль   (2006-06-24 15:26:00) [8]


> Sanches   (24.06.06 15:23) [7]
> что такое параметры? Примерчик


Описания и примерчики - в книжечках. По Делфи их немеряно! Просто немеряно-немеряно! (По сравнению с любыми другими продуктами).


Sanches   (2006-06-24 15:23:00) [9]


> Работайте через параметры

что такое параметры? Примерчик


Virgo_Style   (2006-06-24 15:16:00) [10]

Sanches   (24.06.06 15:05) [4]

[1], строка 1,2


Курдль   (2006-06-24 15:16:00) [11]

Ваш подход - упадочный. Работайте через параметры.


Sanches   (2006-06-24 15:05:00) [12]

ADOQuery12.SQL.Add('select *  from oplata where data = '+FormatDateTime('dd.mm.yyyy',DateTimePicker1.DateTime)+'');

Таже самая ошибка! Пару сток черкните!!!


Курдль   (2006-06-24 14:39:00) [13]


> У меня дата берется из DateTimePicker1.DateTime

Значит сам Бог велел использовать параметрические запросы.

ADOQuery + F1


Sanches   (2006-06-24 14:35:00) [14]

I>
> если эта дата незыблема

У меня дата берется из DateTimePicker1.DateTime и что-то типа:

ADOQuery12.SQL.Add('select *  from oplata where data  >'+ DateToStr(DateTimePicker1.DateTime)+')';


Курдль   (2006-06-24 14:28:00) [15]

ADOQuery12.SQL.Add('select *  from oplata where data>:data);
Где :data - параметр.
Это единственно правильный подход к решению подобных проблем. Иначе, даже если Вы правильно вычислите формат даты на данный момент, кто-то может просто его изменить в настройках БД.
Еще один вариант, если эта дата незыблема, использовать явное преобразование TO_DATE('02.03.2006', 'DD.MM.YYYY')но не уверен, что у Access-а именно такой синтаксис.


Наверх

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