Fórum CDS em Delphi 7 está lento #255819
25/10/2004
0
Renatobso
Curtir tópico
+ 0Posts
25/10/2004
Vinicius2k
O ApplyUpdates do ClientDataSet irá enviar apenas o registro modificado ao Servidor através de seu Delta, e isso é automático, vc não precisa se preocupar com isso...
O seu problema de lentidão pode estar relacionado ao volume de registros retornados e ao Close/Open :
1. Configure a propriedade PacketRecords do CDS para o número de registros que devem ser trazidos por vez do servidor. O default desta propriedade é -1, ou seja, todos os registros. Eu utilizo 32, mas fica a seu critério.
2.Não abra ou feche diretamente o DataSet. Isto também é automático com a abertura e fechamento ou Refresh do ClientDataSet.
Ajuste estes 2 detalhes e observe se houve ganho. Outras providências, no banco de dados, como índices por exemplo, podem ser tomadas, mas em geral, estas duas regras já representam um ganho de performance considerável.
T+
Gostei + 0
25/10/2004
Renatobso
tem dois eventos q teoricamente serviria para este fim...o refresh record e o update record......mas ambos não mudam nada.......
se vc puder me ajudar.....
eu te cadastrei no meu msn bele?tem algum problema?
Gostei + 0
25/10/2004
Vinicius2k
Com certeza vc não precisa de todos os registros na tela de uma só vez. O que a propriedade PacketRecords faz é trazer o número de registros que vc determinar de cada vez. Tudo automático, a não ser q vc configure para não ser automático...
Se vc tem um grid que exibe 10 registros vc só precisa trazer 10, quando tentar rolar a grid para exibir o registro 11, o CDS irá buscar mais 10, e mais 10, e assim por diante... isso é chamado de fetch por demanda...
O único método que envia as atualizações para o Banco de Dados é o ApplyUpdates, e, volto a afirmar, só é enviado o que foi modificado e seu problema não está em aplicar as atualizações mas em fechar e abrir o CDS novamente trazendo todos os registros...
Blz. Nenhum problema. :wink:
T+
Gostei + 0
25/10/2004
Renatobso
desde de já agradeço pela atenção até aqui demonstrada....
Falow.....
Gostei + 0
25/10/2004
Vinicius2k
Infelizmente, isto não tem solução... os métodos Locate, RecordCount e Last, vão forçar o fetch de todos os registros para o lado do cliente para que possam trabalhar... e isso é inevitável...
É por isso que a utilização do Locate não é recomendada no modelo Client/Server, aliás nem mesmo a forma que vc está fazendo que, apesar de estar realizando o fetch por demanda (o que é um atenuante), traz um grande volume de registros... eu sei que isso, algumas vezes, é inevitável e é por isso que existe o recurso para realizar o fetch dos registros conforme necessário...
Eu lhe aconselho a trabalhar com ´filtros´ (SQL where) em substiução ao locate porque esta é a forma ideal de implementar buscas no modelo C/S.
T+
Gostei + 0
26/10/2004
Renatobso
valew cara...
falow......
Gostei + 0
26/10/2004
Renatobso
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)