Polytech-soft.com

ПК журнал
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Программирование на vba в access

Программирование на VBA в СУБД MS Access

VBA (Visual Basic for Application) играет важную роль при разработке баз данных MS Access. С помощью VBA в MS Access можно настроить формы и отчеты, запустить макросы, извлечь данные и т.д.

Модули VBA

VBA может использоваться для выполнения любых действий в ходе работы приложения. Для создания процедур VBA в MS Access используется Построитель программ. Программный код создается в Окне модуля. В зависимости от технологии создания можно различить несколько типов модулей:

1. Стандартный модуль. Для его открытия нужно распахнуть список Макрос, расположенный в группе Другие вкладки Создание ленты инструментов, и нажать кнопку Модуль.

2. Модуль формы или отчета. Для открытия модуля формы или отчета нужно открыть форму или отчет в режиме Конструктора и выбрать кнопку Просмотреть код в группе Сервис контекстного меню Инструменты конструктора форм/отчетов — Конструктор ленты инструментов. MS Access позволяет открыть одновременно и форму/отчет и ее модуль. Модули формы/отчета сохраняются одновременно с формой/отчетом и не перечисляются во вкладке Модули области переходов.

3. Независимый модуль класса. Открывается щелчком мыши по кнопке Модуль класса, появляющейся в распахивающемся списке кнопки Макрос, расположенной в группе Другие вкладки Создание ленты инструментов. После сохранения такого модуля его имя будет находиться на вкладке Модули области переходов вместе со стандартными модулями. Для обозначения стандартных модулей и независимых модулей VBA используются разные пиктограммы (рис. 10.8):

рис. 10.8. Отображение стандартных модулей и модулей классов на вкладке Модули области переходов

Элементы языка VBA

Коды программы VBA состоят из выражений (statements). В каждой строке кода располагается одно отдельное выражение. Но данное правило имеет исключения:

· несколько выражений могут быть расположены в одной строке и разделены двоеточием;

· использование символа продолжения строки (пробел, за которым следует символ подчеркивания) позволяет создавать выражение, занимающее несколько строк. Не допускается использовать символ продолжения строки только внутри заключенных в кавычки строк. Рекомендуется продолжение каждой строки выделять отступом.

Алфавит языка VBA составляют следующие элементы:

· прописные и строчные буквы латинского алфавита (А – Z);

· прописные и строчные буквы кириллицы (А – Я);

· цифры от 0 до 9;

· символ подчеркивания «_»;

При написании кода VBA следует знать некоторые соглашения, которых следует придерживаться, чтобы избежать ошибок выполнения кода. Первое соглашение – это соглашение по именам. В VBA именуются переменные, константы, процедуры, функции, объекты и т.д. Определим правила, которым следует следовать при выборе имен:

1. Длина имен не должна превышать 255 символов, но VBA учитывает только первые 31 символ от начала имени.

2. Имена должны начинаться с буквы и могут содержать комбинацию букв, цифр и символов.

3. Имена не должны совпадать со стандартными именами VBA.

4. Имена не должны включать точек, пробелов и следующих символов: ! @ # $ %. Символ пробела можно заменить символом подчеркивания _.

Регистр букв в именах не имеет значения. Например, имена PRICE, Price и price эквивалентны.

Типы данных языка VBA

В языке VBA типы данных делятся на простые (или базовые) и структурированные.

К простым типам относятся:

· вещественный (Single, Double, Currency, Decimal);

· логический (Boolean).

К стандартным структурированным типам относятся:

· массив;

· строка;

· тип, определяемый пользователем.

Таким образом,VBA использует 12 встроенных типов данных, представленных в таблице 10.1.

Типы данных в VBA

Тип данныхДиапазон допустимых значенийЗанимаемая память
ByteБайт, целые числа без знакаОт 0 до 2551 байт
IntegerЦелые числа со знакомОт -32768 до 327672 байта
LongЦелые числа двойной точности со знакомОт -2 31 до 2 31 -14 байта

Продолжение таблицы 10.1.

Тип данныхДиапазон допустимых значенийЗанимаемая память
SingleДействительные числа одинарной точностиОт -3,4Е38 до -1,4Е-45 – отрицательные числа; от 1,4Е-45 до 3,4Е38 – положительные числа4 байта
DoubleДействительные числа двойной точностиОт -1,8Е308 до -4,9Е-324 – отрицательные числа; от 4,9Е-324 до 1,8Е308 – положительные числа8 байт
CurrencyДенежные значенияОт -9,2Е14 до 9,2Е148 байт
DecimalДесятичные числа29 знаков – целые числа; 27 знаков после запятой – вещественные числа14 байт
BooleanЛогическийTrue или False2 байта
DateДата (ограничиваются справа и слева знаком #)От 01.01.1000 до 31.12.9999 с составляющей времени от 0:00:00 до 23:59:598 байт
StringСтроковыйДо 65400 символов – фиксированной длины; до 2 млрд. символов — переменной длины1 байт на каждый символ — для строк фиксированной длины; 10 байт + 1 байт на каждый символ — для строк переменной длины
ObjectОбъектСсылка на объект, рисунок4 байта
VariantВариант (используется по умолчанию)Специальный тип, который может заменить любой другой16 байт для чисел, 22 байта + 1 байт на каждый символ для строк
Читать еще:  Как запустить msi от имени администратора

Переменные

Переменная – это поименованная область памяти, предназначенная для временного хранения данных. Содержимое переменной может быть изменено в процессе выполнения программы. Данные, хранимые в переменных, могут быть различного типа. Тип данных определяет тип переменной.

Для работы с переменными существует два важных понятия: область определения и время жизни переменной. Область определения переменной определяет, где можно использовать переменную. В VBA есть три уровня определения переменных:

· Уровень процедуры. Переменные используются только в процедуре, в которой они описаны.

· Уровень модуля. Переменные используются только в процедурах модуля, в которых они описаны, но не в других модулях проекта.

· Уровень проекта (общие переменные). Переменные используются во всех модулях и процедурах проекта.

Переменные уровня процедуры сохраняют свое значение лишь при выполнении процедуры, при выходе из процедуры значение переменной теряется. Если процедура вызывает другие процедуры, переменная сохраняет свое значение, пока не закончится выполнение и этих процедур.

Декларация переменной может быть явной или неявной. Для явного определения переменных существует два способа:

[Static [Private| Public] Dim ИмяПеременной1 [as Тип1]

Private (частный), Public (общий) – ключевые слова, определяющие область видимости переменной. Static (статический) — ключевое слово, которое определяет, сохраняет ли переменная свое значение при завершении блока программы и при выходе из него.

2. Указание типа с помощью суффикса.

В этом случае тип данных переменной определяется с помощью добавления в конец ее имени специального символа описания типа (таблица 10.2):

[Static [Private| Public] Dim ИмяПеременнойСуффикс

Самоучитель программирования на VBA в access

12.08.2012, 18:46

Вопросы по книге С. Бобровского «Самоучитель программирования на языке С++»
В книге С. Бобровского «Самоучитель программирования на языке С++», написание кодов небольших.

Разница в скорости vba word и vba access
Вопрос: из акса идет выгрузка данных в файл ворд, далее эти данные опять же из акса форматно.

Код VBA в Access 2010 работает, в Access 2007 выдает ошибку
Написала код VBA в Access 2010 — работает, в Access-2007 выдает ошибку. В чем причина — подскажите

Как заполнить базу данных Access с помощью vba в том же access и считать из нее инфу?
Прошу помочь в азах. Как заполнить базу данных Access с помощью vba в том же access и считать из.

13.08.2012, 09:01213.08.2012, 09:18314.08.2012, 04:24409.03.2020, 16:46509.03.2020, 18:02609.03.2020, 19:157

Eugene-LS,
с этой книгой не сталкивалась, но отклики впечатляют — намерена почитать с экрана

Автоматизация Microsoft Access с помощью VBA
Майк Гандерлой, Сьюзан Сейлз Харкинз
О книге: Эта книга поможет вам приумножить опыт, приобретенный при работе с приложением Access, и поднять его на принципиально новый уровень’ вы научитесь использовать язык программирования VBA для выполнения тех задач, которые до сих пор делали вручную. Авторы поставили цель как можно быстрее и эффективнее научить читателей основным навыкам автоматизации работы с базами данных.

В книге рассматривается большое число тем, включая:
— основы работы в редакторе Visual Basic Editor;
— использование переменных, констант, типов данных, процедур и встроенных функций VBA;
— работа с массивами, объектами, формами, простыми и комбинированными списками;
— отчетами и коллекциями приложения;
— анализ модели событий Access;
— извлечение и обработка данных с помощью ADO;
— работа с файлами данных и файлами XML.
— В конце книги дан обзор языка Jet SQL.

Книга предназначена для профессионалов, которые используют Access в своей повседневной работе.

От себя: Книга была найдена на просторах Интернета. Очень её рекомендую, так как сам обладаю бумажным вариантом, более толковой книги по автоматизации Access не встречал, мне хватало этой книги, в ней всё хорошо объясняется и предлагаются фактически готовые решения! Применяю книгу в своей практике постоянно!

Программирование на VBA Access 2003 – Встроенные функции

Пришло время поговорить и о программировании на VBA Access, так как мы с Вами рассматривали уже достаточно много примеров реализации тех или иных задач в Access 2003, но мы не затрагивали основы VBA, и сегодня мы начнем со встроенных функций. Рассмотрим часто используемые функции и конечно разберем примеры их использования, для лучшего освоения языка программирования VBA для Access.

Если говорить о том, что именно мы уже рассматривали в Access 2003 то, например это Загрузка данных из текстового файла на VBA Access или Выгрузка данных из Access в шаблон Word и Excel. А сегодня мы будем рассматривать именно основы VBA и как уже сказалось выше встроенные функции.

Встроенные функции VBA Access

Если Вы уже немного знакомы с какими-нибудь языками программирования, например, Вы, знаете основы JavaScript или основы Visual Basic, то Вы должны понимать что такое встроенные функции, а если нет то я могу привести свое определение данного термина.

Читать еще:  Администрирование баз данных sql

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

И так хватит теории, давайте приступим к рассмотрению встроенных функций VBA Access.

Для начала создадим форму, добавим на нее элемент управления «Кнопка» затем откроем, обработчик события «Нажатие кнопки», где мы и будем программировать на VBA, а конкретней пробовать использование встроенных функции.

Функция msgbox – простая функция для отображения сообщения на экране в виде диалогового окна.

И теперь сохраните, откройте форму и нажмите на нашу кнопку и у Вас отобразится это сообщение:

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

Примечание! Далее я буду писать все примеры без указания начала процедуры и ее конца т.е. без Private Sub Кнопка1_Click() и End Sub, подразумевается что все примеры мы будем писать в обработчике одной кнопки, Вы просто вставляйте код ниже между этим строками.

Примечание! Более подробно об описании и значениях констант можете прочитать во встроенной автономной справке Access 2003. Тоже относится и к остальным встроенным функциям и любым другим возникающим вопросам, так как в этой справке есть все, всем советую ей пользоваться.

Функция Mid – данная функция относится к строковым функциям Access и она вырезает указанное число знаков строки. Имеет три параметра, первый это собственно сама строка, второй это начальная позиция, и третий это число символов.

Здесь мы просто указали строку, из которой необходимо вырезать, и с какого символа нужно начинать, третий параметр мы не указывали (поэтому вырезалось все, начиная с 7 символа), а если захотели, то код был бы таким (абсолютно равнозначный):

Функция Len – также относится к строковым функциям и она просто считает количество символов в строке. Давайте объединим предыдущий пример с функцией len, так как порой неизвестно (да и не удобно) сколько символов необходимо вырезать.

И результат будет таким же, как и предыдущем примере.

Функция LCase – строковая функция vba которая преобразует все буквы строки в строчные. Для закрепления давайте рассмотрим все на том же примере, только сейчас обрамим наше выражение еще и функцией LCase.

И результат будет таким же, как и раньше, но все заглавные буквы станут строчными, в нашем случае это первая буква «Н», результат:

Функции left и right – это строковые функции vba, которые вырезают указанное количеств символов слева и справа соответственно. Принцип такой же, как и, например, в Excel функциях левсимв и правсимв.

Функция right работает аналогично, только вырезает символы справа.

Функции date, time, now – это функции, с помощью которых можно получить текущую дату и время. По названию я думаю понятно, какая функция для чего нужна, если нет то date текущая дата, time текущее время, now текущая дата и время. Данные функции запускаются без параметров.

Здесь мы просто через конкатенацию вывели результаты выполнения сразу всех функций.

Функции hour, minute, second – эти функции возвращают соответственно часы, минуты и секунды. Принимают один параметр это текущее время.

Функция isnull – проверяет значение на NULL.

Программно задать значение NULL, для того чтобы данная функция вернула TRUE нельзя, поэтому применяйте эту функцию к переменным или полям, которые формируются на основе данных формы или источника данных.

Функция Nz — данная функция возвращает значение не NULL. Принимает один обязательный параметр с типом variant и один не обязательный. Она работает следующим образом, если входящий параметр NULL она преобразует его в другое значение, для предотвращения использования NULL значений в выражении. Также если указан второй параметр, то в случае если первый параметр NULL то она вернет его, т.е. второй параметр.

Читать еще:  Для удаления нужно обладать правами администратора

Пример предотвращения NULL значения в выражении:

Т.е. если бы мы не использовали данную функцию, то тогда у нас была ошибка, так как сложить число со значением NULL нельзя, но мы это предвидели и предотвратили.

Пример возвращения значения, если входящий параметр равен NULL:

Здесь просто мы смотрим если первый параметр NULL, то возвращаем второй в виде строки.

Приведу несколько функций для работы с числами.

Функции Int, Fix, Abs – функции которые работают с числами, все они принимают один параметр и делают следующее:

  • Int – принимает значение типа Double и возвращает число меньшее или равное исходному числу, в случае если число отрицательное;
  • Fix — принимает значение типа Double и возвращает число большее или равное исходному числу, в случае если число отрицательное;
  • Abs – возвращает абсолютное значение числа переданное во входящем параметре.

Примечание! Для перевода на новую строку мы использовали константу vbNewLine.

Пока это все, надеюсь, данные простые примеры помогут Вам освоить и понять что такое встроенные функции, а мы с Вами продолжим изучать VBA Access в следующих статьях. Удачи!

Иллюстрированный самоучитель по Microsoft Access 2002

Язык Visual Basic для приложений (VBA). Процедуры и функции, их вызов и передача параметров.

Следующие ниже подразделы данного раздела описывают синтаксис языка программирования VBA.

Основными компонентами программы на VBA являются процедуры и функции, Они представляют собой фрагменты программного кода, заключенные между операторами Sub и End Sub или между операторами Function и End Function. Вот как может выглядеть процедура VBA:

Функция отличается от процедуры тем, что ее имя выступает также в качестве переменной и используется для возвращения значения в точку вызова функции. Вот как может выглядеть функция:

Для того чтобы использовать написанную вами процедуру или функцию, необходимо вызвать ее. Как же осуществляется вызов процедур и функций? Процедуру с непустым списком аргументов можно вызвать только из другой процедуры или функции, использовав ее имя со списком фактических значений аргументов в качестве одного из операторов VBA. Функцию же можно вызвать не только с помощью отдельного оператора VBA, но и поместив ее имя со списком фактических значений аргументов прямо в формулу или выражение в программе на VBA или, например, прямо в формулу в вычисляемых полях запросов, форм и отчетов Access.

Процедура с пустым списком аргументов (так называемый командный макрос) может быть вызвана не только из другой процедуры или функции, но и с помощью комбинации клавиш быстрого вызова, команд раскрывающихся меню или кнопок панелей инструментов. Можно также связать такую процедуру с выполнением самых различных событий: например, с открытием формы или отчета, со щелчком мышью по кнопке в форме, с воздействием на элементы управления форм, в частности элементы управления ActiveX. Такие процедуры называют процедурами обработки событий. Понятно, что функции или процедуры, нуждающиеся в передаче им аргументов, таким способом вызвать нельзя. Подробнее о том, как создаются процедуры обработки событий, будет рассказано в разд. «Программирование в формах и отчетах» данной главы.

Если вызываемая процедура имеет уникальное имя и находится в том же модуле, что и вызывающая процедура, то для ее вызова достаточно указать это имя и задать список фактических значений аргументов, не заключая его в скобки. Второй способ вызова процедуры состоит в использовании оператора Call. Сначала идет оператор Call, затем имя процедуры и список параметров, в этом случае обязательно заключенный в скобки. Функцию можно вызывать точно так же, как и процедуру, но гораздо чаще используется другой, специфический способ вызова функций: использованием ее имени с заключенным в скобки списком параметров в правой части оператора присваивания.

Вот примеры вызова процедуры под именем CrossRC с передачей ей двух аргументов (константы и выражения):

А вот пример вызова двух функций – Left и Mid, и использования возвращаемого ими значения в выражении:

Допускается два различных способа передачи переменных процедуре или функции: по ссылке и по значению. Если переменная передается по ссылке, то это означает, что процедуре или функции будет передан адрес этой переменной в памяти. При этом происходит отождествление формального аргумента процедуры и переданного ей фактического параметра. Тем самым вызываемая процедура может изменить значение фактического параметра: если будет изменен формальный аргумент процедуры, то это скажется на значении переданного ей при вызове фактического параметра. Если же фактический параметр передается по значению, то формальный аргумент вызываемой процедуры или функции получает только значение фактического параметра, но не саму переменную, используемую в качестве этого параметра. Тем самым все изменения значения формального аргумента не сказываются на значении переменной, являющейся фактическим параметром.

Ссылка на основную публикацию
Adblock
detector