A quem possa interessar, conclusões sobre o Delta:

Como os colegas já tinham dito, o Delta armazena somente os registros que
foram modificados.
Então para constatar o seu correto funcionamento, fiz um teste muito
simples:

- Criei um novo projeto e coloquei dois TClientDataSet na tela (cdsNormal e
cdsDelta).
- Com o cdsNormal linkado à minha tabela do banco de dados, inseri, alterei
e deletei registros.
- Depois atribui o Delta do cdsNormal ao Data do cdsDelta: cdsDelta.Data :=
cdsNormal.Delta;
- Quando dei um Active := true no cdsDelta (mostrei os registros num
DBGrid), o mesmo continha somente as alterações realizadas no cdsNormal.
- Para saber o que tinha acontecido com cada registro, fiz o seguinte no
evendo onCellClick do DBGrid linkado ao cdsDelta:

procedure TForm1.DBGrid2CellClick(Column: TColumn);
begin
  with cdsDelta do
  begin
    case UpdateStatus of
      usUnmodified: lblStatus.Caption := 'Não modificado';
      usModified: lblStatus.Caption := 'Modificado';
      usInserted: lblStatus.Caption := 'Inserido';
      usDeleted: lblStatus.Caption := 'Deletado';
    end;
  end;
end;

Simples não?!

Abraços,

Edelson.


2009/6/2 Edelson Regis de Lima <edre...@ig.com.br>

> Valew pessoal!
>
> Vou fazer uns testes aqui, e depois posto o resultado.
>
> Abraços,
>
> Edelson.
>
>
> 2009/6/2 Daniel Sobrinho Laporte <daniel.lapo...@gmail.com>
>
>
>>
>> Exatamente Ricardo... através do Delta você consegue obter o valor antigo,
>> e
>> o novo valor dos campos através dos métodos NewValue e OldValue.
>>
>> Edelson para um pequeno teste você pode criar um projeto em branco colocar
>> dois clientdataset's, um como tabela de memória e o outro com dados
>> preenchidos, ao alterar os valores do primeiro e realizar o post, grave o
>> delta no clientdataset de memória, desta maneira você pode realizar um FOR
>> olhando os fields e comparando-os. É importante que você entenda bem o
>> funcionamento de Variants para não ter supresas de como trabalhar com os
>> OleVariants.
>>
>> []s
>>
>> Daniel
>>
>> 2009/6/2 Ricardo César Cardoso 
>> <ricardo_engs...@yahoo.com.br<ricardo_engsoft%40yahoo.com.br>
>> >
>>
>>
>> >
>> >
>> > Até onde lembro o Delta só tem as colunas e dados mudados. Não tem o
>> > registro todo. Se não me engano a matriz do Delta é algo assim: Field,
>> > OldValue, NewValue mas não tenho certeza absoluta.
>> >
>> > []'s
>> > Ricardo.
>> >
>> > 1) Evite escrever suas mensagens usando somente LETRAS MAIÚSCULAS.
>> >
>> > 2) Revise o texto de sua mensagem. Uma mensagem bem escrita é melhor
>> > compreendida.
>> >
>> > 3) Vamos ajudar o Grupo e o Yahoo! Apague o conteúdo irrelevante!
>> >
>> > --- Em ter, 2/6/09, Edelson Regis de Lima 
>> > <edre...@ig.com.br<edregis%40ig.com.br>
>> <edregis%40ig.com.br>>
>> > escreveu:
>> >
>> > De: Edelson Regis de Lima <edre...@ig.com.br <edregis%40ig.com.br><edregis%
>> 40ig.com.br>>
>> > Assunto: Re: [delphi-br] Funcionamento interno do ApplyUpdates
>> > Para: delphi-br@yahoogrupos.com.br 
>> > <delphi-br%40yahoogrupos.com.br><delphi-br%
>> 40yahoogrupos.com.br>
>>
>> > Data: Terça-feira, 2 de Junho de 2009, 9:40
>> >
>> >
>> > Entendi...
>> >
>> > E eu consigo enxergar as rows os Fields dentro do Data e do Delta?
>> >
>> > Ou tenho que fazer algum TypeCast para obter as informações?
>> >
>> > Pelo que você falou, eu preciso comparar tudo o que está diferente no
>> Delta
>> >
>> > em relação ao Data, trabalhar essas informações e depois persistir no
>> banco
>> >
>> > de dados.
>> >
>> > Vocês sabem de alguma maneira eficaz de se fazer isso? Tipo, sem correr
>> o
>> >
>> > risco de deixar dados para traz?
>> >
>> > Obrigado,
>> >
>> > Edelson.
>> >
>> > 2009/6/1 Daniel Sobrinho Laporte <daniel.laporte@ gmail.com>
>> >
>> > >
>> >
>> > >
>> >
>> > > Edelson o ClientDataSet possui dois estados internos.
>> >
>> > >
>> >
>> > > ClientDataSet. Data: contém os dados originais
>> >
>> > > ClientDataSet. Delta: contém os dados que sofreram alteração
>> >
>> > >
>> >
>> > > A peristência na verdade é realizada pelo DataSetProvider de acordo
>> com
>> > seu
>> >
>> > > UpdateMode e com as configurações dos ProviderFlags. Tanto o Data
>> quanto
>> > o
>> >
>> > > Delta são OleVariants, desta forma você pode criar um array de
>> variants e
>> >
>> > > atribuir o valor, ou utilizar um outro ClientDataSet. Data em tempo de
>> >
>> > > execução ok?
>> >
>> > >
>> >
>> > > []'s
>> >
>> > >
>> >
>> > > Daniel
>> >
>> > >
>> >
>> > > 2009/6/1 berdam <berdamzinho@ yahoo.com. br <berdamzinho% 40yahoo.com
>> .
>> > br>>
>> >
>> > >
>> >
>> > >
>> >
>> > > >
>> >
>> > > >
>> >
>> > > > o dataset tem tuas propriedades o data e o delta, se n me engano o
>> data
>> >
>> > > > possui o registro, já o delta possui todos os registros alterados.
>> >
>> > > >
>> >
>> > > > Edelson Regis de Lima escreveu:
>> >
>> > > >
>> >
>> > > > >
>> >
>> > > > >
>> >
>> > > > > Olá galera!
>> >
>> > > > >
>> >
>> > > > > Alguém sabe como o ApplyUpdates do TClientDataSet reconhece
>> >
>> > > internamente
>> >
>> > > > > quais são os registros que foram alterados, e que operação ele
>> > precisa
>> >
>> > > > > executar (se é insert, update, delete...).
>> >
>> > > > > Estou perguntando isso porque estou desenvolvendo um componente
>> > herdado
>> >
>> > > > do
>> >
>> > > > > TClientDataSet, que terá um ApplyUpdates "modificado" . Esse
>> >
>> > > ApplyUpdates
>> >
>> > > > > terá que fazer algumas outras coisas antes de persistir os dados.
>> >
>> > > > > E se eu conseguir entender como o ApplyUpdates reconhece quais os
>> >
>> > > > > registros/campos que precisam ser persistidos, irá facilitar
>> muiiiito
>> > a
>> >
>> > > > > minha vida.
>> >
>> > > > > Já ouvi falar que tem a ver com o Delta, mas não manjo muito sobre
>> >
>> > > ele...
>> >
>> > > > >
>> >
>> > > > > Abraços,
>> >
>> > > > >
>> >
>> > > > > Edelson.
>> >
>> > > > >
>> >
>> > > > > [As partes desta mensagem que não continham texto foram removidas]
>> >
>> > > > >
>> >
>> > > > >
>> >
>> > > >
>> >
>> > > > --
>> >
>> > > > ------------ --------- --------- --------- --------- -----
>> >
>> > > > Uberdam Cavaletti
>> >
>> > > > Formado em Tecnologia da informação - Unoesc - Xxe
>> >
>> > > > Pós graduado em Desenvolvimento Java - Unoesc - Xxe
>> >
>> > > >
>> >
>> > > > Acesse http://www.curricul ar.com.br/ berdam
>> >
>> > > > Acesse http://passandovene no.blogspot. com
>> >
>> > > >
>> >
>> > > > ------------ --------- --------- --------- --------- -----
>> >
>> > > >
>> >
>> > > >
>> >
>> > > >
>> >
>> > >
>> >
>> > > --
>> >
>> > > Daniel Sobrinho Laporte
>> >
>> > > Analista de Sistemas e Desenvolvedor Delphi + Firebird.
>> >
>> > > Colunista e Editor Técnico ClubeDelphi - DevMedia.
>> >
>> > >
>> >
>> > > [As partes desta mensagem que não continham texto foram removidas]
>> >
>> > >
>> >
>> > >
>> >
>> > >
>> >
>> > [As partes desta mensagem que não continham texto foram removidas]
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > Veja quais são os assuntos do momento no Yahoo! +Buscados
>> > http://br.maisbuscados.yahoo.com
>> >
>> > [As partes desta mensagem que não continham texto foram removidas]
>> >
>> >
>> >
>>
>> --
>> Daniel Sobrinho Laporte
>> Analista de Sistemas e Desenvolvedor Delphi + Firebird.
>> Colunista e Editor Técnico ClubeDelphi - DevMedia.
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>  
>>
>
>


[As partes desta mensagem que não continham texto foram removidas]

Responder a