Есть 2 таблицы. Нужно при удалении записи в главной таблице удалить записи во второй таблице. При этом, если пользователь передумал, то отменить удаление записей. Написала вот такую процедуру:
procedure TDM.TIFBeforeDelete(DataSet: TDataSet);
begin
if DM.TMed.Locate('KOD_IF',DM.TIFKOD_IF.Value,[]) then
begin
if Messagedlg('Найдены связанные записи!'+#13+'Все равно хотите удалить?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
DM.TMed.Filtered:=True;
DM.TMed.Filter:='KOD_IF='+chr(39)+DM.TIFKOD_IF.AsString+chr(39);
kol:=DM.TMed.RecordCount;
DM.TMed.First;
for i:=1 to kol do
begin
DM.TMed.Edit;
DM.TMed.Delete;
DM.TMed.Post;
end;
DM.TMed.Filtered:=False;
end else begin
DM.TIF.RevertRecord;
end;
end;
end;
В принципе работает, но как-то коряво. Если пользователь передумал удалять, запись остается в таблице, но в DBGrid не отображается. Чего не хватает?