Obrigado a todos pela luz q tentaram me dar! O que falarão sobre a integridades do banco e que o Delphi me alertaria caso tentasse excluir algo das tabelas dependentes eu já tenho certa noção! No entanto o que acontece que na verdade eu não excluo nenhum registro do banco! Eu marco um campo do banco onde digo que o registro foi excluído! Só que não posso fazer esta marcação caso o registro tenha dependentes!
Mas tudo bem, depois de muita procura, luta e vai dali e daqui, um amigo, chegou a seguinte SQL que me traz as tabelas Y dependentes de uma tabela X. Para deixar registrado quando alguém precisar! Segue a SQL... /*Inicio SQL */ source_segments.RDB$FIELD_NAME AS COLUMN_NAME, target_index.RDB$RELATION_NAME AS REFERENCED_TABLE_NAME, target_segments.RDB$FIELD_NAME AS REFERENCED_COLUMN_NAME FROM RDB$INDICES source_index JOIN RDB$INDICES target_index ON source_index.RDB$FOREIGN_KEY=target_index.RDB$INDEX_NAME JOIN RDB$INDEX_SEGMENTS source_segments ON source_index.RDB$INDEX_NAME=source_segments.RDB$INDEX_NAME JOIN RDB$INDEX_SEGMENTS target_segments ON target_index.RDB$INDEX_NAME=target_segments.RDB$INDEX_NAME WHERE target_index.RDB$RELATION_NAME = :TABELA AND target_segments.RDB$FIELD_NAME = :CAMPO /* Final SQL */ Talvez pra cada caso mereça alguma alteração! Mas já é um caminho! Ah, agradeço meu amigo Leonardo que na verdade é o autor da SQL... Vlw pessoal! -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Diego Garcia Enviada em: quarta-feira, 9 de dezembro de 2009 08:48 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] Verificar dependencia de um campo Usa um Try ... Except e verifica se a mensagem de erro é relacionada com a violação de chave estrangeira. não acho que tem pq vc rodar outra query já que o banco cuida da integridade para vc. *Diego Garcia* Twitter: http://www.twitter.com/drgarcia1986 Blog: http://www.atocadopanda.com 2009/12/8 Elaine Cristina Rocha de Oliveira <elaine...@gmail.com> > Geralmente nas query's existe o evento OnPostError que recebe um parametro > E: EDatabaseError. Com esse parametro vc pode filtrar a mensagem que está > vindo do banco de dados e exibir uma outra mais amigável para o seu > usuário. > > Acho que este artigo pode te dar uma luzinha.... > > http://www.planetadelphi.com.br/dica/344/Evitando%20o%20erro%20de%20key%20vi olation > > Boa Sorte. > > Atenciosamente, > Elaine Cristina > Webmaster > Cel: (027) 9844-4634 > www.crystaldesenvolvimento.com.br > > P Antes de imprimir, veja se realmente é necessário e pense em seu > compromisso com o meio ambiente. > Sent from Vila Velha, ES, Brazil > > 2009/12/8 Huander <huan...@maxxsoft.com.br> > > > > > > > Só pra esclarecer estou usando Firebird 2.1 e todas as tabelas estão com > as > > chaves primárias e chaves estrangeiras relacionadas! O que acontece é que > > não desejo receber a mensagem de erro de transação com o banco de dados > > caso > > o registro não possa ser excluído... > > > > agradeço > > > > De: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br> > [mailto: > > delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>] Em > > nome de Huander > > Enviada em: terça-feira, 8 de dezembro de 2009 15:48 > > Para: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br> > > Assunto: [delphi-br] Verificar dependencia de um campo > > > > > > Pessoal, veja se alguém pode me dar uma luz! > > > > Preciso verificar se um registro da tabela pode ser excluído ou não! > Antes > > de realizar o comando delete na tabela! Ou seja, preciso verificar se o > > registro de uma tabela X tem alguma dependência em alguma tabela Y. Quero > > com isto exibir pra o usuário antes de ser feito a exclusão que o > registro > > não pode ser excluído! > > > > Alguém sabe algo? > > > > Att. > > > > Huander Leão > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > ------------------------------------ > > -- > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> > > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>