2015-07-21 3 views
0

У меня есть форма delphi, на которой есть cxGrid. Эта сетка заполняет записи через clientdataset.Filter ClientDataSet

Ввод в ящик с текстом и нажатие кнопки, я хотел бы иметь возможность фильтровать сетку для отображения записей из того, что введено в поле tedit.

До сих пор у меня есть это, но оно не оттягивает никаких записей.

dmodule.cds.DisableControls; 
try 
    dmodule.cds.Filtered := False; 
    dmodule.cds.FilterOptions := []; 

    dmodule.cds.Filter := 'Field LIKE''%' + editSearch.Text+ '%'''; 

    dmodule.cds.Filtered := True; 
finally 
    dmodule.cds.EnableControls; 
end; 

Любая помощь будет очень признательна.

Спасибо,

+0

Есть пробел между LIKE и апострофом? Я предполагаю, что «Поле» - это имя поля для фильтрации. –

+0

Между ними нет пробела, и да, слово «Поле» - это то, что нужно фильтровать. – Sharpie

+0

Получаете ли вы результат, ожидаемый, если вы отключите cxGrid от источника данных и подключите к нему TDBGrid? – MartynA

ответ

3

Просто попробуйте эти простые изменения ниже:

dmodule.cds.FilterOptions := [foCaseInsensitive,foNoPartialCompare]; 
dmodule.cds.Filter := 'Field LIKE '+ QuotedStr('%'+ editSearch.Text + '%'); 

Я здесь испытывались с cxGrid и он работал отлично.

+0

Спасибо, что сейчас работает! – Sharpie

+0

Извините, я отказался от вашего q, потому что, как я уже сказал в комментариях, ваш оригинальный код работал отлично, когда я тестировал его с помощью TcxGrid и TDBGrid. Поэтому, если этот ответ фиксировал вашу проблему, это потому, что причиной этого было то, что не упоминалось в вашем q, как конкретные данные, которые вы тестировали. Итак, пожалуйста, проследите свои шаги и добавьте к своему q, что на самом деле * вызвало вашу проблему. – MartynA

Смежные вопросы