Performance com relatórios grandes

<< Click to Display Table of Contents >>

Navigation:  Novatos > Mais Dicas Programação Delphi >

Performance com relatórios grandes

Previous pageReturn to chapter overviewNext page

Pessoal, sabe quando fazemos rotinas em que tem que percorrer um dataset sempre começa bem rápido, mas a medida que os registros vão passando vai ficando mais lento, mais lento, até virar uma tartaruga manca caolha.

Ontem fiz uns testes e descobri o motivo!

Note o select abaixo:

SELECT * FROM tb_base;

 

while not EOF do

begin

  ...

  Next;

end;

 

Quando usamos o trio ClientDataSet-Provider-SQLDataSet -OU- dbxDataSet, mesmo com pacote de 30, a cada NEXT o registro é carregado para memória e fica lá, tanto é que se fizermos um PRIOR vamos pode "ver" o conteúdo do registro.

Fiz um experiência coloquei somente um SQLDataset (ele é unidirecional). No caso de relatórios em que temos que apenas percorrer os registros do inicio ao fim fica infinitamente mais rápido e não vai ficando mais lento a medida que percorre o dataset! Porém não tente usar para consultas que tenham DataSource que não funciona visto que ele é unidirecional.

Espero que isso ajudem a fazer relatórios mais rapidos, bonitos e com opção de fonte e cor.