Fórum Deleção em cascata com Paradox #233458
21/05/2004
0
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
[b:b202674fa6][color=red:b202674fa6]Título editado pelo Moderador (AZ) - Removido: ´Por favor, preciso de ajuda !´[/color:b202674fa6][/b:b202674fa6]
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
[b:b202674fa6][color=red:b202674fa6]Título editado pelo Moderador (AZ) - Removido: ´Por favor, preciso de ajuda !´[/color:b202674fa6][/b:b202674fa6]
Lucas.scheid
Curtir tópico
+ 0
Responder
Posts
21/05/2004
Repa
Lucas, pode ter jeito melhor de se fazer mas eu faria sequencialmente, assim:
tbprodutos.First;
While not tbprodutos.EOF do
begin
if tbprodutos.Fieldbyname(prod_codcliente).AsInteger = tbcliente.Fieldbyname(cli_codcliente)
then
begin
delete.tbprodutos;
end;
tbprodutos.next;
end;
prod_codcliente -> código do cliente na tabela produtos
cli_codcliente -> código do cliente na tabela cliente
tbprodutos.First;
While not tbprodutos.EOF do
begin
if tbprodutos.Fieldbyname(prod_codcliente).AsInteger = tbcliente.Fieldbyname(cli_codcliente)
then
begin
delete.tbprodutos;
end;
tbprodutos.next;
end;
prod_codcliente -> código do cliente na tabela produtos
cli_codcliente -> código do cliente na tabela cliente
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)