Есть такой участок кода:
DataModule2.Table23.Filter:='DOGSTATE=11';
DataModule2.Table23.Filtered:=True;
DataModule2.Table23.DisableControls;
while not DataModule2.Table23.Eof do
begin
if not DataModule2.Table23CLOSED.value then
begin
DataModule2.Table20.Append;
DataModule2.Table20PRIKAZ.Value:=PrikType;
DataModule2.Table20PRIKAZNUM.Value:=чему-то;
DataModule2.Table20.Post;
end;
DataModule2.Table23.Next;
end;
DataModule2.Table23.EnableControls;
и событие:
procedure Table20AfterPost(DataSet: TDataSet);
begin
if Table20PRIKAZ.Value=PrikType then
begin
Table23.Edit;
Table23DOGSTATE.Value:='1';
Table23.Post;
end;
end;
При таком раскладе почему-то в событии AfterPost теряются значения полей Table20...
Если не делать Table23.DisableControls, то все работает, но в этом случае после обновления Table23 перестает выполняться условие фильтра и цикл While not EOF начинает работать с Table23 некорректно, что вполне логично.
В целом заметил, что если бегать циклом по фильтрованному DataSet'у и использовать DisableControls/EnableControls, то часто появляются какие-то глюки, но если не использовать цикл, а обрабатывать значения одной текущей записи, то все работает...По приведенным фрагментам кода очень хочу, чтобы и контролы были выключены в не зависимости от установленного фильтра, и чтоб в событии AfterPost значения полей не терялись (т.е. чтобы запись оставалась текущей видимо)