Topic: Как организовать поиск в TableGrid

Вопрос.
Как можно сделать следующее:
По определенному фильтру загрузить записи в таблицу, а дальнейшие поиски, сортировки и т.д. делать уже по загруженным данным в таблицу? Или все виды поисков  (dbFilter, кнопкой поиск, кнопка SQL запрос) и сортировок всегда обновляют данные с сервера БД.

Re: Как организовать поиск в TableGrid

Скачайте пожалуйста бета версию 4.0
https://www.dropbox.com/s/nfuchl6uwhrtr … b.zip?dl=0


Можно сделать это скриптом, скрывая неподходящие строки у грида,

поиск по точному соотвествию, регистронезависимый, поиск в первой колонке

procedure Form1_Edit1_OnChange (Sender: string);
var
    iRow,c: integer;
begin
    Form1.TableGrid1.BeginUpdate;

    c := Form1.TableGrid1.RowCount-1;
    for iRow := 0 to c do
        if Form1.Edit1.Text <> '' then
        Form1.TableGrid1.RowVisible[iRow] := LowerCase(Form1.TableGrid1.Cells[0,iRow]) = LowerCase(Form1.Edit1.Text)
        else Form1.TableGrid1.RowVisible[iRow] := true;

    Form1.TableGrid1.EndUpdate;
end;
Dmitry.

3 (edited by Evgeniy D 2017-11-02 12:14:31)

Re: Как организовать поиск в TableGrid

В новой версии 4b что то кардинально изменилось? стали появятся где то секундные задержки перед открытием/закрытием форм, ранее такого не наблюдалось.

Re: Как организовать поиск в TableGrid

Evgeniy D wrote:

В новой версии 4b что то кардинально изменилось? стали появятся где то секундные задержки перед открытием/закрытием форм, ранее такого не наблюдалось.

Из основного добавлен компонент карты.


Создайте пожалуйста новую тему для этого вопроса и ваш проект, также опишите на какой именно форме можно это заметить.

Dmitry.

Re: Как организовать поиск в TableGrid

Доброго дня всем, а как вывести в футер таблицы количество видимых строк, после скрытия по фильтру?

Re: Как организовать поиск в TableGrid

Здравствуйте
Попробуй это
Derek.

Post's attachments

Attachment icon gridtotals.jpg 242.45 kb, 266 downloads since 2018-01-28 

7 (edited by sts36 2018-01-28 12:53:19)

Re: Как организовать поиск в TableGrid

derek wrote:

Здравствуйте
Попробуй это
Derek.

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

frmMain.TableGrid3.BeginUpdate;
  c := frmMain.TableGrid3.RowCount-1;
  for iRow := 0 to c do
    if frmMain.ComboBox21.Text <> 'Toate' then frmMain.TableGrid3.RowVisible[iRow] := LowerCase(frmMain.TableGrid3.Cells[1,iRow]) = LowerCase(frmMain.ComboBox21.Text)
    else frmMain.TableGrid3.RowVisible[iRow] := true;
  frmMain.TableGrid3.EndUpdate;

При фильтрации значение в футере не меняется (остаётся обшее количество). Так вот вопрос в том как сделать вывод количества видимых строк в таблице после события в комбобокс.
PS: Пробовал так

frmMain.TableGrid3.Columns[1].Footer.FormulaKind := fkCount; 
 frmMain.TableGrid3.CalculateFooter;

Выводется общее количество...

Re: Как организовать поиск в TableGrid

попробуйте так

var
    i,c,q: integer;
begin    
    frmMain.TableGrid3.BeginUpdate;
    c := frmMain.TableGrid3.RowCount-1;
    for iRow := 0 to c do
        if frmMain.ComboBox21.Text <> 'Toate' then frmMain.TableGrid3.RowVisible[iRow] := LowerCase(frmMain.TableGrid3.Cells[1,iRow]) = LowerCase(frmMain.ComboBox21.Text)
        else frmMain.TableGrid3.RowVisible[iRow] := true;
    frmMain.TableGrid3.EndUpdate;
  
    // считаем кол-во видимых строк и выводим в футер
    q := 0;
    c := frmMain.TableGrid3.RowCount - 1;
    for i := 0 to c do if frmMain.TableGrid3.RowVisible[i] then Inc(q);
    frmMain.TableGrid3.Columns[0].Footer.Caption := IntToStr(q);
Dmitry.

Re: Как организовать поиск в TableGrid

DriveSoft wrote:

попробуйте так

Спасибо..метод работает....чёт ступил...))
Хотя я уже отказался от данного метода фильтрации.. Возникло мнение что приложение будет жутко лагать при большом количестве записей (ИМХО) в моём случае около 10к в год....Сейчас реализовал поиск путём точечных запросов...