Rolagem do dbgrid ao abrir o clientdataset
Caros amigos
Estou com uma dificuldade no dbgrid.
Tenho um select que faz uma pesquisa com vários filtros e pode trazer 10, 200, 1000, 90000 registros.
Quando faço open no clientDataSet o dbgrid começa a mostrar os títulos e ele acaba rolando até o ultimo registro com isso travando a tela pq demora muito.
Tem alguma maneira de agiliza esta questão?
Ureis
Estou com uma dificuldade no dbgrid.
Tenho um select que faz uma pesquisa com vários filtros e pode trazer 10, 200, 1000, 90000 registros.
Quando faço open no clientDataSet o dbgrid começa a mostrar os títulos e ele acaba rolando até o ultimo registro com isso travando a tela pq demora muito.
Tem alguma maneira de agiliza esta questão?
Ureis
Ureis
Curtidas 0
Respostas
Joel Rodrigues
12/03/2013
Carregar essa quantidade de registros não é interessante, até por que acho difícil que alguém realmente precise dessa quantidade de linhas em uma consulta.
Use o recurso do ClientDataSet que permite dividir a consulta em pacotes menores.
Use o recurso do ClientDataSet que permite dividir a consulta em pacotes menores.
GOSTEI 0
Ureis
12/03/2013
Então, eu sei que não é o ideal, mas as vezes eu tenho esta necessidade até para gerar uma exportação e entre outras...
Você tem algum material sobre esta questão que você citou? Se puder me ajudar, agradeço.
Se caso tiver alguma outra opção também.
desde já agradeço.
Ureis
Você tem algum material sobre esta questão que você citou? Se puder me ajudar, agradeço.
Se caso tiver alguma outra opção também.
desde já agradeço.
Ureis
GOSTEI 0
Daniel Santos
12/03/2013
Simples, coloque ClientDataset.DisableControls
Ligue o Clientdataset e no final
ClientDataset.EnableControls
Esse comando para todas as atualizaoes dos componentes DB.
Acho que vai resolver seu problema.
Ligue o Clientdataset e no final
ClientDataset.EnableControls
Esse comando para todas as atualizaoes dos componentes DB.
Acho que vai resolver seu problema.
GOSTEI 0
Joel Rodrigues
12/03/2013
Talvez este link te ajude: [url]http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/DBClient_TClientDataSet_PacketRecords.html[/url]. Você vai usar a propriedade PacketRecords.
GOSTEI 0
Francisco Macário
12/03/2013
Talvez este link te ajude: [url]http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/DBClient_TClientDataSet_PacketRecords.html[/url]. Você vai usar a propriedade PacketRecords.
A solução apontada pelo Daniel é mais pratica e ideal.
O uso de PacketRecords deve-se usar com muito cuidado, pois desta maneira a requisição de rede, e BD, será maior e continua.
At.
GOSTEI 0
Joel Rodrigues
12/03/2013
Bom, se ele realmente precisa carregar e exibir tudo de uma vez, realmente a solução apontada pelo Daniel é mais adequada. Porém, insisto que considere reavaliar se é realmente necessário exibir essa quantidade de registros em um grid.
GOSTEI 0
Marco Salles
12/03/2013
O gente ??? a propriedade PacketRecords tb mostrar tudo ... So que por Demanda
O desabilitar e habilitar vai influenciar na performance da Visualização , ja o PacketRecords vai influenciar
no trafego de dados
tem um Artigo do Guinther aqui mesmo neste forum que ele explica muito bem sobre isto
se não me engano é este
https://www.devmedia.com.br/curso-de-dbexpress-e-datasnap-parte-xv/18764
[]sds
O desabilitar e habilitar vai influenciar na performance da Visualização , ja o PacketRecords vai influenciar
no trafego de dados
tem um Artigo do Guinther aqui mesmo neste forum que ele explica muito bem sobre isto
se não me engano é este
https://www.devmedia.com.br/curso-de-dbexpress-e-datasnap-parte-xv/18764
[]sds
GOSTEI 0