Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

По поводу процедуры "BeforePost" в Ttable [D7, Paradox]


Heretic ©   (2004-09-09 15:21:00) 

Есть две таблицы. При изменении одной таблицы необходимо произвести изменения в другой таблице.
Делаю так:

В Table1 "AfterEdit" пишу:

Begin
 OldValue:=table1.fieldvalues["Pole1"];
end;


В Table1 "BeforePost" пишу:

Begin
 if OldValue<>table1.fieldvalues['Pole1'] then
 begin
   table2.filter:='Pole1='''+vartostr(OldValue)+'''';
   table2.first;
   while not table2.eof do
   begin
     table2.edit;
     table2.fieldvalues['Pole1']:=table1.fieldvalues['Pole1'];
     table2.post;
   end;
 end;
end;


При выполнении процедуры Table1 "BeforePost" в Table2 изменяется только первая запись, затем выдает ошибку "KeyViolations"
При повторном выполнении процедуры Table1 "BeforePost" в Table2 изменяется следующая запись, затем опять выдает ошибку "KeyViolations". Таким образом обрабатывается только одна запись Table2.

Уважаемые Гуру, что я делаю не так?


megabyte   (2004-09-09 16:33:00) [1]

А если попробовать, не знаю, поможет ли обновление,
table2.refresh


Heretic   (2004-09-09 15:37:00) [2]

Я не забыл.
Просто разницы нет. У меня стоит фильтр на Table2 по полю "Pole1", и при выполнении "Table2.Post" Table2.RecordCount автоматически уменьшается на одну запись, так как измененная запись уже не попадает под фильтр.
Но даже если использовать table2.next - ошибка та же.


Ditrix   (2004-09-09 15:32:00) [3]

забыл table2.next;


Наверх

Титульная страница Поиск, карта сайта Написать письмо