объекты, реагирующие на события (системные или пользовательские). С помощью этих объектов
можно разрабатывать простые и интуитивно понятные интерфейсы пользователя для управления
данными.
Несмотря на то, что вы полностью можете описать форму с помощью программирования, как
правило, более простым и быстрым способом будет визуальный. При этом Конструктор формы
возьмет на себя труд перевода ваших пожеланий на соответствующий язык программирования.
Язык, который используется в Visual Basic, а значит, и в Access, в отличие от Visual FoxPro не
является объектно-ориентированным, тем не менее он объектный. Таким образом, какой бы путь
создания формы вы ни выбрали, работа будет заключаться в создании объектов и обеспечении
требуемой функциональности за счет использования их свойств и методов. Большинство свойств
позволяют указать действия, которые должны выполниться при наступлении событий, доступных
для конкретного объекта. Используя Конструктор формы, с помощью окна Свойства (Properties)
мы получаем легкий доступ к любому из свойств и можем описать действия объекта в ответ на
события. В коде событий мы можем использовать методы объектов, например, для перемещения
на него курсора (придания статуса активного объекта в форме).
Например, в форме "Прием заказов" мы будем использовать командные кнопки,
комбинированный список и текстовое поле. Для переноса элементов управления на
проектируемую форму можно использовать панель инструментов с элементами управления. Для
установки некоторых визуальных свойств формы, например цвета фона и шрифта, можно
использовать панель инструментов для форматирования. При этом очень часто использованию
панелей инструментов есть хорошая альтернатива в виде всплывающего меню, вызываемого при
нажатии правой кнопки мыши и являющееся контекстным по отношению к выделенному
элементу.
Формы при работе с данными используют свой набор данных. Организация процесса
взаимодействия формы с данными происходит посредством установки свойства RecordSource
(Источник данных) и связанных с конкретными полями источника данных объектов. Если вы
хотите отображать с помощью элементов управления данные из полей, которые не относятся к
источнику данных, то прямое указание в свойстве ControlSource (Данные) ни к чему не приведет.
Вам необходимо организовать синхронизацию записей между данными, входящими в источник
данных, и данными, не входящими, и, естественно, использовать несвязанное поле для
отображения информации, не относящейся к источнику данных. Если вы ничего не поняли из
этой фразы, то правильно сделали. Как правило, так не поступают, потому что подобный путь
требует сложного и не оправдывающего себя кодирования. Лучший способ - это создание
запроса, который одновременно может отобразить данные из нескольких таблиц. Помимо этого
используйте подчиненные формы. При этом необходимо иметь поля, по которым вы можете
связать данные в основной и подчиненной формах. Еще проще вызывать форму, содержащую
нужные вам, но хранящиеся в другом источнике данные, динамически, с помощью реакции на
события. Во многих случаях этого более чем достаточно.
Иногда, при решении более сложных задач, когда вам необходимо, чтобы никакие
обстоятельства, вплоть до перебоев в энергопитании, не смогли нарушить установленные
правила взаимодействий между данными, вам необходимо использовать транзакции. Для
использования транзакций в Access необходимо работать с такими наборами данных, создание и
доступ к которым осуществляются с помощью методов объектов доступа к данным (DAO).
Опишем форму, которую мы будем создавать в качестве примера.
На основе таблицы Order_ создается форма для принятия заказа. Ни одно из полей в таблице
Order_ пользователь непосредственно не заполняет. Путем использования комбинированных
списков и вызываемых форм он заполняет другие таблицы, при этом автоматически заполняются
поля в новой записи таблицы Order_. Перед началом редактирования новой записи начинается
транзакция.
Поле key_order заполняется автоматически, так как имеет тип Счетчик. Поле key_salman
заполняется именем текущего пользователя приложения (для примера на Access) или выбирается
из списка продавцов (для примера на Visual FoxPro). Заказчик выбирается из списка заказчиков
по фамилии, имени и адресу или заносится вновь (для примера на Access), при этом необходимо
вызвать форму для заполнения данных о заказчике. При вызове формы для заполнения данных о
заказчике также начнется транзакция, но не вложенная, а параллельная, так как данные о
заказчике будут сохраняться в любом случае, для того чтобы потом "засыпать" его проспектами и
приглашениями на презентации новых моделей автомобилей.
После этого, на основе данных, хранящихся в таблице Model, подбирается модель и, если она
есть на складе и удовлетворяет заказчика, то заполняется запись в таблице Account. После этого
завершается транзакция и запись вносится в таблицу физически.
Создание формы "Прием заказов" на Visual FoxPro
Начнем с систематизации данных о способах создания новой формы в Visual FoxPro. Таких
способов достаточно много:
converted to PDF by HupBaH9I