Delete com valores relacionados em outras tabelas(FK)

Delphi

27/08/2007

Como fazer para que as tabelas que estejam interligadas entri si sejam na hora de excluir da alguma tipo de ShowMessage avisando que o registro não pode ser excluído por está relacionado com outra tabela?

Estou tentando excluir um dado que tem refencia em outra tabela mas da o erro assim:
---------------------------
Debugger Exception Notification
---------------------------
Project MATERIAIS.exe raised exception class EUIBError with message ´violation of FOREIGN KEY constraint "FK_LANCAMENTO_PROJETO_2" on table "LANCAMENTO_PROJETO"
Foreign key references are present for the record
violation of FOREIGN KEY constraint ""
Error Code: 146´.
---------------------------
Break   Continue   Help   
--------------------------- 


Alguem já faz isso constantemente para que possa me dar um ajudinha?


Jpauloss

Jpauloss

Curtidas 0

Respostas

Developer1978

Developer1978

27/08/2007

No evento de exclusão coloque assim:
try
(escreva aqui o evento do delete)
except
Application.MessageBox(´Exclusão não permitida, registro presente em outra a aplicação, ´MATERIAIS´, MB_ICONERROR);
end;

Ou a mensagem que voce quiser.


GOSTEI 0
Romulocpd

Romulocpd

27/08/2007

Olá,

O FireBird é bonzinho e no erro exibe o nome da tabela e o nome da constraint que não deixou a exclusão acontecer.

Em meu sistema criei 2 arquivos TABELAS e CAMPOS e nele eu fiz tipo:

[TABELAS]
PRODUTO = Cadastro de Produtos
MATERIAIS = Cadastro de Materiais
MOV_ESTOQUE = Movimentação de Estoque

E campos:

[CAMPOS]
FK_MOV_ESTOQUE_PRODUTO = Código do Produto na Movimentação de Estoque.

Desta forma o sistema ao dar este erro eu pego, pela string do erro, o nome do campo (ON TABLE) e o nome da constraint (em FOREIGN KEY constraint). Uso os arquivos como arquivos INI e consigo exibir uma mensagem educadíssima ao usuário.

Valeu!


GOSTEI 0
POSTAR