Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отфильтровать данные, помогите новичку 
:(
    Опции темы
Коця
Дата 18.2.2005, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 13.2.2005

Репутация: нет
Всего: нет



Цитата(dsergey @ 17.2.2005, 16:25)
динамическая фильтрация
Код

procedure TForm1.Edit1Change(Sender: TObject);
begin
 Table1.Filtered:=False;
 Table1.Filter:='LAST_NAME = '+QuotedStr(Edit1.Text+'*');
 Table1.Filtered:=true;
end;


а как сделать фильтрацию по дате, от даты - до даты,
чтото типа
Код

Form1.Table1.Filter := 'podkl>'+QuotedStr(DBDateTimeEditEh1.Text) AND 'podkl<'+QuotedStr(DBDateTimeEditEh2.Text);

PM MAIL   Вверх
Бойцов А.А.
Дата 24.2.2005, 17:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А почему никто не сказал ничего по поводу OnFilterRecord?
С этим событием можно отвязаться от любого синтаксиса
(звездочек там, процентиков...) и самому принимать решение
о фильтрации записи.
  Вверх
Akella
Дата 24.2.2005, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Бойцов А.А., лучше примеры бы привел.
Читай внимательнее:
Код

procedure TfmMain.tZayFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
 if bFilterFilials then Accept := DataSet['ZFilial'] = lcbFilials.KeyValue;
end;

procedure TfmMain.tZayFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
 if DataSet['ZFilial'] = 'филиал' then Accept := true;
end;

Добавлено @ 17:15
В событии OnFilterRecord проверяется каждая запись.
Если запись удовлетворяет условию кода (т.е. Accept := True), то запись будет показана в сетке.
В этом событии можно выполнять очень сложные условия, включая и циклы и все, что позволяет язык программирования.
Есть недостаток - ресурсоемкость. На медленных машиных тормозит конкретно.

Это сообщение отредактировал(а) dsergey - 24.2.2005, 17:16
PM MAIL   Вверх
StayAtHome
Дата 24.2.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: нет
Всего: 16



dsergey
А как соотносится использование OnFilterRecord с сетевым трафиком? На клиент все равно будут затягиваться все записи? Или нет?
PM MAIL WWW ICQ YIM   Вверх
Akella
Дата 25.2.2005, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



OnFilterRecord больше зависит от процессора и объема памяти, т.к. вычисления производятся на компьютере программы. Будь то сервер или клиент
PM MAIL   Вверх
StayAtHome
Дата 26.2.2005, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: нет
Всего: 16



Цитата(dsergey @ 25.2.2005, 10:12)
на компьютере программы

Где-где?
PM MAIL WWW ICQ YIM   Вверх
Sett
Дата 27.2.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 20.12.2004
Где: Подольск

Репутация: нет
Всего: нет



Чё та, я тоже не пойму первое значение фильтрую нормально, при попытке отфильтроваьть второе, не чего не происходит вообще пустой DBGrid, что нужно делать покажите полный код фильтра, как будто он под кнопкой.
Спасибо
PM MAIL WWW ICQ   Вверх
Akella
Дата 28.2.2005, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



StayAtHome, я имел ввиду компьютер, на котором в данный момент выполняется программа (фильтрующая данные).
Добавлено @ 10:36
Sett, причем здесь кнопка?
обрати внимание на это
Код
procedure TfmMain.tZayFilterRecord(DataSet: TDataSet; var Accept: Boolean);

о чём-нибудь говорит?

Код

procedure TfmMain.tZayFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
if bFilterFilials then Accept := DataSet['ZFilial'] = lcbFilials.KeyValue;
end;

procedure TfmMain.tZayFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
if DataSet['ZFilial'] = 'филиал' then Accept := true;
end;


это говорит о том, что код
Код
if DataSet['ZFilial'] = 'филиал' then Accept := true;

выполняется в событии OnFolteredRecord, а чтобы это событие сработало нужно вызвать
Код

Table1.Filtered:=true;

Table1.Filter - не обязятельно заполнять.

Это сообщение отредактировал(а) dsergey - 28.2.2005, 10:38
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.