GARANTIR DESCONTO

Fórum Erro na aplicaçao mestre detalhe #269803

23/02/2005

0

E ai pessoal é o seguinte tenho uma aplicaçao onde tem registro mestre detalhe ate ai tudo ok , mas quando tento escluir algum registro q ja tem detalhes cadastrodos gera o seguinte erro : violation of foreing key constraint ´integ_17´ on table ´Banco_filho´
alguem sabe o q esta acontecendo ? como resolver isso ?


Grato
Guilherme
gborges_13@yahoo.com.br


Guilherme

Guilherme

Responder

Posts

23/02/2005

Gandalf.nho

Você precisa excluir primeiro os registros dependentes antes de excluir o atual, por causa da integridade.


Responder

Gostei + 0

23/02/2005

Guilherme

mas isso nunca aconteceu quando usava o paradox com interbase nao tem como fazer isso ?


Responder

Gostei + 0

23/02/2005

Gandalf.nho

Ao criar o relacionamento entre as tabelas declare como DELETE CASCADE ou crie uma trigger para fazer essa exclusão por você


Responder

Gostei + 0

23/02/2005

Guilherme

Como faço para ficar como quando usso o banco de dados paradox ?


Responder

Gostei + 0

23/02/2005

Gandalf.nho

Como faço para ficar como quando usso o banco de dados paradox ?


Na verdade isso não deveria funcionar no Paradox, já que ele não tem DELETE CASCADE, provavelmente deve haver um código na aplicação que exclui os registros filhos e só depois o pai.


Responder

Gostei + 0

23/02/2005

Guilherme

Ok , mas como faço esse delete cascate ?


Responder

Gostei + 0

23/02/2005

Gandalf.nho

Quando você cria a integridade relacional entre duas tabelas coloque ON DELETE CASCADE no final da linha.


Responder

Gostei + 0

25/02/2005

Guilherme

como nao conseguir fazer o on delete cascade estou tentando fazer do seguinte modo no evento before delete

begin
TBBanco_Filho.First;
TBBanco_Filho.DisableControls;
while not TBBanco_Filho.Eof do begin
if TBBanco_FilhoCODCAD.Value = TBBanco_PaiCODCAD.Value then begin
TBBanco_Filho.Delete;
TBBanco_Filho.next;
end else
TBBanco_Filho.next;
end;
TBBanco_Filho.EnableControls;
TBBanco_Pai.Delete;
end;

mas mesmo assim nao esta funcionando gostaria de saber como eu faço para cancelar o comando delete ? para q fique assim :

begin
tbbanco_pai.cancelaocomandodelete;
TBBanco_Filho.First;
TBBanco_Filho.DisableControls;
while not TBBanco_Filho.Eof do begin
if TBBanco_FilhoCODCAD.Value = TBBanco_PaiCODCAD.Value then begin
TBBanco_Filho.Delete;
TBBanco_Filho.next;
end else
TBBanco_Filho.next;
end;
TBBanco_Filho.EnableControls;
TBBanco_Pai.Delete;
end;


Responder

Gostei + 0

25/02/2005

Gandalf.nho

No meu caso eu não uso o evento BeforeDelete e coloco o código diretamente no botão de exclusão.


Responder

Gostei + 0

25/02/2005

Guilherme

minha pergunta foi outra .....

Gostaria de saber como faço para cancelar o delete pois eu uso o componente action list para fazer a funçao do dbnavigator


obrigado


Responder

Gostei + 0

25/02/2005

Tnaires

Olá
Basta você colocar o seu código no OnExecute do objeto TDataSetDelete.
Abraços


Responder

Gostei + 0

25/02/2005

Guilherme

Nao itendi o q vc quiz dizer !!!!!!
Tdatesetdelete ????????


Responder

Gostei + 0

25/02/2005

Tnaires

Olá
Vc não falou q estava usando ActionList? A ação q implementa a exclusão de um registro é um objeto TDataSetDelete. Aí basta vc colocar o código q vc falou no evento OnExecute da ação.
Abraços


Responder

Gostei + 0

25/02/2005

Guilherme

VAleu galera


Responder

Gostei + 0

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

Aceitar