Problema com exclusao item master/detail
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.
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
Curtidas 0
Respostas
Cabelo
28/02/2005
Vc usa SQL??
GOSTEI 0
Eduunai
28/02/2005
Sim, usei o sql gerado no IBDataSet.
GOSTEI 0
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
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á !!!!!
é 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
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.
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
28/02/2005
Funcionou mto obrigado .....
so gostaria q vc me esplicase o codigo ......(se for possivel)
so gostaria q vc me esplicase o codigo ......(se for possivel)
GOSTEI 0