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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.01.2012, 17:11
Cranberry Cranberry вне форума
Прохожий
 
Регистрация: 09.01.2012
Сообщения: 1
Репутация: 10
По умолчанию Фильтр полей по дате

Пишу исследовательскую, не могу создать повторный поиск по дате на той же форме. Вот текст:
Код:
procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
{if ADOTable1.Filtered then
  begin
  Accept:= (DataSet.FieldByName('Дата').AsDateTime >=
  Form1.DateTimePicker1.Date) and
  (DataSet.FieldByName('Дата').AsDateTime <= Form1.DateTimePicker2.Date);
  end
else
Accept:=true;
end;
Админ: Пользуемся тегами для оформления кода!

Изобретение не мое - нашла на этом форуме, но ссылку дать не могу.
Работает хорошо, но только один раз, а потом не обновляем данные. Я в этом полный нуб. Помогите, пожалуйста!!!

Последний раз редактировалось Admin, 09.01.2012 в 17:16.
Ответить с цитированием
  #2  
Старый 09.01.2012, 20:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Непонятно, зачем проверять свойство Filtered у самой таблицы. Надо проверять какой-нить CheckBox, который пользователь включает, когда хочет отфильтровать таблицу.
2. А что там за фигурная скобка перед if затесалась???
3. Ну кто учил нвзывать поя по русски??? Это может создать кучу проблем в дальнейшем...
4. Еще неплохо бы использовать функцию DateOf для всех значений... что бы не попасть на проблемы со временем. Например, если Date1 = '10-01-2011 10:00:00' и Date2 = '10-01-2011 08:00:00', то Date1 > Date2.

Последний раз редактировалось lmikle, 09.01.2012 в 20:42.
Ответить с цитированием
  #3  
Старый 10.01.2012, 07:45
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

А если так?

Код:
procedure TForm1.Button6Click(Sender: TObject);
Var Filter:String;
begin
      Filter  := 'Число>='''+DateToStr(DateTimePicker1.Date)
      +''''+' and '+'Число<='''+DateToStr(DateTimePicker2.Date)+'''' ;
  ADOTable1.Active:=False;
  ADOTable1.Filter := Filter;
  ADOTable1.Filtered := true;
  ADOTable1.Active := true;
end;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter