Access 2002

Новая и очень важная возможность


С установкой значения свойства Recordset связана еще одна новая и очень важная возможность — управление транзакциями формы. С отдельной формой это можно было делать и раньше — с помощью метода формы Undo. А вот если в транзакции участвуют подчиненные формы, отменить ее стало возможным только сейчас. Да и то это не так просто, как должно было бы быть, и требует написания довольно большого количества кода (см. раздел «Подчиненные формы и транзакции»).

Свойству формы Recordset можно присваивать только наборы записей, созданные на основе Jet или SQL Server. Кроме того, возможность записывать или только читать данные зависит от типа набора записей. В следующей таблице указано, что позволяет каждый из них.

К тому же, чтобы связать форму с набором записей SQL Server, доступным как для чтения, так и для записи, свойство CursorLocation объекта Recordset должно иметь значение adUseClient, а свойство UniqueTablе — имя самой крайней таблицы со стороны «многие» отношения «одип-ко-многим». В ADP-файлах это свойство можно изменить в окне свойств формы, а в файлах MDB — только программным путем. (За более подробной информацией о работе с формами и их наборами записей в ADP-файлах обратитесь ко второму тому этой книги.)

Хотя об этом будет подробно рассказано чуть позже, важно упомянуть, что в середине транзакции свойство формы Recordset менять нельзя. Это ограничение делает невозможным выработку универсального механизма буферизации большого количества транзакций формы (например, изменений нескольких записей), содержащей подчиненную форму, с возможностью их отката.

С момента выхода версии Access 1 разработчики искали способ форматировать поля ленточной формы в зависимости от их значений. Для этого выискивались сложные обходные пути, однако приемлемое решение так и не было найдено, поскольку Access не рассматривает каждый экземпляр элемента управления в ленточной форме независимо: любые изменения его свойств тут же отражаются и в других экземплярах этого элемента управления.

Комментарии закрыты