|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Фильтр полей по дате
Пишу исследовательскую, не могу создать повторный поиск по дате на той же форме. Вот текст:
Код:
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
|
|||
|
|||
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
|
|||
|
|||
А если так?
Код:
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; |