Показать сообщение отдельно
  #9  
Старый 13.10.2012, 10:53
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от DOR
На форумах нашел вот такой код
Код:
procedure Tf_Main.Grid_MainApplyFilter(Sender: TObject);
var
s: string;
cond: variant;
i: integer;
begin
cond := '';
s := '';
Datamodule1.T_Dogovor_View.filtered:=false;
 with TDBGridEh(Sender) do begin
    if (not DataSource.DataSet.Active) or (DataSource.DataSet.RecordCount = 0) then exit;
     for i := 0 to TDBGridEh(Sender).Columns.Count - 1 do
    begin
      cond := TDBGridEh(Sender).Columns[i].STFilter.ExpressionStr;
      if cond <> '' then begin
           s := s + '['+TDBGridEh(Sender).Columns[i].FieldName + '] LIKE ''%'+ cond + '%'' AND ';
      end;
    end; Delete(s, Length(s) - 3, 4);
       Datamodule1.T_Dogovor_View.Filter := s;
   end;
Datamodule1.T_Dogovor_View.filtered:=true;
end;
Когда фильтрация происходит по полю (формат стринг) все хорошо, но если поле Дата или Логическое, соответственно не работает, кто нибудь сможет поправить код, что не зависеть от от формата поля.
В фильтре можно использовать частичное совпадение только для строковых типов. Т.е. если убрать в этом коде значок процента, то должно работать для любых типов, но с полным совпадением, а не частичным.
Ответить с цитированием