Validar existência de registros duplicados antes do ApplyUpdates....

Delphi

30/05/2011

Bom dia amigos,
Estou com o seguinte problema:
Tenho um formulário com Mestre-detalhe, no qual os registros detalhes não podem ser repetidos, e esses mesmos detalhes são mestre de outra tabela detalhe. Ex:
Bancos                                           |->Agencias                                       |->Conta Corrente     
O problema esta quando estou fazendo a inclusão de um novo banco juntamente com uma nova agencia e uma nova conta corrente, se por exemplo eu repetir a mesma agencia do mesmo banco ou a mesma conta corrente da mesma agencia ele deixa eu cadastrar mesmo validando. Isso ocorre porque estou usando o Post e dando ApplayUpdates para efetivar tudo no final da transação.
Quero saber se existe uma forma de eu validar a existência de registros duplicados ainda no post antes de envia-los para o banco.
Obrigado.

Paulo

Paulo

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

30/05/2011

Faça a validação no evento OnBeforePost do ClientDataSet.

Espero ter colaborado.
GOSTEI 0
Paulo

Paulo

30/05/2011

Talvez eu não tenha me expressado de forma correta...
Incluo um determinado banco: (Master)cdsBancos.insert;001-Banco do BrasilcdsBancos.Post; 
Incluio as agências nesse banco:(Detail) cdsagencias.insert;001- Banco do Brasil123- Agência Teste da SilvacdsAgencias.post;
cdsagencias.insert;001- Banco do Brasil444- Agência Teste do BragacdsAgencias.post;
cdsagencias.insert;001- Banco do Brasil123- Agência Teste da Amanda   **************** neste ponto que tenho o problemacdsAgencias.post;                                              cdsBancos.applyupdates(0);
Ou seja, só consigo validar se já existe esta agência depois que dou um apply, nesse caso ela ainda não existe no banco.eu valido assim: cdsAgencia.close;sdsAgencia.commanText:='select * from agencias where agencia_codigo = '+dbeAgencia.text +'banco_codigo = ' + dbeBanco.text ....cdsAgencia.open;
if cdsAgencia.recodcount<>0 then showmessage('Agencia já existe....') .....








Faça a validação no evento OnBeforePost do ClientDataSet.

Espero ter colaborado.

 
 
GOSTEI 0
Wilson Junior

Wilson Junior

30/05/2011

Faça um clone do seu ClientDataSet, veja este link http://www.ramosdainformatica.com.br/art_recentes01.php?CDA=698, neste link mostra como duplicar um registro, mas vc irá fazer percorrer e procurar a sua agencia nele, caso não exista no seu ClientClone, verifique no banco de dados se existe o registro.

Espero ter colaborado.
GOSTEI 0
Paulo

Paulo

30/05/2011



Amigão, vlw pela força, resolvi o problema.... muito obrigado. t+




registro, 
 
GOSTEI 0
POSTAR