Deletando um registro(urgente) ligado a outra tabela

07/12/2003

1

Olá galera... estou com um problema...

Estou usando um BD Interbase, com um datamodule que utiliza:

IBDataSet
DataSource

Como faço para criar uma rotina que antes de deletar um estado, ele verifica se ele está usado na tabela de cidade...???

Obrigado e feliz Natal a todos.


Responder

Posts

07/12/2003

Edilcimar

supondo que vc tenha tabea1 e tabela2, sendo que tabela2 é detalhe de tabela1, se vc tentar deletar algo na tabela1 e existir algo na tabela2 ligado à tabela1 e interbase gerará um erro, portanto vc tem que apagar primeiro a tabela2 para depois apagar a tabela1
ex: tabela1=clientes e tabela2=compras
tabela1-> cliente1, cliente2 e cliente3
tabela2->comprascliente1 e comprascliente2
se vc tentar apagar o cliente3 na tabela1 não há problema, porém se tentar apagar o cliente1 ou o cliente2 na tabela1 haverá um erro então vc tem que apagar primeiro as compras deste cliente na tabela2 para depois apagar a tabela1


Responder

07/12/2003

Maxadens

Vou considerar o seguinte estado:

[b:13ccaecef7]TabelaCidade[/b:13ccaecef7]
NomeCidade
CodEstadoCidade

e

[b:13ccaecef7]TabelaEstado[/b:13ccaecef7]
CodEstado
NomeEstado

Visto que você quer excluir o estado, somente se ele não estiver sendo usado por uma cidade, no evento BeforeDelete do DataSet Referente a tabela estado (não me lembro se ele tem pois uso sempre o ClientDataSet) você localiza antes de excluir. assim:

if TabelaCidade.locate(´CodEstadoEstado´,TabelaEstado.CodEstado.value,[]) then
begin
messagebox(´Não é possivel excluir!´);
abort;
end
else
TabelaEstado.Delete


Responder
é isso mesmo q eu tenho que fazer, muito obrigado, vc concorda com a citação do Ronaldo araújo...???

ow vc tem outra sugestão??


Responder