Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 31.03.2010, 14:20   #1
ЛисЁНЫШ
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 20
По умолчанию ADOQuery

Здравствуйте!Помогите пожалуйста!!
На форме находится компоненты DBGrid1,ADOTable1, ADOConnection1, DataSource1, ADOQuery1 также 2 компонента DateTimePicker.
Необходимо организовать фильтрацию по полю DATA. Пользователь должен с помощью компонентов DateTimePicker вводит дату начальную и конечную при нажатии кнопки должны остаться только те записи которые входят в диапазон между 2 датами.
я написала вот такой ко, но у меня выходит ошибка. Помогите разобраться с ошибкой.

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('SELECT * FROM smo1 WHERE DATA BETWEEN :first_date AND :last_date');

ADOQuery1.Parameters.ParamByName('first_date').value:=DateToStr(DateTimePicker1.Date);
ADOQuery1.Parameters.ParamByName('last_date').value:=DateToStr(DateTimePicker2.Date);
ADOQuery1.Active:=true;
end;
Изображения
Тип файла: bmp ошибка.bmp (307.8 Кб, 176 просмотров)
ЛисЁНЫШ вне форума
Старый 31.03.2010, 14:44   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для начала...
какая СУБД?
в таблице smo1 поле DATA есть?
Какого оно типа? (в структуре)
Serge_Bliznykov вне форума
Старый 31.03.2010, 14:57   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

небось что-то не то с форматом подставляемой даты
и если это дата, то зачем тогда делать это ParamByName('first_date').value:=Da teToStr(DateTimePicker1.Date);?
soleil@mmc вне форума
Старый 31.03.2010, 15:05   #4
ЛисЁНЫШ
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 20
По умолчанию

БД формат '.DBF'. В бд есть поле 'data' типа 'data'

Переделала, получилось вот так:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('SELECT * FROM smo1 WHERE DATA BETWEEN :first_date AND :last_date');

ADOQuery1.Parameters.ParamByName('first_date').value:=DateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('last_date').value:=DateTimePicker2.DateTime;
ADOQuery1.Active:=true;
end;
ошибка не выходит, но зато ничего не происходит, не работает.
ЛисЁНЫШ вне форума
Старый 31.03.2010, 15:06   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от soleil@mmc
то зачем тогда делать это ParamByName('first_date').value:=DateToStr
soleil@mmc, +1 (за внимательность ).
действительно. раз уж использовать параметры, так использовать!

Код:
ADOQuery1.Parameters.ParamByName('first_date').value:=trunc(DateTimePicker1.Date);
ADOQuery1.Parameters.ParamByName('last_date').value:=trunc(DateTimePicker2.Date);

__________________
добавлено

Цитата:
В бд есть поле 'data' типа 'data'
ну, тогда типа "Date", а не data ...

а в таблице точно есть записи, отвечающие условиям?!

посмотрите, я в код добавил trunc(...) возможно, что это поможет... (это позволит отбросить от даты временную состовляющую, есло она там есть, конечно!


и ещё, а какой провайдер используете для подключения к DBF ? (приведите вашу ConnectionString, пожалуйста)

Последний раз редактировалось Serge_Bliznykov; 31.03.2010 в 15:11.
Serge_Bliznykov вне форума
Старый 31.03.2010, 16:24   #6
ЛисЁНЫШ
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 20
По умолчанию

провайдер - Microsoft Visual FoxPro OLE DB Provider

добавила:

ADOQuery1.Parameters.ParamByName('f irst_date').value:=trunc(DateTimePi cker1.Date);
ADOQuery1.Parameters.ParamByName('l ast_date').value:=trunc(DateTimePic ker2.Date);

и у меня снова выходит таже ошибка

Последний раз редактировалось Stilet; 14.11.2010 в 20:31.
ЛисЁНЫШ вне форума
Старый 01.04.2010, 08:31   #7
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от ЛисЁНЫШ Посмотреть сообщение
БД формат '.DBF'. В бд есть поле 'data' типа 'data'

Переделала, получилось вот так:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('SELECT * FROM smo1 WHERE DATA BETWEEN :first_date AND :last_date');

ADOQuery1.Parameters.ParamByName('first_date').value:=DateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('last_date').value:=DateTimePicker2.DateTime;
ADOQuery1.Active:=true;
end;
ошибка не выходит, но зато ничего не происходит, не работает.
1. А У вас в ADOQuery добавлены эти параметры(first_date,last_date)
2. Попробуйте обращаться к параметрам не через Value а через AsDate
Код:
ADOQuery1.Parameters.ParamByName('first_date').AsDate:=DateTimePicker1.Date;
ADOQuery1.Parameters.ParamByName('last_date').AsDate:=DateTimePicker2.Date;
и в компонентах DateTimePicker св-во Time сотрите (будут одни нули) а иначе он помимо даты и время учитывает
SERG1980 вне форума
Старый 01.04.2010, 13:02   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию пример рабочего проекта

ЛисЁНЫШ, Вы не выкладываете Ваш проект и Ваш DBF файл, поэтому получается лечение "по фотографии" ;(

во вложении рабочий проект. с исходниками.
тестовый DBF файл прилагается.
смотрите пример, тестируйте...
ищите, где и что у Вас не так.
будут проблемы — милости просим.
Вложения
Тип файла: rar AdoQueryExample2_sources_only.rar (2.1 Кб, 49 просмотров)
Тип файла: rar AdoQueryExample2_sources_with_EXE.rar (260.4 Кб, 46 просмотров)
Serge_Bliznykov вне форума
Старый 01.04.2010, 13:09   #9
ЛисЁНЫШ
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 20
По умолчанию

ВСЕ ВСЕМ БОЛЬШОЕ СПАСИБО!!У МЕНЯ ВСЕ ЗАРАБОТАЛО
ЛисЁНЫШ вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADOQuery Sanakan Помощь студентам 0 10.11.2009 23:31
AdoQuery Stanislav БД в Delphi 34 26.06.2009 22:09
ADOQuery antoni БД в Delphi 3 19.06.2009 07:49
ADOQuery Только_Учусь Помощь студентам 2 16.07.2008 00:31
ADOQuery Roof БД в Delphi 2 12.07.2008 18:08