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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2009, 14:04   #1
Jenya
Грызун Гранита
Пользователь
 
Аватар для Jenya
 
Регистрация: 25.01.2008
Сообщений: 33
По умолчанию 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. Хотя не думаю что это имеет разницу. Я видел работающий фильтр данного компонента, но ни разу не видел как он настраивается
Jenya вне форума Ответить с цитированием
Старый 23.02.2009, 14:26   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ничего из приведенного выше не понял...
Это делается безобразно просто:
Код:
ADODataSet1.Filtered:=True; (можно и в инспекторе объектов)
ADODataSet1.Filter:=text;
Все!
mihali4 вне форума Ответить с цитированием
Старый 24.02.2009, 06:02   #3
Jenya
Грызун Гранита
Пользователь
 
Аватар для Jenya
 
Регистрация: 25.01.2008
Сообщений: 33
Хорошо

Да конечно можно и в ручную сформировать строку Filter у TDataSet
Ещё лучше сделать нехитрый запрос с параметрами, который и будет осуществлять филтрацию.
Но в TDBGridEh есть функция, которая делает часть работы за нас, главное настроить все правильно. Сверху у Grid появляется строка в которой можно вводить выражения типа:
Код:
'1'
'>=1'
'>1 AND <=5'
'~ TestStr%'
'!~ TestStr_'
'in (1,2,3,4,5,6) and >100'
'in (Str1,Str2,Str3)'
и фильтрация будет осуществлена.

Так вот. Парадокс был в чем? Я и сам не могу точно сказать, однако вчера уже в состоянии отчаяния, удалил сам Грид, ДатаСет и ДатаСоурс.
Создал их заново, заново повторил все действия что делал(и описывал) ранее, и все заработало!!! Так что, в любом случае спасибо за помощь!
Jenya вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сменить язык в Паскаль 7.0 ??? раньше работало, сейчас не работает! koir Помощь студентам 2 19.06.2008 21:32
Структуры. Как сделать, что-бы код заработал? Иллидан Общие вопросы C/C++ 1 19.05.2008 13:19
Как сделать, что бы распечатать??? slim-vm Microsoft Office Excel 2 19.03.2007 06:01
Как сделать что-бы Таймер срабатывал только один раз? Greg Компоненты Delphi 11 16.12.2006 01:25