Duvida com ClientDataSet
23/04/2013
0
Pessoal, é o seguinte: Tenho em um TSQLDataSet na aplicação servidora o CommandText: "SELECT * FROM CLIENTES WHERE ID_CLIENTE =:pID_CLIENTE". Na aplicação cliente, tenho um ClientDataSet que acessa este TSQLDataSet passando o valor para parametro pID_CLIENTE (ex. cds.Params.ParamByName('Pid_CLIENTE').AsInteger := 23), depois de aberto o ClientDataSet o usuário faz as alterações desejadas, salva e pesquisa o id 45 por exemplo, depois altera e salva e assim por diante. Para mostrar os dados no ClientDataSet, uso Close e Open. Tudo está funcionando corretamente, porém preciso implementar de jeito que todos os registros que o usuário for pesquisando e alterando fiquem no ClientDataSet para uma posterior impressão. Como faço Close e Open o ClientDataSet fica somente com o último registro pesquisado. Alguém sabe se tem como manter todos os registros?
Desde já, obrigado a todos!
Rogerio Corgozinho
Posts
23/04/2013
Marcos Morais
cds.Refresh;
ve se funciona.
23/04/2013
Rogerio Corgozinho
cds.Refresh;
ve se funciona.
Caro Marcos, acho que isso não funcionaria, pois ao dar o Close, tudo que está no ClientDataSet seria despejado da memória.
24/04/2013
Junior Miranda
Pessoal, é o seguinte: Tenho em um TSQLDataSet na aplicação servidora o CommandText: "SELECT * FROM CLIENTES WHERE ID_CLIENTE =:pID_CLIENTE". Na aplicação cliente, tenho um ClientDataSet que acessa este TSQLDataSet passando o valor para parametro pID_CLIENTE (ex. cds.Params.ParamByName('Pid_CLIENTE').AsInteger := 23), depois de aberto o ClientDataSet o usuário faz as alterações desejadas, salva e pesquisa o id 45 por exemplo, depois altera e salva e assim por diante. Para mostrar os dados no ClientDataSet, uso Close e Open. Tudo está funcionando corretamente, porém preciso implementar de jeito que todos os registros que o usuário for pesquisando e alterando fiquem no ClientDataSet para uma posterior impressão. Como faço Close e Open o ClientDataSet fica somente com o último registro pesquisado. Alguém sabe se tem como manter todos os registros?
Desde já, obrigado a todos!
Ficou estranho! O que você quer fazer de fato? Observe:
1- "preciso implementar de jeito que todos os registros que o usuário for pesquisando e alterando fiquem no ClientDataSet para uma posterior impressão";
2- "Como faço Close e Open o ClientDataSet fica somente com o último registro pesquisado";
3- "Alguém sabe se tem como manter todos os registros?".
[]'s
24/04/2013
Francisco Macário
Esse tipo de implementação no CDS não conheço.
Uma sugestão é criar um arquivo de Log de alterações (pode ser uma tabela).
Onde você salva o usuario e o ID do cadastro salvo/alterado.
Então você cria uma metodo para imprimir esses registros.
Espero que ajude.
24/04/2013
Rogerio Corgozinho
sua ideia talvez funcione, mas acho que perderia um pouco de performance devido ter que gravar o log em disco e depois abri-lo novamente para fazer a impressão. Se eu conseguir fazer direto no ClientDataSet torna-se muito rápido, pois os dados para impressão já estarão em memória.
24/04/2013
Francisco Macário
sua ideia talvez funcione, mas acho que perderia um pouco de performance devido ter que gravar o log em disco e depois abri-lo novamente para fazer a impressão. Se eu conseguir fazer direto no ClientDataSet torna-se muito rápido, pois os dados para impressão já estarão em memória.
Se você não precisa persistir os dados, sim você pode usar outro CDS (temporário) para isso.
Mas veja, é interessante você pensar em um modo de contingência. Se por acaso o usuário estiver editando resgistros - O log estará em memoria - e a estação de trabalho ficar indisponivel (falta de energia, travamento, etc). Como proceder com o seu objetivo??
Então de alguma forma, acredito é necessário a persistência dos dados.
Pense nisso.
Clique aqui para fazer login e interagir na Comunidade :)