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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.02.2009, 14:07
Аватар для XIO
XIO XIO вне форума
Новичок
 
Регистрация: 06.12.2007
Сообщения: 77
Репутация: 32
По умолчанию TDBGridEh + STFilter Как сделать что бы работало?

Всем доброго времени суток!! Надеюсь я пишу в правильный раздел.
Сомневаюсь так как и к БД относиться вопрос, но скорее конкретно к компоненту TDBGridEh .

Много часов просидел за гуглом, много читал всякого, многое перепробовал... К сожалению нигде и никак не могу найти то что мне нужно.

Итак. Связка данных:
TADOConnection -> TADODataSet -> TDataSource -> TDBGridEh

Из того что я понял и сделал с TDBGrid:
STFilter >
Locale: True
Visible: True

Так же для поля, по которону нужно фильтровать, указал сделующее свойство:
STFilter >
DataField: Regime {Название самого поля}


Пробовал всяко разно.. Например пробовал добавлять такое событие(обработчик):
Код:
procedure TfmContract.DBGridEh1Filtered(Sender: TObject; index: Integer;
  column: TColumnEh; var text: String);
begin
  //ShowMessage(text);
  dsContractSelect.Filter := text;
  dsContractSelect.Filtered := False;
  dsContractSelect.Filtered := True;
end;

Но он работает совершенно некоректно. В общем при всем моем желании, фильтр не работает, по какой причине я никак не могу понять. Пожалуйста, объясните мне в чем я неправ, и что нужно делать для того что бы это все заработало. В качестве СУБД используется MS SQL 2000. Хотя не думаю что это имеет разницу. Я видел работающий фильтр данного компонента, но ни разу не видел как он настраивается
__________________
"Люди никогда не видят то, существование чего им кажется невозможным." ©Терри Пратчетт
Ответить с цитированием
  #2  
Старый 23.02.2009, 20:58
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

DBGridEh не может сам фильтровать данные. Об этом прямо сказано в справке по EHLib. Фильтровкой данных должен заниматься DataSet, а DBGridEh только отображает данные.
Поэтому выражение фильтра надо указывать непосредственно для TADODataSet в свойстве CommandText в части SQL выражения "WHERE".
Примерно так:
Код:
  ADODataSet1.Close;
  ADODataSet1.CommandText := 'select * from NewTable where Имя="SERGEY"';
  ADODataSet1.Open;
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #3  
Старый 24.02.2009, 06:16
Аватар для XIO
XIO XIO вне форума
Новичок
 
Регистрация: 06.12.2007
Сообщения: 77
Репутация: 32
По умолчанию

2 san-46
Да, я с вами соглашусь в том случае если Вы имеете ввиду фильтрацию на сервере, однако когда происходит фильтрация "Локальная" методы Грида формируют строку для свойста ДатаСета - Filter
Фильтрация локальная получается со всеми вытекающими, но именно она мне была нужна. Но в любом случае спасибо большое за отклик и провещение!

Так вот. Парадокс был в чем? Я и сам не могу точно сказать, однако вчера уже в состоянии отчаяния, удалил сам Грид, ДатаСет и ДатаСоурс.
Создал их заново, заново повторил все действия что делал(и описывал) ранее, и все заработало!!! Толи я каким-то макаром где-то что-то включил или отключил помимо необходимого, толи просто глюк О_о Но не важно.
Главное что описаные мною действия верны.
Добавляем в код либо при инициализации DLL либо при создании формы такую строку:
Код:
DBGridEhDefaultStyle.FilterEditCloseUpApplyFilter := True; 
Однако не во всех версиях.
Так же в раздел USES добавляем EhLibADO если Вы используете ADO компоненты для работы с базой.
Ну а так же:
STFilter >
Locale: True
Visible: True

Для удалёной фильтрации:
STFilter >
Locale: False
Visible: True

Это ключевые действия для того что бы фильтры заработали. Ммм, да кстати, для удаленной, необходимо сделать то, о чем говорил san-46
Ну а дальше дело техники.. Можно делать множество всяких настроек, зависит от желаний и умений
__________________
"Люди никогда не видят то, существование чего им кажется невозможным." ©Терри Пратчетт
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter