clientDataSet Lento Delphi
Bom dia pessoal. Firebird
Uso ibtable, datasourte, provider e clientdataset para trazer os dados para serem manipulados no sistema. Porém uma determinada tabela tem muitos campos e muitos registros, o clientdataset chega a levar 2 min para abrir. Existe alguma forma para contornar essa situação?
Agradeço desde já.
Uso ibtable, datasourte, provider e clientdataset para trazer os dados para serem manipulados no sistema. Porém uma determinada tabela tem muitos campos e muitos registros, o clientdataset chega a levar 2 min para abrir. Existe alguma forma para contornar essa situação?
Agradeço desde já.
Antonelly Silva
Curtidas 0
Melhor post
Gutierry Pereira
11/08/2017
Bom dia, primeiro verifique a consulta se esta devidamente projetada, depois verifique os os index dessa consulta. Por ultimo verifique o numero de registro retornado, se o número for muito grande, faça uma paginação.
Dica. evite trazer muitos registro em uma consulta, coloque filtros ou dispositivos que minimizem esse resultados. ;)
Espero ter ajudado.
Att: Gutierry Antonio
Dica. evite trazer muitos registro em uma consulta, coloque filtros ou dispositivos que minimizem esse resultados. ;)
Espero ter ajudado.
Att: Gutierry Antonio
GOSTEI 1
Mais Respostas
Rafael Bosco
11/08/2017
ClientDataSet.DisableControls;
Faça o select e adiciona a visualização, posteriormente:
ClienteDataSet.EnableControls;
Dica: Não use o ClienteDataSet.First ao percorrer um CDS, pois esse método, irá varrer novamente o CDS para achar a primeira posição.
Faça o select e adiciona a visualização, posteriormente:
ClienteDataSet.EnableControls;
Dica: Não use o ClienteDataSet.First ao percorrer um CDS, pois esse método, irá varrer novamente o CDS para achar a primeira posição.
GOSTEI 1
Antonelly Silva
11/08/2017
os Controls não funcionou..
Como funciona a paginação?
Como funciona a paginação?
GOSTEI 0
Rafael Bosco
11/08/2017
Você está trazendo TODOS os campos da tabela? e no seu CDS cada campo da Tabela tem um campo definido? Por que se a sua tabela tem por exemplo 60 campos, e o seu CDS apenas 30, filtre a sua SELECT.
Se a sua select usa INNER, LEFT JOINS, utilize a ligação entre eles com indices que diminui o tempo também.
Tive uma situação parecida, utilizei o DisableControls e EnableControls e resolveu.
Se a sua select usa INNER, LEFT JOINS, utilize a ligação entre eles com indices que diminui o tempo também.
Tive uma situação parecida, utilizei o DisableControls e EnableControls e resolveu.
GOSTEI 0
Antonelly Silva
11/08/2017
Fiz um teste, no meu ibtable esta todos os campos e no cds deixei apenas um campo e continua lento a mesma coisa, acho que vou precisar fazer um filter no ibtable antes de abrir o cds, não é isso?
GOSTEI 0
Gutierry Pereira
11/08/2017
o filtro ira ajudar a reduzir o numero de registro, a paginação irá reduzir isso. Se unir os dois tera um bom resultado.
A paginação depende de banco para banco o mysql por exemplo fazemos uma consulta utilizando o limit.
Exemplo:
para isso vc tem que ter um controlador de pagina e dessa forma vai fazendo a requiisção das paginas necessarias.
Em algumas aplicações utilizo um algoritimo que enquanto o usuário navega na grid ele vai trazendo as proximas paginas, semelhante ao que acontece no facebook, dessa forma não é trago o resultado em uma unica consulta e conforme vai havendo a navegação os registros são sendo solicitados.
espero ter ajudado.
abraços
A paginação depende de banco para banco o mysql por exemplo fazemos uma consulta utilizando o limit.
Exemplo:
Select * from MinhaTabela limit (10,0) // traz as primeiras 10 ocorrencias Select * from MinhaTabela limit (10,11 // Traz as 10 registros iniciando no 11)
para isso vc tem que ter um controlador de pagina e dessa forma vai fazendo a requiisção das paginas necessarias.
Em algumas aplicações utilizo um algoritimo que enquanto o usuário navega na grid ele vai trazendo as proximas paginas, semelhante ao que acontece no facebook, dessa forma não é trago o resultado em uma unica consulta e conforme vai havendo a navegação os registros são sendo solicitados.
espero ter ajudado.
abraços
GOSTEI 0