GARANTIR DESCONTO

Fórum Problema com exclusao item master/detail #270505

28/02/2005

0

Gente preciso de ajuda...Tem uma tela com master/detail funcionando perfeitamente. Criei um botao para excluir um item da tabela detail, mas qdo eu clico pra excluir um item, ele exclui todos...pq ta acontecendo isso?
to usando delphi7 com interbase.

código do botao: tbdetail.delete;
definicao da fk: alter table detail
add constraint fk_detail foreign key(det_id) references master(mas_id)
valeu.


Eduunai

Eduunai

Responder

Posts

01/03/2005

Cabelo

Vc usa SQL??


Responder

Gostei + 0

01/03/2005

Eduunai

Sim, usei o sql gerado no IBDataSet.


Responder

Gostei + 0

01/03/2005

Eduunai

Galera, já resolvi o problema. é que no codigo sql do ibdataset, eu estava selecionando apenas uma das chaves primarias; a que servia como foreign key. Foi so marcar os dois campos de chave primaria e resolvi o problema.


Responder

Gostei + 0

02/03/2005

Guilherme

eu estou com um problema um problema um pouco parecido com este !
é o seguinte quando vou excluir o mestre logicamente tenho q apagar os detalhes pois se nao apagar vai ficar dados sem mestre ai o banco de dados fica realmente ´ZUADO´ entao estou usando o seguinte codigo

Lembrando q tbbanco_pai é o mestre e tbbanco_filho é o detalhe!

procedure TFrmBanco.TBBanco_PaiBeforeDelete(DataSet: TDataSet);
begin
TBBanco_Filho.First;
TBBanco_Filho.DisableControls;
while not TBBanco_Filho.Eof do begin
if TBBanco_FilhoCODCAD.Value = TBBanco_PaiCODCAD.Value then begin
TBBanco_Filho.Delete;
TBBanco_Filho.next;
end else
TBBanco_Filho.next;
end;
TBBanco_Filho.EnableControls;
TBBanco_Pai.Delete
end;

mas nao esta funcionando alguem sabe o q esta acontecendo ?
alguma opniao melhor ?!

Ja postei aki mesmo mas nao resolvi meu problema !!!

agradeço desde já !!!!!


Responder

Gostei + 0

02/03/2005

Eduunai

Cara, eu acho que ta errado pq vc ta tentando excluir o registro da tabela pai num evento ´Antes de deletar´ .Tenta o seguinte: coloca este codigo no evento BeforeDelete da tabela pai:
procedure TFrmBanco.TbL_PaiBeforeDelete(DataSet: TDataSet);
begin
with Tbl_filha do
begin
DisableControls;
try
First;
while not Eof do
Delete;
finally
EnableControls;
end;
end;
end;

E no codigo pra excluir o registro, se vc tiver usando um botao ou o que for, coloque :
Tbl_pai.delete;

Eu faço assim e funciona. Tenta aí e me fala se deu certo.


Responder

Gostei + 0

03/03/2005

Guilherme

Funcionou mto obrigado .....

so gostaria q vc me esplicase o codigo ......(se for possivel)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar