Автоматизация приложения с помощью VBA: Методические рекомендации по выполнению лабораторной работы, страница 2

Методы

          Каждый объект или семейство имеют определенный набор методов, которые могут быть выполнены. Примеры некоторых методов формы : Refresh – обновляет все поля в основном источнике записей с изменениями, сделанными в форме,  Set Focus – активизирует указанную форму или элемент управления.

Многие методы имеют аргументы, позволяющие уточнить, как они должны действовать на объект. Например, при применении метода OpenRecordset к таблице вы можете создать динамический, или обновляемый, набор записей (Dynaset) либо статический набор записей, позволяющий только просматривать данные.

После открытия набора записей для перехода к нужной записи можно использовать методы Move (MoveFirst, MoveLast, MoveNext, MovePrevious).

Для перехода к определенной строке, удовлетворяющей заданным критериям, используется один из методов Find (FindFirst, FindLast, FindNext, FindPrevious).   

Соглашения по синтаксису

Область определения переменной (или константы) определяет, известна ли она только одной процедуре, всем процедурам в модуле или всем процедурам в базе данных. Для объявления общей переменной используйте инструкцию Public в разделе описаний модуля. Чтобы переменную можно было использовать во всех процедурах некоторого модуля, объявите ее в разделе описаний стандартного модуля или модуля формы или отчета. Переменная или константа, описанная в процедуре, доступна только в этой процедуре.

Инструкция Constиспользуется для объявления констант.

 [Public / Private]Const{имя константы [As тип данных]=<константное выражение>}

Инструкция Dimиспользуется для объявления переменной или массива переменных.

Dim [WithEvents ] {имя переменной [([<индекс>],…)] [As [New] тип данных]},…

  где <индекс> есть [нижняя граница То] верхняя граница.

Ключевое слово New указывает, то объявляемая объектная переменная является новым экземпляром объекта. Ключевое слово WithEvents применяется в модуле класса для указания объектной переменной, использующейся при отклике на события, гнерируемые объектом ActiveX.

      Для объявления переменной как объекта типа Database введите

              Dim mydb As Database

Следующая инструкция описывает массив, содержащий строки фиксированной длины по 20 символов, причем 50 элементов массива пронумерованы от 51 до 100

              Dim mymassiv (51 To 100) As String * 20

Инструкция Setиспользуется для присваивания значения объектной переменной.

  Set имя переменной = ссылка на объект

 Чтобы создать переменную, ссылающуюся на текущую базу данных, введите

                          Dim mydb  As Database

                          Set mydb = CurrentDb()

 Чтобы создать переменную, ссылающуюся на таблицу Клиенты в текущей базе данных, используя только что определенную переменную mydb, введите

                          Dim myTab As TableDef

                          Set myTab = mydb![Клиенты]

Чтобы создать переменную, ссылающуюся на поле  Название таблицы Клиенты, введите

                          Dim myPole As Field

                          Set myPole = myTab![Название]

Ссылки на формы, отчеты,  их свойства и элементы управления

         Ссылки на формы или отчеты можно делать только когда они открыты. Access использует коллекции Forms и Reports (множества открытых форм и отчетов), чтобы сохранить путь, из которого открываются соответствующие формы и отчеты. Коллекцию необходимо указывать, т. к. Access позволяет использовать одно и то же имя для формы и для отчета. Объекты Form и Report имеют свойства. Пример ссылки на свойство Источник записей формы Товары :

                 Forms![Товары].RecordSourсe

          Чтобы установить значение свойства формы в собственном модуле класса формы, используйте идентификатор Me – ссылку на самого себя :

                 Me. RecordSourсe

Чтобы сослаться на элемент управления Код товара формы Товары, введите :

       Forms![Товары]![КодТовара]

Ссылки на подчиненные формы и отчеты

Ссылка на подчиненную форму Заказанный товар в форме Заказы будет иметь вид :

         Forms![Заказы]![Заказанный товар]

 Для ссылки на свойство Вывод на экран рассмотренной выше подчиненной формы введите выражение :

        Forms![Заказы]![Заказанный товар].Visible

Для ссылки на элемент управления Код товара подчиненной формы Заказанный товар, внедренной в форму Заказы, будет иметь вид :

       Forms![Заказы]![Заказанный товар].Form![Код товара]

Функции и подпрограммы

В VBA имеется два типа процедур : функции (процедуры Function) и подпрограммы (процедуры Sub). Процедуры обоих типов могут иметь аргументы – переменные, с помощью которых передаются значения, определяющие работу процедуры при конкретном вызове. Функции можно выполнять из любого места в Access, в том числе из выражений в запросах, а подпрограмму можно выполнять только при вызове из функции, из другой подпрограммы или как процедуру обработки события в форме или отчете.

Объект DoCmd

Пользуясь методами объекта DoCmd, можно выполнять макрокоманды и команды меню в процедурах VBA.  К наиболее употребляемым макрокомандам, которые выполняются из среды VBA, относятся :ApplyFilter (Применить фильтр), Close (Закрыть), FindNext (Следующая запись), FindRecord (Найти запись), Maximize (Развернуть), Minimize (Свернуть), OpenForm (Открыть форму), OpenQuery (Открыть запрос), OpenReport (Открыть отчет) и др.

Например, чтобы открыть форму Клиент для ввода данных в режиме формы, введите :

          DoCmd.OpenForm “Клиент”, acNormal , , , acAdd

Закрыть форму Клиент можно с помощью инструкции:

          DoCmd. Close acForm, “Клиент”

Аргументы в процедурах

        Иногда имена форм и отчетов в процедурах удобно заменять строковыми переменными. Например, существует кнопочная форма, из которой вызываются другие формы. Для вызова форм используется одна повторяющаяся процедура, в которую через аргументы передаются имена форм.

        Стандартный модуль в этом случае выглядит:   

 Public Function Открыть(strFormName As String) As Integer

         Screen.ActiveForm.Visible=False

         DoCmd.OpenForm strFormName

End Sub

Объект Screen ссылается на конкретную форму, отчет или элемент управления. Применяя объект Screen, можно ссылаться на активный объект, не зная его имени.

Можно заменить объект Screen объектом Me, если приведенная выше процедура используется только в одной форме (Ме.Visible=False).

      При вызове этой процедуры в свойстве события Нажатие кнопки нужно ввести имя процедуры с именем конкретной формы :  = Открыть(“Заказы”).

Использование функции DLookup

         Функция DLookup выполняет поиск информации в еще не открытых таблицах. Синтаксис:

         DLookup("[Поля, которые нужно отобразить]","[Таблица представления]","<Критерий поиска>"),

где Таблица представления - таблица, в которой находятся искомые поля.

     Критерий поиска имеет следующий формат :