Problema com exclusao item master/detail

Delphi

28/02/2005

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

Curtidas 0

Respostas

Cabelo

Cabelo

28/02/2005

Vc usa SQL??


GOSTEI 0
Eduunai

Eduunai

28/02/2005

Sim, usei o sql gerado no IBDataSet.


GOSTEI 0
Eduunai

Eduunai

28/02/2005

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.


GOSTEI 0
Guilherme

Guilherme

28/02/2005

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á !!!!!


GOSTEI 0
Eduunai

Eduunai

28/02/2005

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.


GOSTEI 0
Guilherme

Guilherme

28/02/2005

Funcionou mto obrigado .....

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


GOSTEI 0
POSTAR