Fórum Tratamento de exclusão de registro em uma tabela relacionada #395231

08/02/2011

0

Boa tarde   Como poderia fazer o tratamento de registro em uma tabela relacionada... Tipo: no cadastro de frota eu tenho a placa MGQ 9491 cadastrado por exemplo...Em manutenção de frota eu tenho a movimentação dessa placa.. Então não posso deletar do cadastro essa placa porque tenho uma movimentação para a mesma.. No banco de dados, na tabela MANFRO (Manutenção de frota) tenho a chave estrangeira da placa que é chave primária no cadastro de frota....(Ambas estão relacionadas.) Como poderia fazer um tratamento para naõ deixar excluir ???? A princípio pensei em criar uma função para fazer um select na tabela de MANFRO para verificar se essa placa existe.. (SIMPLES). Mas o campo está relacionado com outras tabelas também....   Como poderia fazer ????   Trabalho com Delphi 2010 + dbx + firebird 2.1   Fico no aguardo   Rogério
Rogerio Santos

Rogerio Santos

Responder

Posts

08/02/2011

Timuio

Cria  a função como pensou e coloque no BeforeDelete de seu Dataset
Ex:
Função RegRefenrenciado: Boolean;beginDataset.Sql.Add(' SELECT 1 AS RESULTFROM RDB$DATABASEWHERE EXISTS ( SELECT 1 FROM MANFRO WHERE ( IdPlaca = 'MGQ 9491' ) ) ')if not ( Dataset.IsEmpty ) then  result :=true;end;


if RegReferenciado thenbegin  MessageDlg( 'Você não pode excluir este Registro pois existem referências !',  mtinformation, [mbok], 0 );  abort;end;
Responder

Gostei + 0

08/02/2011

Silvio Caetano

Se você não configurou a sua chave para OnDelete CASCADE, o próprio banco lança uma excessão.

Aí é só você tratá-la com Try... Except e mandar uma mensagem para o usuário.

Se não quiser fazer assim, a sua opção é bastante válida.
Responder

Gostei + 0

08/02/2011

Marco Salles

vc esta usando o NestedDataSet ??? Ai tem maneiras mais fácil
Responder

Gostei + 0

08/02/2011

Rogerio Santos

Ok, eu vi o seu código, mas se o campo placa está relacionado com mais de uma tabela ??? Não estou usando o NestedDataset           Rogério
Responder

Gostei + 0

16/05/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

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

Aceitar