Связываем формы другими способами

Вот что советуют делать в таких случаях умные люди:

Второй способ

На таблицу устанавливается фильтр. У нас ведь есть уникальный идентификатор KOD, и ничего не мешает сделать так:

ETAZAPIS=KOD
Set filter to KOD=ETAZAPIS

Таким образом, при открытии второй формы ей "достается" только одна запись, остальные отфильтрованы. Поскольку запись единственная, она будет первой, и форма откроет ее правильно. Только при выходе из второй формы нужно не забыть про команду

SET FILTER TO

иначе в листбоксе первой формы пропадут все записи, кроме текущей.

Третий способ - использовать курсор. Создаете курсор используя уникальный идентификатор (или номер записи), и редактируйте его, сколько хотите. В курсоре будет только одна запись, как и в случае с set filter. При таком способе работы данные в основной базе не меняются немедленно, что исключает возможность их случайной порчи, как оператором, так в результате сбоя. Разумеется, при выборе такого способа на форме придется разместить кнопки принятия или отмены изменений.

ControlSource при этом ставится на курсор, а на кнопки:
Для сохранения изменений - TableUpdate()
Для отмены изменений - TableRevert()

Четвертый способ - использование вспомогательной таблицы, в которой производится изменение или ввод данных. После окончания изменений данные в ней анализируются, правятся, преобразуются, и стопроцентно готовые заносятся в основную базу.

Пятый способ - использование переменных памяти. Содержимое полей таблицы копируются в переменные памяти, а после завершения правки - обратно. Способ очень старый, и вряд ли его можно рекомендовать всерьез.

 
К оглавлениюк следующей статье