Excluir registros Mestre-Detalhe
18/12/2020
0
Tenho uma ligação mestre-detalhe com 2 tabelas temporárias de ClientDataSet''s.
O mestre é o Lote e o detalhe são as notas fiscais.
Quero excluir um lote e todas notas fiscais vinculadas mas está ocorrendo o erro abaixo e não estão sendo excluídas as notas fiscais (detalhe):
Código que estou usando no botão Excluir:
O erro ocorre no comando ApplyUpdates.
Relembrando que os Clientdataset''s são temporários e não estou usando DataSetProvider.
O mestre é o Lote e o detalhe são as notas fiscais.
Quero excluir um lote e todas notas fiscais vinculadas mas está ocorrendo o erro abaixo e não estão sendo excluídas as notas fiscais (detalhe):
cdsNotasFiscais: Missing data provider or data packet.
Código que estou usando no botão Excluir:
var i: Integer; begin if Application.MessageBox(''Confirma a exclusão do(s) registro(s) selecionado(s)?'', ''Confirmação'', MB_YESNO + MB_ICONEXCLAMATION) = mrYes then begin for i := 0 to DBGrid1.SelectedRows.Count - 1 do begin DM.cdsNotasFiscais.First; while not DM.cdsNotasFiscais.Eof do DM.cdsNotasFiscais.Delete; DBGrid1.SelectedRows.Delete; end; DM.cdsNotasFiscais.ApplyUpdates(-1); DM.cdsLote.ApplyUpdates(-1); end; end;
O erro ocorre no comando ApplyUpdates.
Relembrando que os Clientdataset''s são temporários e não estou usando DataSetProvider.
Natanael Ferreira
Curtir tópico
+ 0
Responder
Posts
18/12/2020
Natanael Ferreira
Descobri que o código estava excluindo registros incorretos.
Consegui resolver usando Bookmark.
Consegui resolver usando Bookmark.
var i: Integer; begin if Application.MessageBox('Confirma a exclusão do(s) registro(s) selecionado(s)?', 'Confirmação', MB_YESNO + MB_ICONEXCLAMATION) = mrYes then begin for i := 0 to DBGrid1.SelectedRows.Count - 1 do begin DM.cdsLote.GotoBookmark(DBGrid1.SelectedRows.Items[i]); DM.cdsNotasFiscais.First; while not DM.cdsNotasFiscais.Eof do DM.cdsNotasFiscais.Delete; DM.cdsLote.Delete; end; end; end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)