- •1. Операторы, процедуры, типы данных vba
- •Основные типы данных в vba
- •Преобразование типов данных
- •Is (оператор)
- •Функция IsArray
- •IsArray (Имя переменной)
- •IsDate (функция)
- •IsEmpty (функция)
- •IsError( функция)
- •IsMissing(функция)
- •IsNull (функция)
- •IsNumeric (функция)
- •IsNumeric(выражение)
- •IsObject(функция)
- •2. Работа с объектами
- •3. Применение процедур vba
- •Модель программирования в Access
- •Типы процедур
- •Поле со списком
- •Вызов процедур
- •Запуск процедур-функций
- •Запуск процедур-подпрограмм
- •4. Операторы vba
- •Логические операторы Логические операторы
- •Некоторые функции в vba
- •5. Объявление переменных, констант в vba
- •Создание пользовательских типов данных
- •Dim c As клиент
- •Cоздание массивов постоянной длины
- •Cоздание массива из списка значений
- •Создание динамических массивов
- •6.Организация ввода-вывода данных с помощью функций InputBox и MsgBox
- •7. Управляющие структуры
- •Структура If … Then
- •Структура If … Then … Else
- •Вторая группа операторов]
- •Второй блок операторов]
- •Алгоритм
- •Переход по метке
- •10: Программный код Cтруктура Select Case
- •8. Циклы в vba Cтруктура For ….Next
- •Операторы
- •Структура For Each … Next
- •Структура Do… Loop
- •Структура Do While … Loop
- •Структура Do ….While Loop
- •Cтруктуры Do Until … Loop и Do … Loop Until
- •9. Операторы Exit
- •Функции для работы со строковыми переменными
- •11. Классические задачи программирования: сортировка, поиск
- •If IsNull(массив(X)) Then Exit Function
- •12. Управление базами данных
- •Основные понятия базы данных
- •Установка значений свойств
- •Считывание свойств
- •Вызов методов
- •Объект.Метод
- •Присваивание значений возвращаемых из методов
- •13. Объект Database –база данных
- •Cвойства объекта Database
- •Методы объекта Database
- •14. Объект TableDef
- •Свойства объекта TableDef
- •Методы объекта TableDef
- •Использование свойства Fields объекта TableDef
- •Использование свойства TableDefs объекта Database
- •15. Объект Form –экранная форма Свойства объекта Form
- •Применение некоторых свойств oбъекта Form Свойство Me
- •Cвойство ActiveControl
- •Свойство CurrentRecord
- •Свойство Visible
- •Свойства OrderBy и OrderByOn
- •Методы объекта Form
- •Список и поле со списком
- •Глава 16. Объект DoCmd и его методы
- •Глава 17. Объект Recordset
- •Свойства объекта Recordset
- •Свойства bof и eof
- •Создание объекта Recordset
- •Глава 18. Применение объекта Debug
- •Глава 19. Применение свойства RecordCount
- •Применение свойства Fields
- •Применение метода GetRows объекта Recordset
- •Глава 21. Объекты QueryDef
- •Свойства объектов QueryDef
- •Использование метода Execute
- •Глава 22. Применение языка sql
- •Использование выражения select
- •Простые формы select
- •Фильтрация данных с помощью предложения where
- •Сортировка данных
- •Объединение таблиц
- •Глава 23. Объект Report События
- •Некоторые свойства объекта Report
- •Методы объекта Report
- •Применение свойств объекта Report
- •Глава 24. Настройка пользовательского интерфейса
- •Глава 25. Создание и изменение панелей команд
- •Глава 26. Создание и удаление контекстных меню
- •Приложение
- •Этапы реализации задачи:
- •If IsNull(.Fields!цена) Then Exit Do
IsNull (функция)
Назначение
Проверяет, имеет ли данное выражение специальное значение Null.
Возвращает логическое значение (Boolean).
Если выражение равно Null, возвращается True, в противном случае – False.
Применение
Главной задачей IsNull является исключение ошибок времени исполнения, возникающих при манипуляциях данными, которые не допускают использования значения Null, а это очень обширная область.
Синтаксис
IsNull (expression)
Еxpression- выражение, которое требуется проверить на Null
IsNull обрабатывает данные любого типа без генерации ошибки.
IsNumeric (функция)
Назначение
Проверяет, является ли значение данного выражения числом.
Возвращает логическое значение (Boolean).
Если выражение может быть оценено как число, возвращается True, в противном случае - False.
Применение
Как и для ряда других функций Is..., главной задачей IsNumeric является исключение ошибок времени исполнения, возникающих при манипуляциях данными неподходящего типа (передача в какую-нибудь процедуру, присвоение и т. д. и т. п.).
Синтаксис
IsNumeric(выражение)
Выражение- любого типа.
IsNumeric переваривает данные любого типа без генерации ошибки.
Выражения, оцениваемые как дата/время, интерпретируются как нечисловые, т. е. IsNumeric возвращает False.
IsObject(функция)
Назначение
Проверяет, имеет ли данная переменная объектный тип данных.
Возвращает логическое значение (Boolean).
Если переменная имеет объектный тип данных, возвращается True, во всех остальных случаях - False.
Применение
Переменную явно объявленную как объектная, проверять на объектность не имеет смысла. Поэтому эту функцию необходимо использовать для переменных типа Variant.
2. Работа с объектами
После запуска базы данных Access ее объекты просто ожидают действий пользователя. Когда пользователь щелкает мышью, нажимает клавиши быстрого доступа или активизирует команды меню, компьютер выполняет программы управления объектами.
Существуют две группы программ: стандартные или встроенные программы, являющиеся составной частью Access, и пользовательские программы, написанные разработчиком приложения.
В любом случае программа представляет собой последовательность команд, передаваемых в компьютер для того, чтобы он выполнил определенные действия с объектами или с Access.
К стандартным программам относятся внутренние программы Access, запускаемые при выборе стандартной команды меню или при нажатии стандартной кнопки на панели инструментов.
Пользовательские программы — это программы, запускаемые при выборе команды меню или кнопки панели инструментов, при активизации кнопки или при открытии формы.
Программы предназначены для работы с объектами. С их помощью открываются и закрываются формы, выполняются запросы на выборку или изменение групп записей, печатаются отчеты и сохраняются измененные данные в файле БД. Программы также открывают и закрывают БД, устанавливают параметры запуска Access и выгружают его из памяти.
Программы можно разделить на группы по месту их хранения:
Программы, хранящиеся внутри объектов (в качестве их составных частей) и называемые методами. Чтобы запустить
метод, нужно обратиться к объекту. У объектов есть встроенные,
стандартные методы, но можно определить и собственные.
Программы, хранящиеся отдельно от объектов, называются макросамиипроцедурами.Макросы и процедуры запускаютсяAccessи выполняют определенные действия над объектами.
Инструментальные средства отладки
Инструментальные средства отладки призваны дать разработчику максимально ясное представление о том, как работает его программа. Искусство разработчика, используя все имеющиеся в его распоряжении средства, быстро выявить ошибки. Набор средств отладки в Access широк. Это и специальное меню Debug, и во многом дублирующие его кнопки на панели инструментов, и специальные окна отладки.
Меню Debug
Назначение команд меню описано в таблице:
Команда
|
Назначение |
Compile(Компиляция) |
Компилирует все модули в текущей базе данных |
Step Into (Шаг с заходом) |
Исполняет очередную строку кода с заходом в процедуры |
Step Over (Шаг с обходом) |
Исполняет очередную строку кода без захода в процедуры, т. е. функции и процедуры выполняются за один шаг |
Step Out (Шаг с выходом) |
Выполняет остаток текущей процедуры и оста- навливается в вызывающей программе на следующей строке после вызова этой процедуры |
Run to Cursor (Запуск до курсора) |
Выполняются все строки кода от текущей строки до строки, в которой установлен курсор. Останавливается перед этой строкой |
Add Watch (Добавление контрольного значения) |
Открывает окно "Добавление контрольного значения"
|
Edit Watch (Изменение контрольного значения) |
Открывает окно "Изменение контрольного значения"
|
Quick Watch (Быстрый просмотр)
|
Выводит в специальном окне текущее значение выражения в точке останова |
Toggle Breakpoint (Установка/сброс точек останова) |
Устанавливает/снимает точку останова на строку, в которой находится курсор |
Clear All Breakpoints (Сброс всех точек останова) |
Снимает все точки останова, установленные в данном модуле |
Set Next Statement (Установка следующего предложения) |
Устанавливает очередную выполняемую команду на строку, содержащую курсор. |
Show Next Statement (Показ следующего предложения) |
Отображает в окне редактора очередную команду для выполнения |
Кнопки на инструментальной панели в основном повторяют описанные команды. Это видно из значков, находящихся рядом с командой и на кнопках. Но добавлены кнопки, соответствующие меню Run:
- Run Sub/UserForm — продолжает выполнение процедуры после точки останова, снимая при этом пошаговый режим, если он был установлен
- Break (Прервать) — прекращает выполнение процедуры
-Reset (Сброс) — прекращает выполнение процедуры и присваивает переменным начальные значения по умолчанию
Еще несколько кнопок инструментальной панели позволяют открыть специальные окна отладки.
Окно Locals
Специальные окна отладки используются главным образом для того, чтобы просматривать промежуточные значения данных - переменных, выражений, свойств объектов и т. д. Для этого используются два окна - Locals (Локальные) и Watches (Контрольные).
Для того чтобы познакомиться с этими окнами, установим точку останова на одной из команд написанной нами ранее процедуры .
Для этого нужно
1. Открыть эту процедуру в окне редактора кода.
2. Установить курсор на нужную строку
3. Нажать кнопку на панели инструментов с изображением руки или выбрать команду Toggle Breakpoint в меню Debug.
Строка будет выделена коричневым фоном и на панели слева напротив этой строки появится специальный значок — жирная коричневая точка.
Примечание
Самый простой и естественный способ установки точек останова:
щелкните мышью по серой полосе у левого края окна редактора напротив
нужной строки. Снять точку можно щелчком мыши по коричневой точке
напротив нужной строки.
Теперь при запуске нашей процедуры, как только выполнение дойдет до помеченной строки, произойдет останов, а на экране появится окно редактора кода, в котором помеченная строка выделена желтым цветом, означающим, что это текущая команда.
Нажать кнопку Local Window или выбрать соответствующую команду из контекстного меню редактора или пункт меню View/Locals Window. Тогда в нижней части экрана появится новое окно Locals.
В этом окне можно увидеть все локальные переменные и константы текущей процедуры, а также иерархический список свойств всех объектов формы, который скрывается за коротеньким словом Me.
Именно эти свойства и интересуют, как правило, разработчика, т. к. в большинстве случаев значения переменных в точке останова можно увидеть, просто подведя курсор к этой переменной в окне редактора.
Тогда появляется всплывающая подсказка со значением переменной.
Если подсказка не появляется, проверьте значение флажка Auto Value Tips на вкладке Editor окна Options.
Если выполнять по шагам процедуру, то можно наблюдать, как меняются значения свойств.
Окно Watches
Окно Watches (Контрольные) содержит контрольные выражения. Эти выражения контролируются самой Access в процессе выполнения программы, и когда выполнение программы останавливается, в этом окне можно увидеть текущие значения этих выражений.
Можно составить контрольное выражение таким образом, что приложение останавливается, когда это выражение принимает определенное значение.
Такой прием, например, используется, когда отлаживаются длинные циклы, которые слишком долго выполнять по шагам.
Для того чтобы отслеживать контрольные значения, их сначала нужно задать.
Для этого используется команда Add Watch (Добавить контрольное значение) в меню Debug (Отладка). Добавлять контрольные значения можно как в обычном режиме редактирования кода, так и в режиме останова.
При выборе команды появляется диалоговое окно Add Watch (Добавление контрольного значения).
В поле Expression (Выражение) можно ввести контрольное значение - это может быть переменная, свойство или любое допустимое выражение.
В группе переключателей Watch Type (Тип контрольного значения) выберем переключатель Break When Value Is True (Останов, если значение истинно).
В нижней части редактора появляется новое окно Watches, в котором выведена одна строка.
Строка содержит контрольное выражение, его значение, тип и контекст, т. е. процедура, в которой вычисляется контрольное значение.
Существует очень простой способ добавления контрольных значений в окно Watches.
Можно просто выделить в тексте процедуры выражение и перетащить его мышью в окно Watches.
Окно Quick Watch
Окно Quick Watch (Быстрый просмотр) используется для просмотра значения свойства, переменной или выражения, которое не определено заранее как контрольное значение.
Чтобы открыть это окно, нужно:
1. Выделить в тексте программы интересующее выражение.
2. Нажать кнопку Quick Watch на панели инструментов или выбрать команду Debug, Quick Watch (Быстрый просмотр) или нажать комбинацию клавиш <Shift>+<F9>.
Если нужно добавить выбранное выражение к контрольным значениям, просто нажмите кнопку Add (Добавить).
Окно Immediate
Окно Immediate (Отладка) может быть использовано для тестирования данных и процедур двояким образом: вручную проверяя значения выражений с помощью команды print или "?" и вставляя команду Debug, print в код программы.
Окно Immediate открывается при нажатии кнопки Immediate Window на панели инструментов или при выполнении соответствующей команды в менюView, или при нажатии комбинации клавиш <Ctrl>+<G>. Это окно отображается на экране, даже если окно редактора закрыто и выполняется приложение.
При этом в нем можно наблюдать значения указанных данных. Выводить в это окно можно любые допустимые выражения, включая свойства объектов.Для того чтобы вывести значение переменной, нужно ввести знак "?" и имя переменной и нажать клавишу <Enter>. Значение переменной отобразится на следующей строке.
Окно Call Stack
Окно Call Stack (Стек вызовов) содержит список всех незавершенных процедур приложения и используется для трассировки вложенных процедур.
При этом самая первая из вызванных процедур будет размещаться в нижней части стека, а самая последняя — в верхней части. Наименование процедуры состоит из трех частей: имени проекта, имени модуля (в том числе модуля формы), имени процедуры.
Выбрав в стеке нужную процедуру, можно нажать кнопку Show (Показать), тогда окно Call Stack закрывается и в окне кода модуля появляется выбранная процедура. При этом курсор устанавливается на ту строку кода, которая вызывает следующую процедуру из стека.
Если выбирается текущая процедура, то курсор устанавливается на текущую команду.
Вызывается окно Call Stack несколькими способами:
1. Нажать кнопку Call Stack на панели инструментов
2. Выбрать команду View, Call Stack
3. Нажать комбинацию клавиш <Ctrl>+<L>
4. Нажать кнопку с многоточием в верхнем правом углу окна Locals
Окно может быть открыто только в режиме останова.
Использование комбинаций клавиш быстрого вызова
Поскольку работа в редакторе — это главным образом работа с клавиатурой, существует большое количество специальных клавиш и комбинаций клавиш быстрого вызова для выполнения определенных функций. Их можно видеть в меню Run, Debug и View.
Список наиболее часто используемых клавиш приведен в таблице:
Комбинации клавиш |
Назначение |
<F7> |
Открыть окно редактора кода |
<Ctrl>+<F> |
Найти |
<Ctrl>+<F> |
Заменить |
<F3> |
Найти далее |
<Shift>+<F3> |
Найти ранее |
<Ctrl> +<I> |
К следующей процедуре |
<Ctrl> +<H> |
К предыдущей процедуре |
<Ctrl> + <J> |
List Properties/Members |
<Ctrl>+<Shift>+<J> |
List Constant |
<Ctrl> + <I> |
Quick Info |
<Ctrl> + <Shift>+<I> |
Parameter Info |
<Ctrl>+ <пробел> |
Закончить слово |
<F5> |
Продолжить |
<Shift> + <F5> |
Сброс |
<F8> |
Шаг с заходом |
<Shift> + <F8> |
Шаг с обходом |
<Ctrl>+<Shift>+<F8> |
Шаг с выходом |
<F9> |
Установка/сброс точки останова |
<Shift>+<F9> |
Вызов окна Quick Watch |
<Ctrl>+<Shift>+<F9> |
Сброс всех точек останова |
<F2> |
Вызов окна просмотра объектов Object Browser |
<Shift> + <F2> |
Definition |
<Ctrl>+<Shift>+<F2> |
Last Position |
<Ctrl>+ <G> |
Immediate |
<Ctrl> + <L> |
Call Stack |