Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Язык VBA (Visual Basic Application)↑ ⇐ ПредыдущаяСтр 5 из 5 Содержание книги
Поиск на нашем сайте
Многие задачи можно решить с помощью макросов. Но их возможности не всегда достаточны и необходимо использовать возможности языка 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; просмотров: 568; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.167.176 (0.009 с.) |