Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) verificar os relacionamentos criados antes de excluir


flavioavilela

Pergunta

boa noite a todos...

como já sabemos, quando criamos um relacionamento no bd, de uma tabela com outra, ele "amarra" a tabela para que, caso tenha alguma informação já salva não aceitar deletar, por exemplo:

Table - Produtos

Table - Fornecedor

se tivermos o codigo do fornecedor (imaginamos que o codigo 1) no cadastro de produtos, e tentarmos deletar lá dentro do bd mesmo, a linha do forneceodr que corresponde ao codigo 1, ele vai dar uma mensagem de erro... e quando estamos trabalhando com o delphi e tentamos excluir, também dara um erro...

gostaria de saber, como faço para tratar esse erro, verificar se há relacionamentos e/ou há dados que não podem ser excluidos e mostrar uma mensagem...

alguém pode ajudar???

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Flávio,

Para você saber se na tabela Fornecedor há corresponde ao codigo 1 (no exemplo que deu), você terá que realizar a verificação.

A maioria das vezes realizo a verificação desta forma:

if (select top 1 1 from Produtos where codigo in (select codigo from fornecedores)) = 1

Caso exista uma correspondência, você enviará mensagem ao usuário informando que não poderá realizar a exclusão do Produto, pois existe um fornecedor associado.

Lembrando que estas verificações devem estar contidas no fonte, uma vez que a mensagem do SQL é um erro.

Mas, caso queira excluir Produtos e excluir também o Fornecedor, você poderá utilizar o "delete cascade". OBS.: esta opção não é muito recomendada.

Qualquer dúvida, posta aí!! :.)

Link para o comentário
Compartilhar em outros sites

  • 0

bom dia amigo...

eu li na net e vi que no delphi tem o comando locate...

supondo que eu tenha na tela de cadastro de fornecedor, um fornecedor já selecionado e clico no botão excluir:

if queryProdutos.Locate('Codigo_Fornecedor', EdtCodigo_Fornecedor.Text, []) then
    showmessage('Impossível excluir');

poderia ser assim? o que você me diz do comando locate?

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Flávio,

Ainda acho que você força o erro. Independente da linguagem, o certo seria a verificação da integridade antes da execução do comando.

Falo isto pois já tive problemas de Bases não muito bem estruturadas, onde se fala "tenta deletar e se tiver algum problema, o BD retornará erro". E você pegar uma FK com NOCHECK e detornar o Banco... :.(

Se quiser saber a respeito do comando em delphi, posta no Forum Delphi, Kylix que eles te ajudarão!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...