![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Язык VBA (Visual Basic Application)Содержание книги
Поиск на нашем сайте
Многие задачи можно решить с помощью макросов. Но их возможности не всегда достаточны и необходимо использовать возможности языка VBA. · Он имеет все конструкции, необходимые для управления логикой программы. · Обеспечивает возможность перехватить сообщение об ошибке, возникающее при работе программы и написать программу обработки этой ошибки. · Поддерживает несколько механизмов для взаимодействия с другими приложениями (OLE – внедрение объектов) При программировании на VBA необходимо помнить 2 момента: 1. VBA – объектно-ориентированный язык. 2. Модель программирования в access является событийно-управляемой.
Структура программ на VBA Проект состоит из модулей, каждый модуль состоит из объявления (Declaration) и еще какой-то херни. Модули могут быть стандартные, то есть находятся где угодно и не связаны ни с одним объектом и работают тогда, когда запустим. И модули класса, содержат кроме процедур еще и описание объекта, и используются для создания объектов. Типы данных VBA Всего их 14 · array – описание массивов · currency (@) – числа с заданным количеством знаком после запятой (для денег) · double (#) – числа с плавающей точкой и двойной точностью. · integer (%) – он и в Африке Integer · long (&) - длинное целое · single (!) – плавающая точка с обычной точностью · object – ссылки на объект · string ($) - строки · variant – любой тип, но это тормозит трансляцию и забивает память, т.к. требует определение типа на ходу · пользовательский
Описание переменных Dim <имя перем>[As <тип данных>],[… Dim a As string – переменная «а» строчного типа Dim b% - переменная «b» типа Integer Dim b%, c! – сам(а) посмотри что это значит, все описано выше:D Const <имя к> [As <тип>] = выраж // выражение это число или формула Например: Const C = 50
Замечание: Константа не может начинаться с префиксов ac, wd,xl, ol,vh.
Описание массивов Dim <имя>(<размер1>,<размер2>…) [As <тип данных>] Например: Dim a(15) As integer – целочисленный массив из 16 элементов Dim b(3, 3)% Dim c(1 to 7) As double // 7 чисел Так описываются статические массивы. Но VBA позволяет работать с динамическими массивами, т.е. с такими, размер которых изменяется в процессе работы программы. Dim <имя массива>() [As<тип>] Redim[Preserve]<имя массива>(<размер>,<размер>…)
Preserve означает, что при новом определении длины массива старое содержание массива сохраняется. Пример использования динамического массива … Dim Books() As integer Dim n% n=50 Redim Books(n) … (заполнение массива) Redim Preserve Books(n+10)
Тип, определяемый пользователем … Type Person name $ Birthday As date Endtype Type book Title As string Content() As string Author As Person Endtype … Dim MyBook As Book MyBook.title = “База данных” Radim Content(1 to 10) MyBook.content(1)=”Введение” MyBook.content(2)=”Проектирование бд”
Управляющие конструкции VBA Это команды, с помощью которых пишем программы 1) if <усл> then <оператор 1> [else <оп 2>] Endif 2) select case <проверяемое выражение> case <список значений 1> <операторы 1> case <список значений 2> <операторы 2> … Case else <операторы n> End Select Список значение может быть: · <выражение> · <выр 1> to <выр 2> · Is <логич опер> <выр>
Если нужно определить какое число введено с клавиатуры: Dim t As integer t=InputBox(“Введите число”) Select Case t Case 0 MsgBox(“Это ноль”) Сase 1 to 100 MsgBox(“Это полож число”) Case -100 to -1 MsgBox(“Это отриц”) case Is <-100, Is>100 MsgBox(“Большое число”) Case else MsgBox(“Это не число”) Endselect
Операторы цикла 1.1. do while <усл> <операторы> loop Начинается с 0 1.2. do <операторы> loop while <усл> Начинается с 1 1.3. do until <усл> <операторы> loop 1.4. do <операторы> loop until <усл> 1.5. for … next [<счетчик>] 1.6. Цикл для обработки семейства однородных объектов for each <элемент> In <семейство> <операторы> next [<элемент>] Можем перебирать объекты, например, таблицы, формы и др. Пример. Функция, проверяющая открыта ли форма. Function IsLoaded*(FormName As string) As Boolean Dim frm As Form // Объектная переменная типа Form IsLoaded = false For each frm In Forms //семейство открытых форм if frm Name = FormName then IsLoaded = true Exit function Endif Next frm Endfunction Для отладки и работы этого модуля напишем модуль 2 Sub Vizov() Dim str As string Dim a As Boolean str = InputBox(“Введите имя формы”) a=IsLoaded(str) MsgBox(a) Endsub
Процедуры VBA Они (проце дуры) бывают двух видов: 1. Обработки событий. Они связаны с некоторым объектом Access и хранятся в модуле этого объекта.
2. Общие. Могут хранится и в стандартных модулях и в модулях отчетов.
Подпрограммы: 1. Sub <имя подпрог> [<арг 1>, <арг 2>, …)] 2. Функции: Вызов осуществляется, как и в других программах. Объявление процедур Sub Int (arr() As Integer) 1. LBound и UBound – верхние и нижние значения массива 2. & - функция сцепления, которая сначала преобразует i в строку. Объявление функции, подсчитывающей сумму любого числа аргументов: FunctionSumVar(ParamArray vararg() As variant) % ParamArray означает, что количество аргументов – переменное число Dim intSum %, numb As variant Фрагмент программы для вызова подпрограммы и функции Dim intSl(1 to 38) As Integer Передача параметров может осуществляться по значению или по ссылке: By Val – по значению
Sub MainCall() 1. Пусть сначала запускается MainCall
Область видимости переменных и процедур
Переменная имеет 3 уровня видимости: 1. Переменная называется локальной и время её жизни от начала работы процедуры до окончания 2. Уровень модуля. Модульные переменные описываются в области Declaration 3. Уровни проекта. Глобальные переменные Замечание: · Глобальные переменные лучше описывать в отдельном модуле · Глобальных переменных должно быть минимально количество, а лучше вообще скинуть их с обрыва, как это делают в СПАРТЕ! · Все вышесказанное относится и к константам, и к массивам. Локальную переменную можно объявить статически, тогда при каждом новом обращении к процедуре данная переменная сохраняет предыдущее значение
Уровни видимости процедур Тут существует только 2 уровня: · Уровень модуля · Уровень проекта (по умолчанию) Описание некоторого модуля: Public A1$
Endsub Sub Proc2() Call Proc1 MsgBox(A1) MsgBox(A2) MsgBox(A3) MsgBox(A4) MsgBox(A5) Call Proc1 Endsub
Пусть сначала вызвается Proc2 1. Из proc1 будет напечатано 4 и 5 2. Из proc2 «Область видимости» 3. Из proc1 A4 = 4
Создание функции или подпрограммы общего назначения 1. Открываем Access. Кнопка «Модуль» -> Создать 2. Insert -> Procedure 3. --------------------------- 4. Что бы ввести предыдущий пример нажимаем Модуль-> Создать 5. Откроем proc3 и запустим кнопкой «Run»
Пример: Доступ к существующей БД и её таблицам Sub Doctup()
|
||||||
Последнее изменение этой страницы: 2016-04-19; просмотров: 580; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.148.103.147 (0.01 с.) |