не получается корректно сделать POST

Титов Артем
Дата: 30.06.2009 00:02:34
Есть такой участок кода:

  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 значения полей не терялись (т.е. чтобы запись оставалась текущей видимо)
Gluck99
Дата: 30.06.2009 01:05:11
Надо прекратить маяться ерундой и начать использовать нормальный SQL. Т.е. операторы SELECT, INSERT, UPDATE и все сопутствующие причендалы, вроде параметров.
И, кстати, почему не используешь конструкцию
with DataModule2 do
  begin
    {...}
  end;
Религия?
Klick
Дата: 30.06.2009 07:50:12
Если это какой нить курсач или диплом, то использование Table вполне допустимо. Но если цели другие, если вашу программу будут использовать реальные люди, если кому то она потом перепадет в наследство - то сразу, не жалея ни минуты ВЫКИНЬТЕ Table на помойку!!!

with DataModule2 do
Я тоже не всегда использую... Религиия, привычка...
BeProf
Дата: 30.06.2009 08:37:43
DRKB скачай и по форумам почти не придется лазать. И прислушайся к совету Gluck99
Gluck99
Дата: 30.06.2009 12:14:01
Klick
Я тоже не всегда использую... Религиия, привычка...
И я не всегда. Когда одна-две строчки, это понятно. Но в данном случае DataModule встречается 11 раз.
Anatoly Podgoretsky
Дата: 30.06.2009 12:31:25
И что тяжело?

--
http://www.podgoretsky.com