Limpar ClientDataSet ...

02/05/2005

0

Gostaria de saber como limpar os dados do ClientDataSet, pois o [b:34dd4e31dc]EmptyDataSet[/b:34dd4e31dc] as vezes não limpa corretamente o cache de memória do ClientDataSet.

O que posso fazer para limpar os dados do ClientDataSet da memória para que quando for usar novamente ele vir limpo?


Cicerojr

Cicerojr

Responder

Post mais votado

13/04/2017

Sei que o tópico é antigo mas vou postar aqui como resolvi este problema pra ficar registrado.

As vezes acontece, depois de muitos FieldDefs.CLEAR; e FieldDefs.Add ficar alguma sujeira nas propriedades de Fields, oq faz com que o CreateDataSet apresente erro mesmo depois da estrutura refeita.

Para corrigir isso faça:

cds.Fields.CLEAR;

e também

cds.FieldDefs.CLEAR;

o CreateDataSet não apresentara mais o problema.

Rafael Marin

Rafael Marin
Responder

Mais Posts

02/05/2005

Juliopedroni

Fecha ele e abre denovo ... se não é isso, explique melhor o seu problema...


Responder

23/07/2006

Dpinho

Fecha ele e abre denovo ... se não é isso, explique melhor o seu problema...

Mesmo fechando e abrindo novamente o clientedatset ele sempre retornar um registro antigo.
como fazer para limpa-lo


Responder

24/07/2006

Raserafim

se o seu clientdataset está pegando os dados de uma query e esta query pega os dados com um parâmetro em uma cláusula where, então vc pode tentar esperimentar atribui um valor que não existirá (por exemplo 0) e depois fechar e abrir novamente o clientdataset.
O meu eu resolvi assim.


Responder

24/07/2006

Dpinho

se o seu clientdataset está pegando os dados de uma query e esta query pega os dados com um parâmetro em uma cláusula where, então vc pode tentar esperimentar atribui um valor que não existirá (por exemplo 0) e depois fechar e abrir novamente o clientdataset. O meu eu resolvi assim.



Na verdade meu CDS não esta ligado a nenhuma tabela, ou query esta ligado a um DAtaSource e em uma grid, ele é utilizado como cache para os itens da nota fiscal.


Responder

24/07/2006

Marcelo_mileris

Se vc não está ligando o CDS em nenhuma Query... vc pode fazer assim para limpar:

CDS.Close;
CDS.CreateDataSet;


Isso limpará a CDS e a deixará aberta


Responder

23/08/2006

Dpinho

Se vc não está ligando o CDS em nenhuma Query... vc pode fazer assim para limpar:
CDS.Close;
CDS.CreateDataSet;
Isso limpará a CDS e a deixará aberta


Esta ligado em um query
preciso limpar estes cds criado em memoria (Buffer), ja fechei, tendo fazer um loop, mas sempre fica um item gravado, engraçado que tenho em uma rotina o mesmo codigo e ele limpa na saida normal... preciso de ajuda


Responder

23/08/2006

Marco Salles

Na verdade meu CDS não esta ligado a nenhuma tabela, ou query


Esta ligado em um query


coloque aqui os eus componentes de acesso , bem com a sua base de dados(Firebird, MyBase etc...) por favor


Responder

23/08/2006

Dpinho

[quote:e50e92f2dc=´Marco Salles´]
Na verdade meu CDS não esta ligado a nenhuma tabela, ou query


Esta ligado em um query


coloque aqui os eus componentes de acesso , bem com a sua base de dados(Firebird, MyBase etc...) por favor[/quote:e50e92f2dc]


me desculpa, Este cds esta ligado a um datasource, ele recebe os itens do cupom fiscal e vai mostrando em uma query, no final faço a leitura e gravo na tabela do banco interbase, meu problema esta quando tenho que cancelar a venda e começar outra, estou utilizando um loop, mas sempre sobra um item.
Ja tentei dar um close, acitve = false, mas nada resolveu


Responder

03/03/2016

Sergio Agostinho

Pessoal, fechar e abrir o clientdataset resolve mas pode não ser o ideal, no meu caso, uso uma aplicação de 3 camadas e fechar e abrir para recarregar gera uma fila no meu servidor, porque a utilização é muito concorrida.Trata-se de parte que faz cotação de venda.O Sistema abre uma cotação e você vai adicionando itens, cada item adicionado para atualizar era dado um close open, as vezes demorava até recarregar tudo gerando um desconforto para o usuário inserir o próximo item. Se a cotação tem 99 itens e eu vou inserir o item Nro. 100, o sistema não deveria fechar e abrir para recarregar tudo de novo, bastaria só atualizar o item nr. 100 recém lançado.

Nessa rotina eu não utilizo controle de transação nem ApplyUpdates, simplesmente preencho a grade e passo como parâmetro para executar uma procedure no banco (Oracle), assim que a base é atualizada eu preciso atualizar a informação na tela.
Tenho cdsCotacao e um cdsCotacaoItem como master detail, dbexpress campo Datasetfield.

Para resolver isso bastou eu enviar o seguinte comando após cada item inserido :

cdsCotacao.MergeChangeLog;
cdsCotacao.Refresh;

O Comando MergeChangeLog dá um reset no clientdataset para ele não controlar e permitir o refresh.

Não se esqueçam de configurar os campos parametros do detalhe ProviderFlags - pfInkeys ;

Espero ter ajudado os colegar.
Responder

03/03/2016

Marco Antônio

Quem eh q está com dúvida: CiceroJr ou Dpinho?

Bom, na verdade clientDataSet não é ligado a DataSource, e sim o DataSource que é linkado ao ClientDataSet.
Pelo que entendi vc deve estar utilizando de ClientDataSet 'Virtual'. Correto?

Não está utilizando de nenhum artifício para clonar o ClientDataSet?

Desculpa estas perguntas. Mas até onde eu uso o ClientDataSer 'virtual' e se for esse o seu caso. Confesso que nunca tive problemas e EmptyDataSet é
a forma mais correta para a rotina desejada.

Particularmente eu utilizo os clientDataSet 'virtuais' criando em tempo de execução.

Peço que coloque todo o font se possível para q possamos testar melhor sua situação.

Abc.
Responder

23/04/2017

Augusto Santana

Sei que o tópico é antigo mas vou postar aqui como resolvi este problema pra ficar registrado.

As vezes acontece, depois de muitos FieldDefs.CLEAR; e FieldDefs.Add ficar alguma sujeira nas propriedades de Fields, oq faz com que o CreateDataSet apresente erro mesmo depois da estrutura refeita.

Para corrigir isso faça:

cds.Fields.CLEAR;

e também

cds.FieldDefs.CLEAR;

o CreateDataSet não apresentara mais o problema.


Rmadmac

mesmo o post sendo antigo... me ajudou muito sua resposta... obrigado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar