Deleção em Cascata com Paradox
Olá Pessoal !
Estou com um problema faz tempo e não consigo uma solução: Eu tenho duas tabelas, uma de clientes e outra de produtos. Quando eu apago um cliente eu quero que todos os seus produtos sejam apagados também, só que não consigo isso. Estou usando um banco Paradox, com integridade referencial entre as tabelas. Já tentei o seguinte:
no evento BeforeDelete da TbClientes fiz o seguinte:
TbProdutos.Filter := ´CodCli = ´´´+ IntToStr(TbClientesCodigo.Value) +´´´´; TbProdutos.Filtered := True; While TbProdutos.RecordCount > 0 do TbProdutos.Delete; TbProdutos.Filtered := False;
onde:
TbClientes = nome da tabela de clientes
TbProdutos = nome da tabela de produtos
CodCli = nome do campo que identifica o código do cliente na tabela de produtos.
Mas isso não funcionou, aconteceu um erro dizendo que eu não posso apagar um cliente se ele tiver produtos na outra tabela. Socorro !
Obrigado pela atenção.
Atenciosamente Lucas Scheid
Estou com um problema faz tempo e não consigo uma solução: Eu tenho duas tabelas, uma de clientes e outra de produtos. Quando eu apago um cliente eu quero que todos os seus produtos sejam apagados também, só que não consigo isso. Estou usando um banco Paradox, com integridade referencial entre as tabelas. Já tentei o seguinte:
no evento BeforeDelete da TbClientes fiz o seguinte:
TbProdutos.Filter := ´CodCli = ´´´+ IntToStr(TbClientesCodigo.Value) +´´´´; TbProdutos.Filtered := True; While TbProdutos.RecordCount > 0 do TbProdutos.Delete; TbProdutos.Filtered := False;
onde:
TbClientes = nome da tabela de clientes
TbProdutos = nome da tabela de produtos
CodCli = nome do campo que identifica o código do cliente na tabela de produtos.
Mas isso não funcionou, aconteceu um erro dizendo que eu não posso apagar um cliente se ele tiver produtos na outra tabela. Socorro !
Obrigado pela atenção.
Atenciosamente Lucas Scheid
Lucas.scheid
Curtidas 0
Respostas
Adilsond
21/05/2004
Pelo que notei voce está utilizando a ´TbProdutos´ apenas para excluir os mesmos. Então faça o seguinte:
Conecte a propriedade MasterSource da TbProdutos ao componente DataSource que está conectado a TbClientes.
Clique em MasterFields da TbProdutos e faça o devido relacionamento entre as tabelas ´CodCli -> Codigo´.
Com isto voce acabou de montar um relacionamento MasterDetail. Ao abrir a TbProdutos, apenas os registros com relacionamento serão mostrados.
Deixe a TbProdutos fechada e no evento BeforeDelete faça:
Conecte a propriedade MasterSource da TbProdutos ao componente DataSource que está conectado a TbClientes.
Clique em MasterFields da TbProdutos e faça o devido relacionamento entre as tabelas ´CodCli -> Codigo´.
Com isto voce acabou de montar um relacionamento MasterDetail. Ao abrir a TbProdutos, apenas os registros com relacionamento serão mostrados.
Deixe a TbProdutos fechada e no evento BeforeDelete faça:
begin TbProdutos.Open; try while not TbProdutos.EOF do TbProdutos.Delete; finally TbProdutos.Close; end; end;
GOSTEI 0