A:
DoCmd.RunMacro «Макрос7»
If IsNull(Forms![Hазначение]![Hазначение] = "") = True Then
DoCmd.RunMacro «МакросЗ»
DoCmd.RunMacro «Макрос9»
GoTo A
Else
End If
Программа Макрос7 осуществляет переход к последней записи. Затем уже знакомая нам логическая конструкция Then… If…Else (Если…То…Иначе) проверяет утверждение Forms![Hазначение]![Hазначение] = "". Иными словами, вы уточняете, есть ли в поле Назначение одноименной формы пустая строка. Проверка выполняется с помощью функции IsNull (), которая возвращает значение типа Boolean. Оно показывает, является ли результатом выражения пустое значение (Null). Синтаксис функции:
IsNull(выражение)
Итак, функция IsNull возвращает True (Истина), если выражение имеет значение Null, в противном случае – False (Ложь). Предположим, результатом проверки будет True: в записи обнаружена пустая строка. Тогда с помощью программы Макрос7 блокируется вывод сообщения, а оператор Макрос9 удаляет эту запись и осуществляет переход на метку А. Она повторяет описанные процедуры для следующей пустой записи, и так продолжается до тех пор, пока не выяснится, что подобных записей больше нет. Тогда цикл заканчивается и начинает выполняться следующая группа операторов:
DoCmd.RunMacro «Макрос1»
Cod = DMax(«[Kод]», «Назначение») + 1
Forms![Hазначение]![Kод] = [Cod]
DoCmd.RunMacro «Макрос29»
Приведенный набор команд задает установку на последнюю пустую запись и определяет соответствующее значение для ее кода. (Подробно все это рассматривалось в предыдущем разделе.) Вот полный текст процедуры:
Private Sub Удалить_запись_Click()
On Error GoTo Err Назначение Удалить_запись_Click
Dim Cod As Integer
DoCmd.RunMacro «МакросЗ»
DoCmd.RunMacro «Макрос9»
A:
DoCmd.RunMacro «Макрос7»
If IsNull(Forms![Hазначение]![Hазначение] = "") = True Then
DoCmd.RunMacro «МакросЗ»
DoCmd.RunMacro «Макрос9»
GoTo A
Else
End If
DoCmd.RunMacro «Макрос1»
Cod = DMax(«[]», «Назначение») + 1
Forms![Hазначение]![Kод] = [Cod]
DoCmd.RunMacro «Макрос29»
Exit_Назначение_Удалить_запись_Click:
Exit Sub
Err_Назначение_Удалить_запись_Click:
MsgBox Err.Description
Resume Exit_Назначение_Удалить_запись_Click
End Sub
1. В этой главе были рассмотрены основные положения языка программирования VBA, который стал стандартным средством макропрограммирования для различных приложений.
2. Сфера приложения VBA практически безгранична. В качестве примера в этой главе выбрано «обустройство» собственно базы данных – обеспечение удобства работы с ней для пользователя. Обычно у каждого пользователя свои взгляды на то, что удобно, а что нет, и нередко сервис базы данных приходится дорабатывать.
3. Обращение к VBA оправдано тогда, когда средства, заложенные в Access, либо не позволяют добиться нужного результата, либо предлагают сложное и громоздкое решение.
4. В качестве конкретных примеров использования языка VBA в настоящей главе рассмотрены:
– предупреждение дублирования записей при их вводе с помощью формы;
– установка на последнюю запись при открытии формы;
– удаление записи с дальнейшей установкой на последнюю запись.
Приложение 1 Количественные характеристики объектов Access 2002
Таблица П1.1.
База данных Microsoft Access
1 Под базой данных Microsoft Access (.mdb) понимается совокупность данных и объектов, относящихся к определенной задаче. Управление данными выполняется ядром базы данных Microsoft Jet.
2 Встроенный объект базы данных, определенный как системный, например таблица MSysIndexes, или системные объекты, определенные пользователем. Для определения системного объекта необходимо, чтобы его имя начиналось с символов USys. Объект – некоторая структура, рассматриваемая как самостоятельный файл в пределах Microsoft Access (таблица, запрос, форма, отчет, макрос, модуль, страница доступа к данным и др.).
3 Наборы описаний, инструкций и процедур, сохраненных под общим именем для организации программ на языке Microsoft Visual Basic.
Таблица П1.2. Таблица
Таблица П1.3. Запрос
Таблица П1.4. Форма и отчет
Таблица П1.5. Макрос
Таблица П1.6. Проект Microsoft Access
1 Проект Microsoft Access. Файл Microsoft Access, имеющий подключение к базе данных Microsoft SQL Server, который используется для создания приложений в архитектуре клиент/сервер. Проект не содержит данные или объекты определения данных, такие как таблицы и представления.
Таблица П1.7. Форма и отчет
Таблица П1.8. Макрос
Приложение 2 Словарь Microsoft Access 2002
Bookmark (закладка). Свойство объекта Recordset или формы, содержащее двоичную строку, определяющую текущую запись.
Building Applications with Forms and Reports (Разработка приложений с помощью форм и отчетов). Руководство, содержащее дополнительные сведения о языке Visual Basic, защите, элементах ActiveX и распространении приложений Microsoft Access. Доступно на Web-узле Microsoft www.microsoft.com.
JRO. Набор интерфейсов программирования объектов, позволяющих выполнять действия, специфические для баз данных Microsoft Jet. С помощью JRO выполняется сжатие баз данных, обновление данных из кэша, а также создание и управление реплицированными базами данных.
MSDE. Совместимое с Microsoft SQL Server 7.0 ядро обработки данных в архитектуре клиент/сервер, обеспечивающее локальное сохранение данных на малых компьютерах, таких как рабочие станции пользователей или малые серверы рабочих групп.
Null. Значение, которое можно ввести в поле или использовать в выражениях и запросах для указания отсутствующих или неизвестных данных. В Visual Basic ключевое слово Null указывает значение Null. Некоторые поля, например первичного ключа, не могут содержать это значение.
OLE DB. Архитектура компонентов базы данных, обеспечивающая эффективный доступ по сети и через Internet к источникам данных многих типов, в том числе реляционным источникам данных, почтовым файлам, неформатированным текстовым файлам и электронным таблицам.
OLE-сервер. Приложение или библиотека DLL, из которых в другое приложение поступает связанный или внедренный объект OLE. Например, если объект OLE в базе данных Microsoft Access содержит электронную таблицу Microsoft Excel, то Microsoft Excel является OLE-сервером.
Абсолютное (фиксированное) размещение. Размещение элемента относительно родительского элемента или, если такого нет, основной части страницы. Значения свойств элементов От левого края (Left) и От верхнего края (Top ) задаются относительно верхнего левого угла родительского элемента.
Автозамена имен. Средство автоматического устранения простейших побочных эффектов, возникающих при переименовании форм, отчетов, таблиц, запросов или полей, а также элементов управления в формах и отчетах. Однако автозамена имен не позволяет исправить все ссылки на переименованные объекты.
Автоматически обновляемая связь. Связь объекта OLE в Microsoft Access с сервером OLE, при которой объект в Microsoft Access автоматически обновляется после каждого изменения данных в исходном файле объекта.
Автофильтр. Применение фильтра к данным в режиме PivotTable® (сводной таблицы) или PivotChart® (сводной диаграммы) путем выбора одного или нескольких элементов в поле, допускающем применение фильтра.
Автоформат. Набор форматов, определяющих вид элементов управления и разделов форм и отчетов.
Адрес гиперссылки. Путь к месту назначения, например к объекту, документу или Web-странице. Адрес гиперссылки может представлять адрес URL (адрес в Internet или intranet) или сетевой путь в формате UNC (к файлу в локальной сети).
Адресуемая база данных. База данных Microsoft Access, на которую пользователь установил ссылку из текущей базы данных. После создания ссылки на базу данных становится возможным вызов процедур из стандартного модуля этой базы данных.
Адресующая база данных. Текущая база данных Microsoft Access, в которой пользователь установил ссылку на другую базу данных Microsoft Access. После создания ссылки на базу данных становится возможным вызов процедур из стандартного модуля этой базы данных.
Активизированная база данных. База данных, созданная в предыдущей версии Microsoft Access, которая была открыта в Microsoft Access 2000 или более поздней версии без преобразования формата. Для изменения структуры базы данных необходимо открыть ее в той версии Access, в которой она была разработана.
Анонимная реплика. Особый тип реплик в базах данных Microsoft Access, для которых не ведется отслеживание отдельных пользователей. Анонимные реплики особенно удобны при работе в Internet, когда ожидается загрузка реплик многими пользователями.
Аргумент макрокоманды. Дополнительные сведения, требуемые для выполнения некоторых макрокоманд, например имя объекта, на который действует макрокоманда, или условие выполнения макрокоманды.
Атрибут XML. Информация, добавляемая в тег, с дополнительными сведениями о нем, например: <ingredient quantity="2"units="cups" → flour</ ingredient → .