Validar existência de registros duplicados antes do ApplyUpdates....
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.
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
Curtidas 0
Respostas
Wilson Junior
30/05/2011
Faça a validação no evento OnBeforePost do ClientDataSet.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
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....') .....
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.
Espero ter colaborado.
GOSTEI 0
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.
Espero ter colaborado.
GOSTEI 0
Paulo
30/05/2011
Amigão, vlw pela força, resolvi o problema.... muito obrigado. t+
registro,
GOSTEI 0