Topic: Ограничение количества выводимых записей в гриде

Версия My Visual Database: 1.48 Beta

В базе почти 2500 записей и, при добавлении, редактировании записи, обновлении грида, программа задумывается на несколько секунд.
Из украшательств грида используются: автоматическая подгонка высоты строк, выравнивание текста в ячейках и заголовках, фиксированная ширина колонок.

Как сделать, чтобы в гриде, при запуске программы, добавлении, редактировании записи, обновлении, выводилось, например, 100 последних записей, а при выводе результатов поиска - все найденные записи без ограничения?
И добавить кнопки: показать следующие/предыдущие 100 записей.

Re: Ограничение количества выводимых записей в гриде

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

Dmitry.

Re: Ограничение количества выводимых записей в гриде

Изображений и файлов в базе нет. Просто обратил внимание, что после настройки украшательств программа стала задумчивой.
Доступ к базе идёт по локальной сети.

Re: Ограничение количества выводимых записей в гриде

procedure Form1_TableGrid1_OnChange (Sender: string);
 var
    i,c: integer;
 begin
    Form1.TableGrid1.BeginUpdate;    
    c := Form1.TableGrid1.RowCount - 1;
    for i := 0 to c do
    begin
       if Form1.TableGrid1.Cells[3,i] = 'Yes' then Form1.TableGrid1.Cell[3,i].Color := clRed;
       if Form1.TableGrid1.Cells[3,i] = 'No' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
    end;
    Form1.TableGrid1.EndUpdate; 
end;

обратите внимание, в начале и в конце есть строки кода
Form1.TableGrid1.BeginUpdate;
Form1.TableGrid1.EndUpdate;


которые позволяют оптимизировать прорисовку, попробуйте их

Dmitry.

Re: Ограничение количества выводимых записей в гриде

Попробую. Я думал, что они применимы только к раскраске ячеек.

Re: Ограничение количества выводимых записей в гриде

Не помогает. Сохранение записи, например, длится 3-4 секунды.

Re: Ограничение количества выводимых записей в гриде

Отключил украшательства - сохранение записи практически мгновенное.

Re: Ограничение количества выводимых записей в гриде

Попробуйте по аналогии этого кода, разукрашивать не более ста строк, вам необходимо добавить данную строку
if c > 100 then c := 100;

procedure Form1_TableGrid1_OnChange (Sender: string);
 var
    i,c: integer;
 begin
    Form1.TableGrid1.BeginUpdate;    
    c := Form1.TableGrid1.RowCount - 1;
    if c > 100 then c := 100;
    for i := 0 to c do
    begin
       if Form1.TableGrid1.Cells[3,i] = 'Yes' then Form1.TableGrid1.Cell[3,i].Color := clRed;
       if Form1.TableGrid1.Cells[3,i] = 'No' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
    end;
    Form1.TableGrid1.EndUpdate; 
end;
Dmitry.

Re: Ограничение количества выводимых записей в гриде

Попробовал. Быстро, но некрасиво.
Буду дальше думать, как оптмизировать.

Re: Ограничение количества выводимых записей в гриде

Ну тогда остается последний вариант, кнопку Поиска придется сделать с действием SQL запрос, где можно ограничить количество выводимых записей, например (LIMIT 100):

SELECT field1, field2, id FROM tablename WHERE field1="условие" LIMIT 100
Dmitry.