Fórum Verificar se já está no ClientdataSet #325830

22/07/2006

0

como faço para que antes de incluir um registro, o ClientDataSet seja verificado em busca de se o registro já está cadastrado?

tentei colocar no envento BeforePost da CLientDataSet uma rotina que varre o ClientDataSet, mas não deu certo e ocorre o seguinte erro: Stack overflow.

acho que uma solução poderia ser clonar o clientdataset e fazer a varredura no clone. mas como faço isso?


Raserafim

Raserafim

Responder

Posts

22/07/2006

Macario

Ola.

Uma opção seria utilizar a propriedade IndexFieldName, indicando a chave da pesquisa.


ClientDataSet.IndexFieldName:=´ID_CLIENTE´;


E depois pode utilizar, FindKey, ou o conjunto SetKey + Gotokey, para efetuar a pesquisa; 8)


Responder

Gostei + 0

22/07/2006

Raserafim

você poderia detalhar um pouco mais, e se possível fazer um exemplo?


Responder

Gostei + 0

22/07/2006

Bruno Belchior

Esse tipo de verificação, não vai funcionar no caso de você estar com o DataSet em edição ou inserção, pois ele irá tirar o mesmo desse modo. A solução é realizar essa pesquisa em outro DataSet.


Responder

Gostei + 0

24/07/2006

Raserafim

bruno, mas como faço uma cópia de um ClientDataSet sem que ao copiar os dados precise varrer todos os registros, saindo assim do registro atual e causando o problema que já citei?


Responder

Gostei + 0

24/07/2006

Andremuller

cdsClone.Data := cdsPrincipal.Data;


Depois para localizar o registro preferencialmente fazer o que o Macario disse. Caso não seja possível também dá para usar um Locate, que apesar de mais lento que o FindKey ainda é melhor que percorrer todos registros.


Responder

Gostei + 0

12/08/2006

Raserafim

após dar um locate, como saber se não tem mais nenhum outro registro igual?

ou seja, como localizar o próximo registro com o mesmo critério?


Responder

Gostei + 0

14/08/2006

Andremuller

se você seguiu a dica de criar um data set clone então tu poderá fazer qualquer coisa com os dados dele porque ele não será persistido no banco.

Sendo assim, após dar o locate, se achou, exclui o registro do client e dá um novo locate.

Sempre lembrando que é muito melhor dar um find key caso seja possível


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar