Fórum Erro ao excluir dados de tabela detalhe #331409
18/10/2006
0
Tenho duas tabelas uma mestre e outra detalhe, ta funcionando tudo belezinha, exceto na hora de excluir, todas as vezes q tento excluir, recebo a seguinte mensagem de erro:
Cannot delete master record with details
Como posso contornar esse problema?
Removendo todas os registros referentes a tabela mestre, da tabela detalhe antes da exclusão?
Agradeço desde já
Gardel
Curtir tópico
+ 0Posts
18/10/2006
Ronaldo.cutu
se sua tabela detalhes tem relacionamento com a mestre vc
primeiro tem excluir os itens da detalhes para depois escluir
a da mestre
att
Ronaldo
Gostei + 0
19/10/2006
Gardel
Porém, essa implementação de exclusão, eu fiz dentro do próprio banco de dados através de exclusão em cascata, pela chave estrangeira. Sendo assim gostaria que o delphi ignorasse esse erro, e permitisse que o proprio banco de dados realizasse essa operação.
Exemplo:
Qdo se faz o autoincremento dos campos chave primaria (cadastro de clientes por exemplo) por trigger, qdo adicionamos esses campos no dataset pelo delphi, esse campo vem com a propriedade required true, sendo assim toda vez q vc deixa o campo vazio e tenta salvar o registro ele gera o erro, dizendo que o campo é requerido, então coloca-se o valor da propriedade required como false, assim o erro não é gerado e o proprio banco trata de autoincrementar o campo usando a trigger.
Como no exemplo citado, o delphi ignora, e deixa o bd tratar, gostaria de saber se existe alguma maneira de fazer com que o delphi ignore esse erro e deixe o bd fazer as exclusão por si mesmo, visto que já está implementado dentro do banco.
Espero ter sido claro :)
Agradeço...
Gostei + 0
19/10/2006
Raserafim
as vezes acontece erros que apenas o debugador do delphi pega, mas na aplicação para o cliente, este erro pode não aparecer.
Gostei + 0
21/10/2006
Gardel
Qdo dentro do Delphi, o erro ocorre, e a mensagem de erro é mostrada.
Qdo fora do delphi, ou seja, com o programa já para o cliente a mensagem de erro nao é mostrada, porém, simplesmente nada acontece, o registro da tabela mestre não é excluido, muito menos os da tabela detalhe.
Alguém tem alguma idéia de como resolver isso?
Agradeço.
Gostei + 0
23/10/2006
Nigro
Gostei + 0
23/10/2006
Tiagorocha
1. Tem chave estrangeira apontando pra tabela master na tabela detail?
2. Tem ON UPDATE CASCADE nessa chave estrangeira?
3. E AINDA ASSIM NÃO FUNCIONA? Que estranho...
Gostei + 0
23/10/2006
Tiagorocha
Digo... ON DELETE
Gostei + 0
24/10/2006
Gardel
Dentro do banco (FireBird), na tabela detalhe tem a chave estrangeira que liga ela com a tabela Mestre e essa chave está confirurada pra excluir em cascata caso o registro da tabela Mestre seja excluido.
Sinceramente desisti de contornar o problema, estou deletando pelo Delphi mesmo, faço um loop na tabela detalhe excluindo todo os registros da tabela detalhe que tem o mesmo codigo da tabela mestre.
O erro sumiu assim, mais não entendo porque esse erro ocorre...
Obrigado pela ajuda,
Gostei + 0
24/10/2006
Tiagorocha
Eu só faria isso em último caso (num caso igual ao seu) :P
Gostei + 0
04/01/2008
Racastro
Obrigada!!!
Gostei + 0
15/03/2008
T3r3son
Alguma sugestão???
[]´s
Evaristo
Gostei + 0
15/03/2008
Wanderok
Vejam se os registros da tabela detalhe nao estao linkados por algum objeto em seu projeto no momento da exclusao.
Gostei + 0
27/08/2009
Ricardoferreira_spa
poCascadeDeletes e poCascadeUpdates
Esperto ter ajudado
Gostei + 0
27/08/2009
Osocram
So para complementar o que estava acontecendo no caso de vcs, é que no banco de dados esta em cascade mas no delphi não permite, tanto que se vc tentar excluir o registro direto no banco deve funcionar.
Alterando as configurações que nem o Ricardo comentou dae o provider vai permitir isso tbm.
Flw.
Gostei + 0