delta do clientdataset
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.
nesse cds vazio eu não quero visualizar todos os dados, apenas os dados alterados no outro.
Vitor Rubio
Curtidas 0
Melhor post
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!
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
03/11/2008
Blz vitor^...
if ClientDataSet1.ChangeCount > 0 then
ClientDataSet2.Data := ClientDataSet1.Delta;
if ClientDataSet1.ChangeCount > 0 then
ClientDataSet2.Data := ClientDataSet1.Delta;
GOSTEI 0
Vitor Rubio
03/11/2008
Olá amigo, tentei isso:
mas dá a exception de invalid field type
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
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
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
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
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)
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
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
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