sábado, 21 de abril de 2012

Copiar registros de um ClientDataSet filtrado sem precisar varrê-lo

Introdução

Olá amigos, o blog está de volta e venho com uma dica que já precisei utilizar algumas vezes e que pode ser útil.

Muitas vezes precisamos copiar os dados filtrados de um ClientDataSet(CDS) para outro, mas vemos que a propriedade DATA do CDS guarda TODOS os dados do CDS desconsiderando o filtro, assim como a propriedade XMLDATA, já o CLONECURSOR não cria uma cópia do DATA, ele apenas aponta para o mesmo DATA do CDS filtrado.
Como tempo é dinheiro, acabamos varrendo o CDS e copiando os dados filtrados para outro CDS. Nada elegante, mas funciona.

Uma solução para este problema é utilizar o método SETPROVIDER do CDS para 'copiar' apenas o DATA filtrado de um CDS para outro, veremos abaixo um exemplo prático.