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 >>>>>



Responder a