delta do clientdataset

Delphi

03/11/2008

como eu faço para jogar o delta de um clientdataset em outro clientdataset vazio?

nesse cds vazio eu não quero visualizar todos os dados, apenas os dados alterados no outro.


Vitor Rubio

Vitor Rubio

Curtidas 0

Melhor post

Vitor Rubio

Vitor Rubio

05/11/2008

eu consegui fazer!

ao cair a conexão aparece uma opção para o usuario reconectar, e quando ele reconectar, se o changecount > 0 aparece uma form com um dbgrid mostrando onde o usuario estava. (posso fazer isso com o delta ou com o data do cds original)

Nessa tela o usuario tem a opção de salvar ou descartar.

Só que gerou um efeito estranho: se eu usar o delta, além de aparecer as linhas que eu alterei sem estarem alteradas, logo abaixo delas tem linhas só com as alterações feitas. Não sei como mergear isso. Mas se eu não mecher e dar o applyupdates, funciona!

Agora eu precisaria refazer isso, pois fui mudar o meu exemplo de ibx para dbExpress e não salvei a unica versão que funcionou....

valew!


GOSTEI 1

Mais Respostas

Luiz Henrique

Luiz Henrique

03/11/2008

Blz vitor^...

if ClientDataSet1.ChangeCount > 0 then
ClientDataSet2.Data := ClientDataSet1.Delta;


GOSTEI 0
Vitor Rubio

Vitor Rubio

03/11/2008

Olá amigo, tentei isso:
  try
    if form1.cdsDetail.ChangeCount > 0 then
      cdsProblema.Data := form1.cdsDetail.Delta;
  except
  end;


mas dá a exception de invalid field type


GOSTEI 0
Vitor Rubio

Vitor Rubio

03/11/2008

eu estou usando master detail e descobri que todo o delta fica no master, então se eu pegar e jogar o delta do master funciona.... só que eu não consigo visualizar o delta do detail.


GOSTEI 0
Luiz Henrique

Luiz Henrique

03/11/2008

Blz Vitor...

Peço desculpas por nao te dar um retorno melhor, fora um acesso no evento DSProvider/BeforeUpdateRecord para tratamento do ID/Tabela para gravação na aplicacao Servidora, nao tenho funçoes que necessitam dados do Delta.
Espero que outro colega te de um retorno melhor.

Esta linha que te passei, é de um exemplo do Guinter que tinha aqui, mas ele usa CDS/Mybase...e so tem esta linha ai no exemplo por sinal.

Abraço


GOSTEI 0
Vitor Rubio

Vitor Rubio

03/11/2008

então, o meu problema é o seguinte:

estou trabalhando com n-tier, e se por motivo de força maior o client se desconectar do server eu gostaria de, quando reconectar, mostrar ao usuario o que ele estava alterando/visualizando no momento, para poder salvar (ou não)


GOSTEI 0
Luiz Henrique

Luiz Henrique

03/11/2008

no caso, voce esta trabalhando com Dataware, isto ? e quer pegar os que foram alterados no cliente e que nao conseguiu persistir ?
Se for isso, na quebra da conexao, voce poderia tbm varrer os componemtes comparando...cds.Fields[X].OldValue com NewValue e obter os alterados. Seria um opcao tbm


GOSTEI 0
POSTAR