Deletando um registro(urgente) ligado a outra tabela
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.
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.
Andersonnadaleto
Curtidas 0
Respostas
Edilcimar
07/12/2003
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
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
GOSTEI 0
Maxadens
07/12/2003
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
[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
GOSTEI 0
Andersonnadaleto
07/12/2003
é 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??
ow vc tem outra sugestão??
GOSTEI 0