Программирование в VBA ( Visual Basic for Application) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программирование в VBA ( Visual Basic for Application)



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

ISAM – indexed sequential access method databases

Основные иерархические структуры объектов, используемые в Access:

1. Модель объектов доступа к данным (Data Access Object – DAO) обеспечивает объект­но-ориентированный интерфейс для работы с ядром базы данных Jet. А именно – доступ и обработку данных в базах данных, управление базами данных и их объектами с помощью свойств и методов, а также создание новых объектов и изменение структуры базы данных.

2. Модель объектов ActiveX Data Objects – ADO используется для работы с формами, отчётами и модулями выполняющегося приложения Access, объектами других приложений, их свойствами и методами, а также для управления текущим сеансом работы в Access и создания интерфейса приложения.

Основой для программирования являются события, которые обрабатываются процедурами обработки событий. Процедуры, входящие в состав приложения, хранятся в модулях в базе данных. Однако запросить выполнение модуля в целом невозможно. Выполняться могут только процедуры, содержащиеся в модулях. Модули предназначены для удобного объединения процедур по их функциональному назначению или привязке к форме или отчёту. Процедуры обработки событий можно создать для каждого события каждого элемента формы или отчёта и каждого из возможных событий самой формы или отчёта. Событие может быть вызвано системой, программой или действиями пользователя.

 

Типы переменных

Синтаксис. Dim переменная As тип

Тип данных Boolean (Bool) может принимать два значения — True (истина) и False (ложь). Этот тип данных присваивается переменным, задействованным в качестве флажков для обозначе­ния состояния объектов. Также этот тип присваивается функциям, которые возвращают значение, сообщающее об успешном или неудачном выполнении какого-то действия. Численная переменная, не равная нулю, считается True; равная нулю — False. При конвертировании переменной типа Boolean в численную переменную возвращается значение -1, если переменная типа Boolean имела значение True, и 0— если False.

Переменная типа дата/время представляет собой 64-разрядное число и может принимать значения даты от 1 января 100 года до 31 декабря 9999 года или значения времени от 0:00:00 до 23:59:59. Значения даты можно обозначать с помощью символа #, например #20/10/96#. Для преобразования даты используется функция Cdate:

dtDate = CDate(" 20 October 1995 ")

Функция Day (число) после передачи ей даты возвращает число в диапазоне 1—31. Функция Month (месяц) выделяет из даты значение месяца— от 1 до 12. Функция Year (год) возвращает из переданной даты год.

Значение Null.

MyVar = "" MyCheck = IsNull(MyVar) ' Returns False. MyVar = Null MyCheck = IsNull(MyVar) ' Returns True.

Массивы

Dim MyArray(10, 10,10) As Integer Dim sngMulti(1 To 5, 1 To 10) As Single Dim sngArray () As Single ‘создан динамический массив Dim varData (3) As Variant varData (0) = " Claudia Bendel " varData (1) = " 4242 Maple Blvd " varData (2) = 38 varData (3) = Format (" 06-09-1952 ", " General Date ")

Другой способ объявления массивов:

Dim A As Variant

A = Array(10,20,30)

Присвоение массива переменной типа Variant позволяет изменять размерность массива.

Объекты

Dim SmithBillBD As Object

Visual Basic поддерживает объект Collection (коллекция или семейство элементов), который служит для хранения элементов любых типов данных. Вы можете использовать семейство точно так же, как массив – для хранения целых чисел, цепочек символов и других типов данных. Объект Collection содержит методы для включения, удаления и контроля элементов в семействе.

Dim AppObjects As New Col lection

Чтобы добавить AppObject в семейство, воспользуйтесь методом Add для объекта Collection. В объекте семейства предусмотрен метод Ite m, который служит для адресации элементов семейства. Чтобы удалить элемент из семейства, используйте метод Remove.

 

Доступность

лючевые слова Private и Public определяют доступность переменных и процедур. Использование Dim для объявления переменной на уровне модуля означает, что переменная доступна всем процедурам в этом модуле, но недоступна вне его. Замена Dim ключевым словом Private не отразится на доступности переменной; переменная будет дос­тупна только процедурам модуля. Однако если заменить Dim на ключевое слово Public, то переменная бу­дет доступна для всех модулей приложения. Процедуры и функции, которые добавляются в модуль, являются Publi с по умолчанию; они доступны всем модулям приложения. События процедур в модулях Form и Report являются Private по умолчанию, поэтому они доступны только модулю, в котором содержатся.

 

Обработка ошибок

Чтобы установить системное прерывание по обнаружению ошибки, поместите оператор On Error туда, где вы хотите активизировать это системное прерывание.

Sub CausesAnError()

' Direct procedure flow.

On Error GoTo ErrorHandler

' Raise division by zero error.

Err.Raise 11

Exit Sub

ErrorHandler:

' Display error information.

MsgBox "Error number " & Err.Number & ": " & Err.Description

End Sub

Другая форма оператора On Error Resume Next передает управление оператору, следующему за оператором с ошибкой. Этот оператор приводится ниже.

Publ ic Function MyFunctionO

On Error Resume Next

If Err Then

‘обработка

End If

Exit Function

Resume возвращает управление программой оператору, вызвавшему ошибку, и пытается выполнить его снова. Если это приводит к повторной ошибке, то программа обработки ошибок сработает снова. Если вы используете оператор Resume, то лучше применить счетчик возникновения ошибки. По достижении неко­торого предела счетчика следует выйти из процедуры. Resume Next передает управление оператору, следующему за оператором, приведшим к ошибке. Вы мо­жете использовать этот прием только в том случае, если уверены, что ошибка — не критическая и может быть проигнорирована, или если ваш обработчик ошибок откорректирует ситуацию, вызвавшую ошибку.

 

Ветвления и циклы

For counter = start To end [Step step ] [ statements ] [Exit For] [ statements ] Next [ counter ] Do [{While | Until} condition ] [ statements ] [Exit Do] [ statements ] Loop
While condition [ statements ] Wend   Do [ statements ] [Exit Do] [ statements ] Loop [{While | Until} condition ]
For Each element In group [ statements ] [Exit For] [ statements ] Next [ element ]   For Each oGeneric In Forms If oGeneric.Name = " Форма 3" Then Exit For EndIf Next oGeneric With object [ statements ] End With   With MyLabel.Height = 20.Width = 200.Caption = "This is MyLabel" End With  
If condition Then [ statements ] [Else statements ] либо If condition Then [ statements ] [ElseIf condition-n Then [ statements ]... [Else [ statements ]] End If Choose(index, choice-1[, choice-2,... [, choice-n]])   Function GetChoice(Ind As Integer) GetChoice = Choose(Ind,"Speedy","United","Federal")End Function  
IIf(expr, truepart, falsepart)   CheckIt = IIf(TestMe>1000,"Large","Small") Select Case expression_ переменная [Case expression-n_ значение [ statements-n ]]... [Case Else [ elsestatements ]] End Select
Switch(expr-1, value-1[, expr-2, value-2 … [, expr-n,value-n]]) Matchup = Switch(CityName = " London ","English",CityName = " Rome ","Italian",CityName = "Paris","French")  

 



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 415; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.175.212.5 (0.007 с.)