CloneCursor no ClientDataSet do Delphi


Ao clonar os dados de um ClientDataSet você pode aplicar filtros, índices. Cada clone sera totalmente independente de cada ClientDataSet. Mas toda alteração, inserção, eliminação em um, automaticamente será refletidas para o outro isso porque teoricamente é utilizado a mesma lista de dados. Exemplo se excluir um cliente em um dos ClientDataSet e dar um ApplyUpdates, ao atualizar o outro ClientDataSet não terá este cliente. Vamos começar com o CloneCursor.
O primeiro parâmetro é a fonte dos dados que vc quer clonar ou obter. O Reset ira Resetar toda e qualquer propriedade que possa já existir
cds.CloneCursor(cdsClientes, Reset, KeepSettings);

Vamos a definição do método
procedure CloneCursor(Source :TCustomClientDataSet; Reset: Boolean;
  KeepSettings: Boolean = False);

Com isto percebemos que para clonar um ClientDataSet teremos então três situações
CdsClone.CloneCursor(CdsFonteDeDados, False, False);//Propriedade do cdsClientes
CdsClone.CloneCursor(CdsFonteDeDados, False, True); // Propriedade do CdsClone
CdsClone.CloneCursor(CdsFonteDeDados, True, False/True); //Propriedade do CdsClone são RESETADAS

Vamos para o nosso exemplo: 
Vamos pegar 3 ClientDataSet, um com o nome cdsClientes que será vinculado com o provider e nas properties Filter coloque "VALOR > 10", vamos incluir uma tabela cdsComFiltros que receberá os dados do cdsClientes com as propriedades que esta adicionado, vamos incluir uma tabela cdsSemFiltros que receberá os dados do cdsClientes sem as propriedades que esta adicionado!


No primeiro botão vamos coloca o código para continuar com as propriedades duplicadas para o próximo ClientDataSet
procedure TFSistema.Button2Click(Sender: TObject);
begin
  cdsComFiltros.CloneCursor(cdsClientes, False, True);
end;

No segundo botão vamos coloca o código para não replicar as propriedades do ClientDataSet
procedure TFSistema.Button3Click(Sender: TObject);
begin
  cdsSemFiltros.CloneCursor(cdsClientes, True, True);
end;

Resultado do CloneCursor com e sem duplicar as propriedades: 




Exemplo: Download do exemplo

Um comentário:

  1. EXELENTE!!! Me ayudo a comprender algo que a mi entender esta algo escondido en los parametros, o realmente no era claro. muchas gracias

    ResponderExcluir