Когда речь заходит о системах управления базами данных, часто возникает образ сложных, многоуровневых архитектур, обслуживающих корпоративные гиганты. Однако существует инструмент, который, несмотря на свою доступность, способен стать фундаментом для серьезных академических и практических проектов – Microsoft Access. Позволяя создавать полнофункциональные реляционные базы данных, Access, в сочетании с мощью Visual Basic for Applications (VBA), превращается в идеальную платформу для студенческих курсовых работ, где требуется не только теоретическое понимание принципов СУБД, но и их практическая реализация. Для студентов технических и ИТ-вузов, а также тех, кто осваивает прикладную информатику, владение этим стеком технологий открывает дверь в мир эффективной организации и обработки данных.
Введение: Актуальность, Цели и Задачи Курсовой Работы
В современном мире, пронизанном цифровыми данными, способность эффективно управлять, хранить и обрабатывать информацию становится одним из ключевых навыков для любого специалиста в области информационных технологий. Разработка баз данных в Microsoft Access с использованием Visual Basic for Applications (VBA) остается актуальной задачей в ИТ-образовании, поскольку позволяет студентам на практике освоить фундаментальные принципы построения информационных систем, от проектирования до программной реализации пользовательского интерфейса. Несмотря на появление более мощных серверных СУБД, Access продолжает служить отличной «песочницей» для обучения, предоставляя интегрированную среду, где можно увидеть полный цикл разработки. Это означает, что студент получает уникальный опыт, охватывающий как теоретические аспекты, так и их практическое воплощение, что крайне важно для формирования полноценного специалиста.
Целью данного методологического руководства является разработка исчерпывающего плана по созданию и реализации базы данных в Microsoft Access с применением VBA, который послужит студентам основой для написания курсовой работы. Для достижения этой цели ставятся следующие задачи:
- Раскрыть теоретические основы проектирования реляционных баз данных, включая ER-моделирование и нормализацию.
- Детально рассмотреть Microsoft Access как платформу для разработки, ее архитектуру и ключевые объекты.
- Изучить основы программирования на VBA, акцентируя внимание на объектной модели Access и методах доступа к данным.
- Продемонстрировать пошаговую реализацию конкретной базы данных на примере «Журнала регистрации командировочных удостоверений».
- Осветить вопросы обеспечения целостности, безопасности и оптимизации разработанной базы данных.
- Предоставить рекомендации по отладке, тестированию и документированию VBA-кода и курсовой работы в целом.
Уникальность этого руководства заключается в углубленном рассмотрении аспектов, которые часто остаются за рамками стандартных учебных пособий. Мы не только пройдемся по основам, но и погрузимся в нюансы нормализации до 5НФ, проведем сравнительный анализ DAO и ADO, рассмотрим лучшие практики VBA, включая Option Explicit и преимущества ООП, а также подробно остановимся на комплексных методах безопасности и оптимизации производительности, включая специфические инструменты Access. Это позволит студентам создать не просто рабочую, но и методологически выверенную, продуманную и эффективную базу данных, соответствующую высоким академическим стандартам.
Теоретические Основы Проектирования Реляционных Баз Данных
Прежде чем приступать к практической реализации любой информационной системы, необходимо заложить прочный теоретический фундамент. В случае с базами данных это означает глубокое понимание принципов реляционной модели, методологии ER-моделирования и процесса нормализации. Эти концепции являются краеугольным камнем для создания устойчивой, эффективной и легко поддерживаемой структуры данных, соответствующей строгим академическим и промышленным стандартам. Без них любая попытка построить базу данных обречена на избыточность, аномалии и, в конечном итоге, на неэффективность, что приведет к постоянным проблемам с данными и их обработкой.
Понятие Базы Данных и СУБД: Роль Microsoft Access
В основе любой современной информационной системы лежит база данных – не просто хранилище информации, а тщательно организованный, взаимосвязанный набор данных, предназначенный для эффективного хранения, поиска и управления. Однако сама по себе база данных, будь то стопка бумаг или набор файлов, без управляющего инструментария не сможет реализовать свой потенциал. Именно здесь в игру вступает Система Управления Базами Данных (СУБД) – комплекс программных и языковых средств, выполняющий функции создания, обработки и актуализации данных.
Microsoft Access, входящий в состав пакета Microsoft Office, является ярким представителем полнофункциональных реляционных СУБД. Его уникальность заключается в том, что он объединяет в себе как движок базы данных (Jet/ACE), так и средства разработки интерфейса, что позволяет создавать полноценные настольные приложения, хранящие данные и логику в одном файле с расширением .mdb или .accdb. В отличие от большинства корпоративных СУБД, Access не требует установки отдельного серверного компонента, что делает его идеальным для однопользовательских или небольших многопользовательских приложений, а также для образовательных целей.
Тем не менее, роль Access не ограничивается лишь самостоятельными приложениями. Он может выступать в качестве гибкого клиентского интерфейса (front-end) для более мощных серверных СУБД, таких как Microsoft SQL Server, Oracle или MySQL. В этом сценарии Access предоставляет удобные средства для создания форм, отчетов и VBA-кода, в то время как сами данные хранятся и обрабатываются на мощном сервере. Например, в локальной среде приложения Access 2013 могут размещаться в SharePoint, а данные – в SQL Server 2012. Такая конфигурация значительно повышает управляемость и масштабируемость: SQL Server 2012 способен обрабатывать десятки тысяч запросов в секунду и поддерживать базы данных размером в терабайты, что на порядки превосходит возможности встроенного движка Access. SharePoint же обеспечивает централизованную проверку подлинности, авторизацию и безопасность, снимая эти задачи с Access и позволяя сосредоточиться на логике представления данных. Таким образом, Access демонстрирует свою универсальность, выступая как самостоятельная СУБД, так и как эффективный инструмент для взаимодействия с более сложными серверными решениями, что делает его весьма ценным для изучения.
Реляционная Модель Данных: Таблицы, Ключи и Связи
Сердцем Microsoft Access, как и большинства современных баз данных, является реляционная модель. Эта модель, предложенная Эдгаром Коддом в 1970 году, революционизировала подход к организации данных, предлагая простую, но чрезвычайно мощную концепцию: вся информация представляется в виде двумерных таблиц. Каждая таблица, по сути, является двумерным массивом, где строки представляют собой записи (или кортежи), а столбцы – поля (или атрибуты). Ключевым требованием является однородность: все данные в одном столбце должны быть одного типа (например, числовые, текстовые, даты). Более того, на пересечении строки и столбца должно находиться скалярное значение, то есть одно атомарное значение, а не список или массив.
Фундаментальные структуры реляционной модели включают:
- Таблица: Основной объект для хранения данных, где каждая таблица обычно посвящена одной конкретной тематике (например, «Сотрудники», «Командировки», «Подразделения»).
- Запись (строка): Набор данных, относящихся к одному конкретному экземпляру сущности. Например, одна строка в таблице «Сотрудники» будет содержать информацию об одном сотруднике.
- Поле (столбец): Отдельная именованная характеристика сущности. Например, поля «Фамилия», «Имя», «Должность» в таблице «Сотрудники».
Для обеспечения уникальной идентификации записей и установления логических связей между таблицами используются ключи.
- Первичный ключ (Primary Key): Это одно или несколько полей, значения которых однозначно идентифицируют каждую запись в таблице. Первичный ключ не может содержать повторяющихся значений или значений
NULL. Например, «Табельный номер» может быть первичным ключом для таблицы «Сотрудники». Он является критически важным для поддержания целостности сущностей. - Внешний ключ (Foreign Key): Это одно или несколько полей в одной таблице, которые ссылаются на первичный ключ в другой таблице. Внешние ключи устанавливают отношения между таблицами, обеспечивая ссылочную целостность. Например, поле «КодПодразделения» в таблице «Сотрудники» может быть внешним ключом, ссылающимся на первичный ключ «КодПодразделения» в таблице «Подразделения».
Помимо ключей, важную роль играют индексы. Индекс – это специальная структура данных, которая ускоряет поиск, сортировку и выполнение запросов к базе данных, создавая своего рода «указатели» на местоположение данных. Подобно оглавлению книги, индекс позволяет СУБД быстро находить нужные записи, не сканируя всю таблицу. Access автоматически создает индексы для первичных ключей, но для полей, по которым часто производится поиск, фильтрация или сортировка, создание дополнительных индексов может значительно повысить производительность, особенно при работе с большими объемами данных.
Таблица 1: Пример структуры реляционных таблиц с ключами
| Таблица «Сотрудники» | Поля | Тип данных | Описание | Ключ |
|---|---|---|---|---|
IDСотрудника |
Целое | Уникальный идентификатор сотрудника | PRIMARY KEY | |
Фамилия |
Текст | Фамилия сотрудника | ||
Имя |
Текст | Имя сотрудника | ||
Отчество |
Текст | Отчество сотрудника | ||
КодДолжности |
Целое | Ссылка на Должности | FOREIGN KEY | |
КодПодразделения |
Целое | Ссылка на Подразделения | FOREIGN KEY |
| Таблица «Должности» | Поля | Тип данных | Описание | Ключ |
|---|---|---|---|---|
КодДолжности |
Целое | Уникальный идентификатор должности | PRIMARY KEY | |
НазваниеДолжности |
Текст | Наименование должности |
| Таблица «Подразделения» | Поля | Тип данных | Описание | Ключ |
|---|---|---|---|---|
КодПодразделения |
Целое | Уникальный идентификатор подразделения | PRIMARY KEY | |
НазваниеПодразделения |
Текст | Наименование подразделения |
Отношения (связи) между таблицами устанавливаются на основе общих полей, чаще всего между первичным и внешним ключом. В Access поддерживаются следующие типы связей:
- Один-к-одному (1:1): Каждая запись в первой таблице связана с одной и только одной записью во второй таблице, и наоборот. Встречается редко, часто указывает на возможность объединения таблиц.
- Один-ко-многим (1:M): Каждая запись в первой таблице может быть связана с несколькими записями во второй таблице, но каждая запись во второй таблице связана только с одной записью в первой. Это наиболее распространенный тип связи (например, одно подразделение имеет много сотрудников).
- Многие-ко-многим (M:M): Каждая запись в первой таблице может быть связана с несколькими записями во второй, и каждая запись во второй таблице может быть связана с несколькими записями в первой. В реляционных базах данных такая связь реализуется через промежуточную связующую таблицу (например, много сотрудников могут участвовать во многих проектах через таблицу «Сотрудники_Проекты»).
- Сущность (Entity): Это класс однотипных объектов, информация о которых должна быть учтена в модели. Сущности представляют собой значимые объекты реального мира или концепции, которые можно однозначно идентифицировать. Каждая сущность должна иметь наименование, выраженное существительным в единственном числе (например, «Сотрудник», «Командировка», «Отдел»).
- Экземпляр сущности: Конкретный представитель сущности. Например, «Иванов Иван Иванович» – это экземпляр сущности «Сотрудник». Важно, чтобы экземпляры сущностей были различимы, то есть сущности должны иметь уникальные свойства (первичный ключ в будущей таблице).
- Атрибут сущности: Именованная характеристика, являющаяся свойством сущности. Атрибуты описывают детали сущности. Например, для сущности «Сотрудник» атрибутами могут быть «Фамилия», «Имя», «ДатаРождения», «Должность». Атрибуты делятся на:
- Простые: Не могут быть далее разбиты (например, «Имя»).
- Составные: Могут быть разбиты на более мелкие части (например, «Адрес» можно разбить на «Улица», «Город», «Индекс»).
- Однозначные: Имеют одно значение для экземпляра сущности (например, «ДатаРождения»).
- Многозначные: Могут иметь несколько значений для экземпляра сущности (например, «ТелефонныйНомер» – если у сотрудника несколько номеров).
- Производные: Могут быть вычислены из других атрибутов (например, «Возраст» из «ДатыРождения»).
- Ключевые: Атрибуты, или их комбинация, которые уникально идентифицируют каждый экземпляр сущности (будущий первичный ключ).
- Связь (Relationship): Это ассоциация между двумя или более сущностями. Связи описывают, как сущности взаимодействуют или соотносятся друг с другом. Каждая связь имеет:
- Имя: Глагол или глагольная фраза, описывающая взаимодействие (например, «работает в», «совершает»).
- Степень: Количество сущностей, участвующих в связи (чаще всего бинарные связи между двумя сущностями).
- Мощность (кардинальность): Определяет количество экземпляров одной сущности, связанных с экземплярами другой сущности. Основные типы:
- Один-к-одному (1:1): Один экземпляр сущности А связан с одним экземпляром сущности Б, и наоборот.
- Один-ко-многим (1:М): Один экземпляр сущности А связан с несколькими экземплярами сущности Б, но каждый экземпляр сущности Б связан только с одним экземпляром сущности А.
- Многие-ко-многим (М:М): Один экземпляр сущности А связан со многими экземплярами сущности Б, и один экземпляр сущности Б связан со многими экземплярами сущности А.
Корректное определение таблиц, ключей и связей является основой для создания логичной, непротиворечивой и эффективной базы данных, что значительно упрощает дальнейшую разработку и эксплуатацию.
Моделирование Сущность-Связь (ER-модель)
Проектирование базы данных – это многоступенчатый процесс, начинающийся задолго до того, как будет написана первая строка кода или создана первая таблица. На самом раннем этапе, называемом концептуальным проектированием, крайне важно абстрагироваться от конкретных технических решений и сосредоточиться на самой предметной области: какие объекты существуют, какие характеристики они имеют и как они взаимодействуют между собой. Именно для этой цели была разработана Модель Сущность-Связь (Entity-Relationship model, ER-модель), которая позволяет описывать концептуальные схемы предметной области.
ER-модель предоставляет мощный графический язык для визуализации этих абстрактных понятий через ER-диаграммы. Это не просто чертеж, а стратегический план, который помогает разработчику и заказчику говорить на одном языке, четко выделять ключевые сущности и обозначать связи между ними до того, как будет определена конкретная логическая структура данных.
Основные компоненты ER-модели:
Пример ER-диаграммы (упрощенная нотация):
+----------------+ +-------------------+ +--------------------+
| Сотрудник | | Командировка | | Подразделение |
+----------------+ +-------------------+ +--------------------+
| IDСотрудника (PK)|-----| IDКомандировки (PK)| | IDПодразделения (PK)|
| Фамилия | | IDСотрудника (FK) | | Название |
| Имя | | ДатаНачала | | |
| IDПодразделения (FK)| | ДатаОкончания |
+----------------+ | Цель |
+-------------------+
В процессе проектирования баз данных, схема, созданная на основе ER-модели, играет роль моста, преобразуясь в конкретную логическую схему реляционной базы данных (набор таблиц со столбцами и связями), а затем и в физическую реализацию в СУБД. Это позволяет обеспечить структурную целостность и логическую согласованность данных еще до этапа кодирования, минимизируя риски ошибок на поздних стадиях разработки.
Нормализация Баз Данных: От 1НФ до 5НФ с Практическими Аспектами
Нормализация – это, по сути, искусство организации данных в базе данных. Это не просто свод правил, а методологический процесс, который включает создание таблиц и установление отношений между ними в соответствии с набором формальных правил, известных как нормальные формы. Главная цель нормализации – защита данных от логических несоответствий и аномалий, а также повышение гибкости базы данных за счет устранения избыточности и несогласованных зависимостей. Таким образом, нормализация является ключевым этапом, определяющим качество и долговечность информационной системы.
Почему избыточность данных – это зло? Она приводит не только к непродуктивному расходованию дискового пространства, но, что гораздо важнее, затрудняет обслуживание баз данных и порождает так называемые аномалии изменения:
- Аномалии обновления (модификации): Возникают, когда при изменении одного факта требуется обновить данные в нескольких местах. Если обновление неполное, это приводит к несогласованности данных. Например, если должность сотрудника хранится в нескольких таблицах, и в одной из них она не будет обновлена, возникнет противоречие.
- Аномалии вставки: Происходят, когда невозможно добавить новую запись без наличия информации, которая еще не существует. Например, невозможно добавить информацию о новом отделе, пока в нем не появится хотя бы один сотрудник, если данные об отделе являются частью таблицы сотрудников.
- Аномалии удаления: Случаются, когда удаление одной записи приводит к потере другой, необходимой информации. Например, при удалении последнего сотрудника из отдела теряется вся информация об этом отделе.
Нормализация помогает избежать всех этих проблем, приводя структуру базы данных к виду, обеспечивающему минимальную избыточность. Существует несколько нормальных форм, каждая из которых накладывает более строгие правила на структуру таблицы. База данных считается нормализованной, если она находится как минимум в Третьей Нормальной Форме (3НФ), так как 3НФ устраняет достаточное количество аномалий при сохранении приемлемой производительности и удобства использования.
Рассмотрим основные нормальные формы последовательно:
1. Первая Нормальная Форма (1НФ)
Таблица находится в 1НФ, если:
- Каждое поле (столбец) содержит атомарные (неделимые) значения. На пересечении строк и столбцов должны быть скалярные значения.
- В таблице нет дублирующих строк (каждая строка уникальна).
- В столбце хранятся данные одного типа.
- Отсутствуют массивы и списки внутри ячеек.
Пример нарушения 1НФ:
| ЗаказID | Клиент | Товары | Количество |
|---|---|---|---|
| 101 | ООО «Альфа» | Мышь, Клавиатура | 2, 1 |
Здесь поле «Товары» и «Количество» содержат списки, что нарушает 1НФ.
Приведение к 1НФ:
| ЗаказID | Клиент | Товар | Количество |
|---|---|---|---|
| 101 | ООО «Альфа» | Мышь | 2 |
| 101 | ООО «Альфа» | Клавиатура | 1 |
2. Вторая Нормальная Форма (2НФ)
Таблица находится в 2НФ, если она уже находится в 1НФ, и каждый неключевой столбец функционально полностью зависит от всего первичного ключа. Это правило особенно важно для таблиц с составным первичным ключом. Если часть неключевых атрибутов зависит только от части составного ключа, их следует вынести в отдельную таблицу.
Пример нарушения 2НФ:
| ЗаказID (PK) | ТоварID (PK) | НазваниеТовара | ЦенаЕдиницы | Количество |
|---|---|---|---|---|
| 101 | 201 | Мышь | 1000 | 2 |
| 101 | 202 | Клавиатура | 2500 | 1 |
Здесь НазваниеТовара и ЦенаЕдиницы зависят только от ТоварID, а не от всего составного ключа (ЗаказID, ТоварID).
Приведение к 2НФ:
Таблица «ДеталиЗаказа» (составной ключ (ЗаказID, ТоварID)):
| ЗаказID (PK) | ТоварID (PK) | Количество |
|---|---|---|
| 101 | 201 | 2 |
| 101 | 202 | 1 |
Таблица «Товары» (ТоварID — PK):
| ТоварID (PK) | НазваниеТовара | ЦенаЕдиницы |
|---|---|---|
| 201 | Мышь | 1000 |
| 202 | Клавиатура | 2500 |
3. Третья Нормальная Форма (3НФ)
Таблица находится в 3НФ, если она уже находится в 2НФ, и все неключевые атрибуты не имеют транзитивных зависимостей от первичного ключа. То есть, каждый неключевой столбец должен зависеть только от первичного ключа, и ни от какого другого неключевого столбца.
Пример нарушения 3НФ:
| СотрудникID (PK) | ФИО | ОтделID | НазваниеОтдела |
|---|---|---|---|
| 1 | Иванов | 10 | Продажи |
| 2 | Петров | 20 | Маркетинг |
Здесь НазваниеОтдела зависит от ОтделID, который сам не является первичным ключом, а лишь неключевым атрибутом. Это транзитивная зависимость.
Приведение к 3НФ:
Таблица «Сотрудники» (СотрудникID — PK):
| СотрудникID (PK) | ФИО | ОтделID (FK) |
|---|---|---|
| 1 | Иванов | 10 |
| 2 | Петров | 20 |
Таблица «Отделы» (ОтделID — PK):
| ОтделID (PK) | НазваниеОтдела |
|---|---|
| 10 | Продажи |
| 20 | Маркетинг |
Достижение 3НФ часто является практическим компромиссом между устранением избыточности и сложностью проектирования/производительностью. Для большинства бизнес-приложений 3НФ считается достаточной. Однако существуют более строгие нормальные формы, которые рассматриваются в продвинутом проектировании баз данных.
4. Нормальная Форма Бойса-Кодда (БКНФ)
БКНФ является более строгой версией 3НФ. Таблица находится в БКНФ, если она находится в 3НФ, и каждый детерминант является потенциальным ключом. Детерминант – это атрибут или набор атрибутов, от которых функционально зависят другие атрибуты. БКНФ устраняет все функциональные зависимости, где детерминант не является потенциальным ключом. Она применяется, когда в таблице есть несколько потенциальных (кандидатных) ключей, которые пересекаются.
5. Четвертая Нормальная Форма (4НФ)
Таблица находится в 4НФ, если она находится в БКНФ и не содержит многозначных зависимостей. Многозначная зависимость возникает, когда в одной таблице хранится несколько независимых многозначных фактов об одной сущности. Например, если у сотрудника может быть несколько навыков и несколько проектов, и эти списки независимы, то хранение их в одной таблице нарушает 4НФ.
6. Пятая Нормальная Форма (5НФ) (или проекционно-присоединительная нормальная форма)
Таблица находится в 5НФ, если она находится в 4НФ и не содержит зависимостей соединения (join dependency). Это самая строгая нормальная форма, которая гарантирует, что потеря информации не произойдет при разложении таблицы, если она не может быть восстановлена путем естественного соединения результирующих таблиц. 5НФ используется крайне редко, поскольку на практике ее достижение часто приводит к чрезмерному количеству таблиц и сложным запросам.
Практические аспекты и компромиссы:
Хотя дальнейшая нормализация до БКНФ, 4НФ или 5НФ теоретически устраняет больше избыточности, на практике она может потребовать создания большего количества таблиц и, как следствие, более сложных запросов с использованием множественных JOIN-операций. Это может незначительно снизить производительность при выборке данных, поскольку СУБД придется объединять данные из многих таблиц. Поэтому в реальных проектах часто выбирают денормализацию (контролируемое введение избыточности) для повышения производительности, особенно для систем, ориентированных на OLAP (аналитическая обработка). Однако для OLTP (операционная обработка транзакций), где важна целостность данных при частых изменениях, высокий уровень нормализации предпочтителен. Для курсовой работы рекомендуется стремиться к достижению 3НФ как минимум, а при наличии сложных многозначных или пересекающихся ключей рассмотреть возможность применения БКНФ. Это обеспечит прочную, надежную и легко поддерживаемую структуру базы данных.
Microsoft Access как Платформа для Разработки Баз Данных
Разработка базы данных в Access – это комплексный процесс, который включает в себя не только проектирование логической структуры данных, но и создание всех необходимых компонентов для взаимодействия с ними. Access предоставляет интегрированную среду, где все эти задачи можно выполнить в рамках одного приложения. Понимание его архитектуры и основных объектов является ключевым для эффективной реализации курсовой работы, поскольку позволяет максимально использовать потенциал данной СУБД.
Архитектура и Объекты Access
Microsoft Access – это не просто программа для создания таблиц, а полнофункциональная реляционная СУБД, интегрированная в экосистему Microsoft Office. Она предоставляет комплексные средства для разработки и управления базами данных, охватывающие как определение, так и обработку данных. Одной из ключевых особенностей Access является его «всё-в-одном» подход: в одном файле (с расширением .mdb для старых версий или .accdb для современных) могут храниться не только сами данные, но и все объекты интерфейса, запросы, отчеты, макросы и программный код. Это значительно упрощает создание, распространение и развертывание приложений баз данных для небольших и средних проектов.
Несмотря на свою самодостаточность, Access может выступать в роли «надстройки» или клиентского интерфейса (front-end) к более мощным серверным системам, таким как Microsoft SQL Server, Oracle или MySQL. В этом режиме Access обрабатывает пользовательский интерфейс и бизнес-логику, написанную на VBA, в то время как данные хранятся и управляются серверной СУБД (back-end). Это позволяет использовать удобство разработки Access, одновременно масштабируя хранилище данных и обеспечивая надежность, безопасность и высокую производительность серверного решения для большого количества пользователей. Например, начиная с Access 2013, при размещении приложений в SharePoint данные могут храниться в SQL Server 2012, что кардинально повышает управляемость и масштабируемость, позволяя серверу обрабатывать десятки тысяч запросов в секунду и поддерживать терабайтные базы данных. Какие возможности это открывает для корпоративного использования и масштабирования?
База данных в Access состоит из следующих основных типов объектов, каждый из которых выполняет свою специфическую функцию:
- Таблицы: Фундаментальные объекты для хранения данных в виде записей (строк) и полей (столбцов). Это основа любой реляционной БД. Каждая таблица посвящена одной сущности (например, «Сотрудники», «Командировки»).
- Запросы: Мощный инструмент для извлечения, просмотра, анализа, изменения или создания данных из одной или нескольких таблиц. Результат запроса всегда представляется в виде таблицы. Запросы могут служить источником записей для форм и отчетов.
- Формы: Объекты пользовательского интерфейса, предназначенные для удобного ввода, отображения и изменения данных. Они обеспечивают дружественное взаимодействие пользователя с базой данных, скрывая сложность табличной структуры.
- Отчеты: Предназначены для представления данных в определенной форме или шаблоне после подсчета, анализа или суммирования. Идеальны для печати, создания сводных документов или экспорта информации.
- Макросы: Упрощенные программные последовательности, позволяющие автоматизировать рутинные задачи без написания кода VBA. Могут выполнять действия, такие как открытие формы, запуск запроса, печать отчета.
- Модули: Место хранения программного кода, написанного на Visual Basic for Applications (VBA). Модули содержат процедуры и функции, которые расширяют функциональность базы данных, автоматизируют сложные задачи и реагируют на события.
Важно отметить, что объекты типа «Страница» (Data Access Pages), которые ранее использовались для создания веб-интерфейсов, были удалены из Access начиная с версии 2010. В современных версиях Access (формат .accdb) основными типами объектов, с которыми предстоит работать, являются таблицы, запросы, формы, отчеты, макросы и модули.
Создание и Управление Таблицами
Таблицы являются краеугольным камнем любой реляционной базы данных. Именно в них хранится вся информация в организованной, структурированной форме. В Microsoft Access существует несколько способов создания таблиц, но для курсовой работы, требующей точности и контроля над структурой данных, наиболее предпочтителен режим конструктора.
Пошаговое руководство по созданию таблиц:
- Открытие режима конструктора: В окне Access перейдите на вкладку «Создание» и выберите «Конструктор таблиц». Откроется новое окно, где вы сможете определить структуру вашей таблицы.
- Определение полей: Для каждого поля необходимо указать:
- Имя поля: Должно быть уникальным в пределах таблицы, начинаться с буквы, не содержать пробелов или знаков пунктуации, кроме знака подчеркивания. Рекомендуется использовать осмысленные имена (например,
IDСотрудника,Фамилия,ДатаРождения). - Тип данных: Это один из важнейших параметров, определяющий, какого рода информация будет храниться в поле. Правильный выбор типа данных обеспечивает целостность, эффективность хранения и корректность операций. Access предлагает широкий спектр типов данных, включая:
- Короткий текст (Short Text): До 255 символов. Для текстовых данных небольшой длины (имена, фамилии, названия).
- Длинный текст (Long Text): Для больших объемов текста, таких как описания или примечания.
- Числовой (Number): Для числовых значений. Может быть
Байт(0-255),Целое(-32768 до 32767),Длинное целое(-2147483648 до 2147483647),Одинарное(плавающая точка),Двойное(плавающая точка двойной точности). - Дата/время (Date/Time): Для хранения дат и времени.
- Денежный (Currency): Для денежных значений с фиксированной точностью.
- Автонумерация (AutoNumber): Автоматически генерируемое уникальное числовое значение. Идеально подходит для первичных ключей.
- Да/Нет (Yes/No): Логический тип данных (True/False).
- OLE-объект (OLE Object): Для хранения объектов из других приложений (например, изображений, документов Word).
- Гиперссылка (Hyperlink): Для хранения ссылок на веб-страницы, файлы.
- Вложение (Attachment): Для прикрепления файлов к записи.
- Вычисляемое поле (Calculated Field): Поле, значение которого вычисляется на основе других полей в той же таблице.
- Описание: Необязательное, но крайне полезное поле для краткого пояснения назначения поля.
- Имя поля: Должно быть уникальным в пределах таблицы, начинаться с буквы, не содержать пробелов или знаков пунктуации, кроме знака подчеркивания. Рекомендуется использовать осмысленные имена (например,
- Настройка свойств поля: В нижней части окна конструктора можно настроить дополнительные свойства для каждого поля:
- Размер поля: Для текстовых и числовых полей определяет максимальный размер или тип числового значения.
- Формат поля: Задает способ отображения данных (например, для дат –
Краткий формат даты). - Маска ввода: Шаблон для ввода данных (например, для телефонных номеров).
- Подпись: Текст, который будет отображаться в заголовках столбцов форм и отчетов вместо имени поля.
- Значение по умолчанию: Значение, которое автоматически вводится в поле при создании новой записи.
- Условие на значение: Правило, которое данные должны удовлетворять при вводе.
- Сообщение об ошибке: Текст сообщения, которое отображается при нарушении условия на значение.
- Обязательное поле: Определяет, можно ли оставить поле пустым.
- Индексированное поле: Указывает, нужно ли создавать индекс для этого поля. Для первичных ключей индекс создается автоматически.
- Установка первичного ключа: Для каждой таблицы необходимо определить первичный ключ, который будет однозначно идентифицировать каждую запись. Для этого выделите поле (или несколько полей) и нажмите кнопку «Ключевое поле» на вкладке «Конструктор таблицы». Чаще всего для этого используется поле с типом «Автонумерация».
- Сохранение таблицы: После определения всех полей и их свойств сохраните таблицу, присвоив ей осмысленное имя (например,
tblСотрудники).
После создания таблиц и определения первичных ключей следующим важным шагом является установление связей между ними. Для этого используется окно «Схема данных» (вкладка «Работа с базами данных» -> «Схема данных»). Перетаскивая поля первичных ключей на соответствующие поля внешних ключей в других таблицах, вы создаете отношения. При этом крайне рекомендуется включить «Обеспечение целостности данных», «Каскадное обновление связанных полей» и «Каскадное удаление связанных записей» (с осторожностью!), что гарантирует логическую согласованность данных во всей базе данных.
Разработка Запросов для Извлечения и Модификации Данных
Запросы являются одним из наиболее мощных и гибких инструментов в Access. Это не просто вопросы к базе данных, а полноценные команды, которые позволяют извлекать, просматривать, анализировать, изменять или даже создавать новые данные из одной или нескольких таблиц. Результат выполнения любого запроса всегда представляется в виде таблицы, которую можно использовать для дальнейшей обработки, отображения в формах или печати в отчетах. Запросы в Access можно создавать с помощью мастера или в режиме конструктора SQL, который предоставляет более тонкий контроль.
В зависимости от цели, запросы делятся на несколько основных типов:
- Запросы на выборку (SELECT-запросы):
- Назначение: Основной тип запросов, предназначенный для извлечения данных, удовлетворяющих определенным условиям отбора, из одной или нескольких таблиц.
- Пример: Выбрать фамилии, имена и должности всех сотрудников из отдела «Продажи», родившихся после 1 января 1990 года.
- Реализация: В режиме конструктора запросов выбираются необходимые таблицы, поля для вывода, задаются условия отбора (критерии) и порядок сортировки.
- Запросы на создание таблицы (MAKE-TABLE-запросы):
- Назначение: Извлекают данные из существующих таблиц или других запросов и сохраняют результат в новой, постоянной таблице. Этот тип запросов часто используется для:
- Архивирования данных: Например, сохранение данных о закрытых проектах в отдельную архивную таблицу.
- Создания временных таблиц: Для сложных расчетов, где промежуточные резу��ьтаты удобнее хранить в отдельной таблице, а затем использовать ее в других запросах.
- Создания отчетов: Когда требуется создать статичный «снимок» данных для последующего анализа без риска изменения исходных данных.
- Пример: Создать таблицу «АрхивКомандировок» со всеми командировками, завершенными до текущей даты.
- Реализация: Создается запрос на выборку, затем на вкладке «Конструктор запросов» выбирается тип «Создание таблицы» и указывается имя новой таблицы.
- Назначение: Извлекают данные из существующих таблиц или других запросов и сохраняют результат в новой, постоянной таблице. Этот тип запросов часто используется для:
- Запросы на изменение (ACTION-запросы):
Эти запросы модифицируют данные в таблицах и являются мощными инструментами для пакетной обработки. Они требуют особой осторожности, так как изменения необратимы (если не используются транзакции).- Запрос на обновление (UPDATE-запрос):
- Назначение: Изменяет значения в одном или нескольких полях существующих записей, удовлетворяющих заданным условиям.
- Пример: Увеличить зарплату всем сотрудникам отдела «Разработка» на 10%.
- Реализация: В конструкторе запросов выбирается тип «Обновление», указываются поля для обновления и новые значения, а также условия отбора записей.
- Запрос на добавление (APPEND-запрос):
- Назначение: Добавляет новые записи в конец существующей таблицы. Источником данных могут быть другие таблицы или запросы.
- Пример: Добавить все новые сотрудники из временной таблицы «НовыеСотрудники» в основную таблицу «Сотрудники».
- Реализация: Выбирается тип «Добавление», указывается целевая таблица и поля, в которые будут вставляться данные.
- Запрос на удаление (DELETE-запрос):
- Назначение: Удаляет записи из одной или нескольких таблиц, которые соответствуют заданным условиям.
- Пример: Удалить все записи о сотрудниках, уволенных до 1 января 2024 года.
- Реализация: Выбирается тип «Удаление» и задаются условия отбора записей, подлежащих удалению.
- Запрос на обновление (UPDATE-запрос):
Таблица 2: Основные типы запросов в Access
| Тип Запроса | Назначение | Применение |
|---|---|---|
| Выборка | Извлечение данных из одной или нескольких таблиц по заданным условиям. | Получение списка сотрудников, фильтрация заказов по дате, расчет агрегированных значений (суммы, средние) |
| Создание таблицы | Извлечение данных и сохранение их в новой постоянной таблице. | Архивирование старых данных, создание промежуточных таблиц для сложных отчетов. |
| Обновление | Изменение значений в существующих записях таблицы. | Пакетное изменение статусов, пересчет полей, корректировка данных. |
| Добавление | Добавление новых записей из одной или нескольких таблиц в конец существующей таблицы. | Перемещение данных между таблицами, импорт новых записей. |
| Удаление | Удаление записей из одной или нескольких таблиц. | Очистка устаревших данных, удаление неактуальных записей. |
При создании запросов важно помнить о:
- Оптимизации: Избегайте использования
SELECT *(выбирайте только необходимые поля), используйте индексы на полях, по которым производится фильтрация и сортировка. - Параметризации: Создавайте запросы с параметрами, чтобы пользователь мог вводить значения для фильтрации во время выполнения.
- Использовании выражений: Access поддерживает мощные выражения для вычисляемых полей и сложных условий отбора.
Правильное использование запросов позволяет не только эффективно манипулировать данными, но и является основой для построения динамических форм и отчетов, что критически важно для функциональности курсовой работы.
Проектирование Пользовательского Интерфейса: Формы и Отчеты
Пользовательский интерфейс – это лицо базы данных, через которое пользователи взаимодействуют с данными. В Microsoft Access эту роль выполняют формы и отчеты. Формы предназначены для интерактивного ввода, просмотра и изменения данных, обеспечивая дружественное и интуитивно понятное взаимодействие. Отчеты же служат для представления данных в структурированном, часто печатном виде, для анализа, суммирования и вывода информации. Эффективное проектирование этих объектов интерфейса является залогом удобства и функциональности всей системы.
1. Проектирование Форм
Формы – это не просто окна для ввода данных; они представляют собой мощные инструменты для управления информацией, способные скрывать сложность базовых таблиц и предоставлять пользователю только необходимый функционал.
Методика создания эффективных форм:
- Назначение:
- Ввод данных: Обеспечение контролируемого и валидированного ввода новой информации.
- Просмотр данных: Отображение записей в удобном для чтения формате, часто с детализацией.
- Изменение данных: Редактирование существующих записей.
- Навигация: Предоставление средств для перемещения между записями и объектами БД.
- Выполнение действий: Запуск запросов, отчетов или VBA-кода через кнопки и другие элементы управления.
- Способы создания форм:
- Мастер форм: Быстрый способ создания стандартных форм. Мастер задает вопросы о полях, таблицах/запросах и макете, а затем генерирует форму. Идеально для простых форм без сложной логики.
- Конструктор форм: Наиболее гибкий способ, позволяющий точно настроить макет, добавить любые элементы управления и интегрировать VBA-код. Именно этот режим рекомендуется для курсовой работы, так как он дает полный контроль над дизайном и функциональностью.
- Ключевые аспекты в конструкторе форм:
- Выбор источника записей: Форма должна быть привязана к таблице или запросу, из которых она будет извлекать и в которые будет сохранять данные.
- Элементы управления:
- Поля: Для отображения и ввода данных.
- Надписи: Для заголовков и пояснений.
- Кнопки: Для выполнения действий (открытие других форм/отчетов, запуск макросов/VBA-кода, сохранение, удаление).
- Списки и поля со списком: Для выбора значений из предопределенного списка или из другой таблицы, что повышает целостность данных и удобство.
- Флажки, переключатели, группы переключателей: Для логических значений или выбора из нескольких вариантов.
- Вкладки: Для организации большого количества информации на нескольких страницах одной формы.
- Размещение элементов: Грамотное и логичное расположение элементов управления на форме, обеспечение читаемости и удобства использования.
- Вычисляемые поля: Создание полей, значения которых вычисляются на основе других полей формы или таблицы (например,
[Количество] * [Цена]). - Графические элементы: Добавление изображений, линий, прямоугольников для улучшения эстетики и юзабилити.
- Разделенные формы: Access позволяет создавать формы, которые одновременно отображают данные в двух представлениях: в виде отдельной записи и в табличном виде (таблица данных). Это очень удобно для одновременного просмотра общей картины и детальной информации о текущей записи.
- Обработчики событий: Назначение VBA-кода на различные события формы и ее элементов (например,
OnClickдля кнопки,AfterUpdateдля поля).
2. Проектирование Отчетов
Отчеты предназначены для эффективного представления данных, часто в печатном виде. Они могут суммировать информацию, выполнять сложные расчеты и форматировать данные для лучшего восприятия.
Методика создания эффективных отчетов:
- Назначение:
- Печать: Подготовка данных для печати (например, список командировочных удостоверений).
- Сводная информация: Представление агрегированных данных (например, количество командировок по отделам).
- Анализ: Группировка и сортировка данных для выявления тенденций.
- Документирование: Создание официальных документов на основе данных БД (например, само командировочное удостоверение).
- Способы создания отчетов:
- Мастер отчетов: Аналогично формам, позволяет быстро создать отчет, отвечая на вопросы о полях, группировке и сортировке.
- Конструктор отчетов: Дает полный контроль над макетом, группировкой, сортировкой, расчетами и размещением элементов. Рекомендуется для курсовой работы.
- Ключевые аспекты в конструкторе отчетов:
- Источник записей: Отчет также привязывается к таблице или запросу. Часто запросы используются для предварительной подготовки данных (фильтрация, сортировка, агрегация).
- Разделы отчета: Отчеты имеют специфическую структуру с разделами:
- Заголовок отчета: Отображается один раз в начале отчета.
- Верхний колонтитул страницы: Отображается в верхней части каждой страницы.
- Верхний колонтитул группы: Отображается перед каждой новой группой записей.
- Область данных: Содержит сами записи.
- Нижний колонтитул группы: Отображается после каждой группы записей.
- Нижний колонтитул страницы: Отображается в нижней части каждой страницы.
- Примечание отчета: Отображается один раз в конце отчета.
- Группировка и сортировка: Эти функции позволяют организовать данные в отчете по определенным критериям (например, группировка командировок по сотрудникам или по датам).
- Вычисляемые элементы: В отчетах можно создавать текстовые поля, которые выполняют расчеты (например,
Sum([КоличествоДней])для общего количества дней командировок). - Форматирование: Настройка шрифтов, цветов, границ, размещение элементов для создания профессионального вида отчета.
Эффективный интерфейс, созданный с помощью форм и отчетов, не только облегчает работу пользователя, но и демонстрирует глубокое понимание принципов проектирования пользовательских приложений в рамках курсовой работы, что является показателем высокого уровня компетенции.
Программирование на Visual Basic for Applications (VBA) в Access
Для того чтобы база данных из простого хранилища данных превратилась в полноценное интерактивное приложение, необходимо добавить логику и автоматизацию. Именно здесь на сцену выходит Visual Basic for Applications (VBA) – язык программирования, который является общим для всех приложений Microsoft Office. В Access VBA не просто расширяет функциональность, он позволяет создавать полномасштабные приложения, автоматизировать рутинные задачи, реализовывать сложную бизнес-логику и создавать динамический пользовательский интерфейс.
Введение в VBA: Основы Синтаксиса и Концепции
Visual Basic for Applications (VBA) – это мощный, но относительно простой в освоении язык программирования, который встроен непосредственно в Microsoft Access. В отличие от некоторых компилируемых языков, таких как C++ или Java, VBA является интерпретируемым языком. Это означает, что код выполняется построчно во время работы программы, без необходимости предварительной полной компиляции в машинный код. Это обеспечивает быструю разработку и отладку, поскольку изменения можно сразу тестировать. Однако стоит отметить, что интерпретируемость может привести к более медленному выполнению по сравнению с компилируемыми языками, особенно для больших и сложных программных модулей.
Модель программирования в Access является событийно-управляемой. Это означает, что программа не выполняется линейно от начала до конца, а реагирует на определенные события, которые происходят в системе или от пользователя (например, щелчок по кнопке, изменение значения в поле, открытие формы). Каждое такое событие может запускать специальный программный блок – обработчик событий.
Переменные и Константы:
В основе любой программы лежит способность хранить и манипулировать данными. Для этого в VBA используются переменные и константы.
- Переменные: Используются для хранения временных значений, передачи параметров между процедурами и выполнения вычислений. Переменные должны быть объявлены, прежде чем их можно будет использовать.
- Объявление переменных: Осуществляется с помощью оператора
Dim.
Dim MyVariable As Integer Dim EmployeeName As String Dim CurrentDate As Date- Имена переменных: Должны начинаться с буквы, не могут содержать пробелов или знаков пунктуации (кроме знака подчеркивания
_), не могут быть зарезервированными словами VBA или содержать символы, @ ! # $ . %. Максимальная длина имени – 255 символов. - Типы данных: Явное указание типа данных является критически важным для эффективности и надежности кода. VBA предлагает различные типы данных, каждый из которых имеет свой диапазон значений и объем памяти:
Byte: Целые числа от 0 до 255 (1 байт).Integer: Целые числа от -32768 до 32767 (2 байта).Long: Целые числа от -2147483648 до 2147483647 (4 байта).Single: Числа с плавающей запятой одинарной точности (4 байта).Double: Числа с плавающей запятой двойной точности (8 байт).Currency: Денежные значения с фиксированной точностью (8 байт).Date: Даты и время (8 байт).Boolean:TrueилиFalse(2 байта).String: Строки переменной длины (10 байт + длина строки) или фиксированной длины.Variant: Универсальный тип данных, который может хранить любой тип информации (числа, строки, даты, объекты). Если тип данных переменной не указывается явно, по умолчанию VBA используетVariant.
Важность явного объявления переменных и
Option Explicit:
Использование типа данныхVariantбез явного объявления, хотя и удобно, может привести к повышенному расходу оперативной памяти (до 22 байт на переменную против 2-4 байт дляInteger/Long) и снижению производительности, поскольку VBA приходится выполнять дополнительные операции для определения и преобразования типа данных во время выполнения. Более того, неявное объявление переменных является одной из основных причин трудноуловимых ошибок (например, опечатка в имени переменной приведет к созданию новой переменной вместо использования существующей). Для предотвращения таких проблем настоятельно рекомендуется использовать директивуOption Explicitв каждом модуле. Эта декларация, расположенная в разделе описаний модуля, требует явного объявления всех переменных с помощью оператораDim. Если переменная не объявлена, VBE (Visual Basic Editor) выдаст ошибку компиляции, что значительно упрощает отладку и повышает надежность кода.- Константы: Используются для хранения значений, которые не изменяются в процессе выполнения программы. Объявляются с помощью оператора
Const.
Const PI As Double = 3.1415926535 Const MaxAttempts As Integer = 3Глубокое понимание этих базовых концепций является первым шагом к эффективному программированию на VBA в Access.
Процедуры, Функции и Объектная Модель Access
В VBA весь программный код организуется в виде процедур и функций. Эти строительные блоки позволяют структурировать код, повысить его читаемость и обеспечить повторное использование.
- Процедуры (Sub Procedures):
Процедура – это фрагмент кода, который выполняет определенный набор действий, но не возвращает никакого значения. Процедуры объявляются с помощью операторовSubиEnd Sub.
Sub MyFirstProcedure() ' Этот код выполняет какое-то действие MsgBox "Привет, мир!" Dim x As Integer x = 10 Debug.Print "Значение x: " & x End SubПроцедуры могут принимать аргументы (параметры), которые передаются им для обработки.
Sub GreetUser(UserName As String) MsgBox "Добро пожаловать, " & UserName & "!" End Sub ' Вызов процедуры Call GreetUser("Иван")- Функции (Function Procedures):
Функция, в отличие от процедуры, выполняет набор действий и возвращает значение. Имя функции выступает в качестве переменной, которой присваивается возвращаемое значение. Функции объявляются с помощью операторовFunctionиEnd Function.
Function SumNumbers(a As Integer, b As Integer) As Integer SumNumbers = a + b ' Присваиваем возвращаемое значение имени функции End Function ' Вызов функции Dim result As Integer result = SumNumbers(5, 7) MsgBox "Сумма чисел: " & result ' Выведет 12Функции часто используются для вычислений, валидации или получения конкретных значений.
Объектная Модель Access:
Microsoft Access, как и все приложения Office, предоставляет богатую объектную модель, которая представляет собой иерархическую структуру всех элементов приложения, доступных для программного управления. Каждый элемент (форма, отчет, таблица, поле, кнопка) является объектом, который обладает определенными свойствами (характеристиками) и методами (действиями, которые он может выполнять).- Объекты: Строительные блоки, из которых состоит приложение. Например,
Application(само приложение Access),Form(отдельная форма),Report(отдельный отчет),TextBox(текстовое поле на форме),CommandButton(кнопка). - Свойства: Характеристики объекта, которые можно прочитать или изменить. Например, свойство
.Captionдля кнопки (текст на кнопке),.Valueдля текстового поля (содержимое поля),.Visible(видимость объекта),.Enabled(доступность объекта).
' Установить заголовок формы Me.Caption = "Моя Форма" ' Установить значение текстового поля Me.txtLastName.Value = "Иванов"- Методы: Действия, которые объект может выполнять. Например, метод
.OpenFormдля объектаDoCmd(открыть форму),.SetFocusдля элемента управления (передать фокус),.Closeдля формы/отчета (закрыть).
' Открыть форму "frmEmployees" DoCmd.OpenForm "frmEmployees" ' Передать фокус на текстовое поле Me.txtFirstName.SetFocusРабота с переменными-объектами:
Для более эффективной работы с объектами в VBA часто используются переменные-объекты. Для них необходимо не только объявить тип данных (например,As Form,As Recordset), но и назначить соответствующий объект с помощью оператораSet.Dim frm As Form Set frm = Forms!frmMyForm ' Назначить переменную-объект frm.txtField.Value = "Новое значение" ' Использовать переменную-объектИспользование переменных-объектов делает код более читаемым, а также, в некоторых случаях, более производительным, поскольку VBA не нужно каждый раз искать ссылку на объект в иерархии.
Понимание иерархии объектов Access и умение работать с их свойствами и методами – это ключ к созданию динамичных и интерактивных приложений на VBA.
Работа с Данными через DAO и ADO
Основой любого приложения базы данных является работа с самими данными: их чтение, запись, изменение и удаление. В Access для этих целей используются специальные библиотеки управления данными, предоставляющие объектно-ориентированный интерфейс. Две основные библиотеки, с которыми работает VBA в Access, это DAO (Data Access Objects) и ADO (ActiveX Data Objects). Понимание их различий, преимуществ и недостатков критически важно для выбора правильного инструмента в каждом конкретном сценарии.
Data Access Objects (DAO)
DAO – это объектно-ориентированный интерфейс, который был разработан специально для работы с движком баз данных Microsoft Jet (используемым Microsoft Access). Он позволяет напрямую подключаться к таблицам Access, а также к другим базам данных через ODBC (Open Database Connectivity).
Ключевые особенности DAO:
- Оптимизация для Jet/ACE: DAO является «родным» интерфейсом для Access, что обеспечивает его максимальную производительность и эффективность при работе с файлами
.mdbи.accdb. - Прямой доступ: Предоставляет прямой и эффективный доступ к данным в локальных файлах Access.
- Простота использования: Считается наиболее удобным средством для однопользовательских систем и небольших разработок, поскольку его объектная модель относительно проста и интуитивно понятна для разработчиков, сосредоточенных на функциональности Access.
- Иерархическая модель: DAO имеет четкую иерархическую объектную модель (Workspace -> Database -> TableDef/QueryDef/Recordset), что облегчает навигацию и управление объектами.
Сценарии использования:
DAO предпочтителен для работы с локальными базами данных Access (формат.mdbи.accdb) благодаря своей оптимизации для движка Jet/ACE. Он идеально подходит для курсовых работ, где база данных полностью находится в одном файле Access, или для проектов, где Access используется как front-end для Jet-файлов.ActiveX Data Objects (ADO)
ADO – это более новая и гибкая библиотека, разработанная Microsoft для универсального доступа к данным из различных источников. ADO работает через провайдеры OLE DB, которые, в свою очередь, могут использовать ODBC для подключения к самым разнообразным базам данных.
Ключевые особенности ADO:
- Универсальность и гибкость: ADO поддерживает широкий спектр источников данных через OLE DB провайдеры (и, соответственно, ODBC), что делает его идеальным для взаимодействия с различными СУБД, такими как SQL Server, Oracle, MySQL, а также с нереляционными источниками данных (например, Excel, текстовые файлы, Active Directory).
- Распределенные системы и веб-приложения: ADO обеспечивает более универсальный подход к доступу к данным и лучше подходит для распределенных систем, клиент-серверных архитектур и веб-приложений.
- Меньшая иерархия: Объектная модель ADO более плоская, что может быть проще для некоторых сценариев, но менее интуитивно для глубокой работы с Jet-движком.
Сценарии использования:
ADO более гибок благодаря поддержке широкого спектра источников данных. Для курсовой работы, если требуется подключение к внешним, серверным базам данных (например, SQL Server), ADO будет предпочтительным выбором. Если же весь проект реализован в рамках одного файла Access, DAO обычно проще и эффективнее.Сравнительный Анализ DAO и ADO в контексте курсовой работы:
Критерий DAO (Data Access Objects) ADO (ActiveX Data Objects) Оптимизация Оптимизирован для Microsoft Jet/ACE движка. Универсален, работает через OLE DB провайдеры. Источники данных Локальные Access .mdb/.accdbфайлы, ODBC.Широкий спектр (SQL Server, Oracle, MySQL, Excel, и т.д.) через OLE DB/ODBC. Сложность Проще для освоения в контексте Access. Более гибкий, но может быть сложнее для новичков при работе только с Access. Производительность Высокая для локальных Access БД. Может быть ниже для локальных Access БД из-за дополнительного слоя OLE DB, но выше для внешних серверов. Актуальность До сих пор актуален для Access-специфичных задач. Более современный и универсальный стандарт. Обе библиотеки поддерживают ключевой объект –
Recordset. ОбъектRecordsetпредставляет собой набор записей из базовой таблицы или результат выполнения запроса. Он позволяет перемещаться по записям, читать и модифицировать данные.Примеры работы с
Recordset(общие принципы):- Открытие
Recordset:- DAO:
Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb ' Текущая база данных Set rs = db.OpenRecordset("SELECT * FROM tblСотрудники WHERE Отдел = 'Продажи'", dbOpenDynaset)- ADO:
Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = CurrentProject.Connection ' Текущее подключение к БД Set rs = New ADODB.Recordset rs.Open "SELECT * FROM tblСотрудники WHERE Отдел = 'Продажи'", cn, adOpenDynamic, adLockOptimistic - Перемещение по записям:
МетодыMoveNext,MovePrevious,MoveFirst,MoveLastиспользуются для изменения положения текущей записи вRecordset.
If Not rs.EOF Then ' Проверить, не пустой ли Recordset rs.MoveFirst Do While Not rs.EOF Debug.Print rs!Фамилия & " " & rs!Имя rs.MoveNext Loop End If- Свойства
BOFиEOF:
СвойстваBOF(Beginning Of File) иEOF(End Of File) используются для проверки, находится ли указатель текущей записи до первой записи или после последней записи вRecordsetсоответственно. Это критически важно для предотвращения ошибок при навигации. - Добавление, изменение, удаление записей:
- Добавление:
rs.AddNew, присвоение значений полям,rs.Update. - Изменение:
rs.Edit, присвоение значений полям,rs.Update. - Удаление:
rs.Delete.
- Добавление:
Пример кода DAO для добавления записи:
Sub AddNewEmployeeDAO() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("tblСотрудники", dbOpenTable) ' Открыть таблицу напрямую для добавления With rs .AddNew !Фамилия = "Петров" !Имя = "Алексей" !КодДолжности = 1 ' ID существующей должности .Update End With rs.Close Set rs = Nothing Set db = Nothing MsgBox "Сотрудник добавлен через DAO." End SubВыбор между DAO и ADO для курсовой работы будет зависеть от конкретных требований проекта и того, предполагается ли взаимодействие с внешними источниками данных. Для типичной курсовой работы, полностью реализуемой в Access, DAO часто будет более простым и эффективным выбором, что упрощает освоение и минимизирует потенциальные проблемы.
Событийно-Управляемое Программирование и Обработчики Событий
Одной из фундаментальных концепций разработки приложений в Access, особенно при использовании VBA, является событийно-управляемое программирование. В отличие от традиционного процедурного подхода, где программа выполняется по заранее определенной линейной последовательности, событийно-управляемое приложение ожидает наступления определенных событий и реагирует на них, запуская соответствующий программный код.
Что такое событие?
Событие – это любое действие, распознаваемое объектом Access. Это может быть действие пользователя (щелчок мыши, нажатие клавиши, изменение данных в поле), действие системы (открытие формы, закрытие отчета, срабатывание таймера) или действие, инициированное другим кодом.Объекты Access – такие как формы, отчеты и элементы управления (кнопки, текстовые поля, списки) – поддерживают более 100 различных событий. Среди наиболее распространенных:
- События формы:
OnLoad(при загрузке формы),OnOpen(при открытии формы),OnClose(при закрытии формы),OnCurrent(при переходе к новой записи),BeforeUpdate(перед обновлением записи),AfterUpdate(после обновления записи). - События элементов управления:
- Мыши:
OnClick(щелчок левой кнопкой мыши),OnDblClick(двойной щелчок),OnMouseDown/OnMouseUp(нажатие/отпускание кнопки мыши). - Клавиатуры:
OnKeyPress(нажатие клавиши),OnKeyDown/OnKeyUp(нажатие/отпускание клавиши). - Фокуса:
OnGotFocus(получение фокуса),OnLostFocus(потеря фокуса). - Данных:
BeforeUpdate/AfterUpdate(для полей, аналогично форме),OnChange(изменение содержимого текстового поля).
- Мыши:
Обработчики событий:
Когда происходит событие, Access ищет связанный с ним обработчик событий – специальную процедуру VBA, которая содержит код для реакции на это событие. Искусство программирования в формах и отчетах заключается в правильном определении того, какое событие требуется обработать, и написании соответствующего кода.Создание обработчика событий:
- Откройте форму или отчет в режиме конструктора.
- Выберите нужный объект (саму форму/отчет или конкретный элемент управления).
- Перейдите на вкладку «События» в окне свойств (Property Sheet).
- Найдите нужное событие (например,
OnClickдля кнопки). - Нажмите кнопку с тремя точками (
...) рядом с полем события. - Выберите «Построитель кода» (Code Builder). Access автоматически создаст заготовку процедуры обработчика событий в модуле формы/отчета.
Пример обработчика события
OnClickдля кнопки:
Предположим, у нас есть формаfrmMainс кнопкойcmdOpenReportи текстовым полемtxtEmployeeID. Мы хотим, чтобы при нажатии кнопки открывался отчетrptEmployeeDetailsдля сотрудника, чей ID указан вtxtEmployeeID.' В модуле формы frmMain Private Sub cmdOpenReport_Click() Dim employeeID As Long ' Проверяем, введено ли значение в текстовое поле If Not IsNull(Me.txtEmployeeID.Value) And Me.txtEmployeeID.Value <> "" Then employeeID = Me.txtEmployeeID.Value ' Открываем отчет с фильтром по ID сотрудника DoCmd.OpenReport "rptEmployeeDetails", acViewPreview, , "IDСотрудника = " & employeeID Else MsgBox "Пожалуйста, введите ID сотрудника для просмотра отчета.", vbExclamation, "Ошибка ввода" Me.txtEmployeeID.SetFocus ' Передаем фокус на поле ввода End If End SubВ этом примере:
Private Sub cmdOpenReport_Click()– это обработчик событияClickдля кнопкиcmdOpenReport.IsNull(Me.txtEmployeeID.Value) And Me.txtEmployeeID.Value <> ""– проверка на пустое значение.DoCmd.OpenReport– метод объектаDoCmdдля открытия отчета.acViewPreview– константа, указывающая режим открытия отчета (предварительный просмотр)."IDСотрудника = " & employeeID– условие фильтра, которое передается отчету, чтобы он отображал данные только для выбранного сотрудника.MsgBox– функция для вывода сообщений пользователю.Me.txtEmployeeID.SetFocus– метод для установки фокуса на элемент управления.
Используя событийно-управляемое программирование, разработчик может создавать динамичные, интерактивные приложения, которые точно реагируют на действия пользователя и системные события, делая базу данных мощным и удобным инструментом.
Валидация Данных и Автоматизация Задач с VBA
Программирование на VBA в Access выходит далеко за рамки простых обработчиков событий; оно позволяет реализовывать сложную бизнес-логику, автоматизировать рутинные задачи и обеспечивать высокую степень целостности данных через их валидацию.
Валидация Данных с VBA
Валидация данных – это процесс проверки вводимой пользователем информации на соответствие определенным правилам и стандартам. Это критически важный аспект для обеспечения качества и целостности базы данных. Хотя Access предоставляет встроенные средства валидации (например, «Условие на значение» и «Обязательное поле» для таблиц), VBA позволяет реализовать более сложные и динамичные проверки.
Примеры валидации с использованием VBA:
- Проверка на пустое значение: Функция
IsNull()– один из базовых инструментов для проверки, содержит ли переменная или поле значениеNull(отсутствие данных).
' В обработчике события BeforeUpdate для текстового поля Private Sub txtFirstName_BeforeUpdate(Cancel As Integer) If IsNull(Me.txtFirstName.Value) Or Trim(Me.txtFirstName.Value) = "" Then MsgBox "Имя сотрудника не может быть пустым.", vbExclamation, "Ошибка валидации" Cancel = True ' Отменить обновление поля End If End Sub- Проверка на диапазон значений:
' Проверка возраста сотрудника Private Sub txtAge_BeforeUpdate(Cancel As Integer) If Not IsNull(Me.txtAge.Value) Then If Me.txtAge.Value < 18 Or Me.txtAge.Value > 65 Then MsgBox "Возраст должен быть от 18 до 65 лет.", vbExclamation, "Ошибка валидации" Cancel = True End If End If End Sub- Проверка уникальности значения (добавление новой записи):
' В обработчике события BeforeUpdate для формы (перед сохранением новой записи) Private Sub Form_BeforeUpdate(Cancel As Integer) Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String If Me.NewRecord Then ' Проверяем, что это новая запись Set db = CurrentDb strSQL = "SELECT COUNT(*) FROM tblСотрудники WHERE ТабельныйНомер = '" & Me.txtТабельныйНомер.Value & "'" Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot) If rs.Fields(0).Value > 0 Then MsgBox "Сотрудник с таким табельным номером уже существует.", vbExclamation, "Ошибка уникальности" Cancel = True ' Отменить сохранение записи Me.txtТабельныйНомер.SetFocus End If rs.Close Set rs = Nothing Set db = Nothing End If End SubАвтоматизация Задач с VBA
VBA – это мощный инструмент для автоматизации рутинных и сложных задач, которые невозможно или неудобно выполнять вручную или с помощью макросов. Это значительно повышает производительность и уменьшает вероятность ошибок.
Примеры автоматизации задач:
- Импорт и экспорт данных:
VBA позволяет программно импортировать данные из различных источников (Excel, текстовые файлы, другие базы данных) и экспортировать их.
' Импорт данных из Excel DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _ "tblВременныеДанные", "C:\Data\NewData.xlsx", True, "Лист1!" ' Экспорт отчета в PDF DoCmd.OutputTo acOutputReport, "rptMonthlySummary", acFormatPDF, "C:\Reports\MonthlySummary.pdf"- Работа с файлами и папками:
Используя объектFileSystemObject(из библиотеки Microsoft Scripting Runtime), можно создавать, удалять, перемещать файлы и папки.
Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists("C:\Backups") Then fso.CreateFolder "C:\Backups" End If fso.CopyFile "C:\MyDatabase.accdb", "C:\Backups\MyDatabase_Backup_" & Format(Date, "yyyymmdd") & ".accdb" Set fso = Nothing- Взаимодействие с другими приложениями Office:
VBA позволяет управлять другими приложениями Office (Word, Excel, Outlook), автоматизируя создание документов, отчетов или отправку электронных писем.
' Открытие Excel и запись данных Dim xlApp As Object Dim xlWb As Object Dim xlWs As Object Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Set xlWb = xlApp.Workbooks.Add Set xlWs = xlWb.Sheets(1) xlWs.Cells(1, 1).Value = "Отчет о продажах" ' ... заполнение данных xlWb.SaveAs "C:\Reports\SalesReport.xlsx" xlWb.Close False xlApp.Quit Set xlWs = Nothing Set xlWb = Nothing Set xlApp = Nothing- Создание навигационных меню и панелей:
VBA позволяет создавать сложные навигационные формы, которые динамически управляют открытием и закрытием других форм и отчетов.
Процедурное vs. Объектно-Ориентированное Программирование в VBA
В контексте VBA и Access можно использовать как процедурный, так и объектно-ориентированный подход, хотя объектная модель Access сама по себе состоит из объектов.
- Процедурное программирование: Рассматривает программу как набор процедур и функций, выполняющих определенный блок кода. Хорошо подходит для простых, линейных программ без сложной структуры. Код часто сосредоточен в модулях или обработчиках событий форм/отчетов.
- Объектно-ориентированное программирование (ООП): Рассматривает программу как набор взаимодействующих объектов, каждый из которых имеет свойства (данные) и поведение (методы). В VBA ООП реализуется через создание классов (модулей классов).
Преимущества ООП в VBA:
- Ускорение написания кода: За счет повторного использования классов и объектов.
- Читаемость и структурированность: Код становится более модульным и понятным.
- Масштабируемость: Упрощает расширение функциональности больших проектов.
- Управляемость и поддержка: Изменения в одном классе не влияют на другие, если их интерфейсы остаются неизменными, что значительно упрощает отладку и поддержку.
- Инкапсуляция: Объединение данных и методов, работающих с ними, в единый блок, скрывая внутреннюю реализацию.
В контексте VBA и Access, ООП позволяет создавать более модульные и повторно используемые компоненты, что ускоряет разработку до 20-30% для сложных проектов за счет инкапсуляции данных и методов в классах. Например, можно создать класс
clsEmployee, который инкапсулирует свойства сотрудника (FirstName,LastName,Department) и методы (Save,Delete,CalculateBonus). Это делает код более чистым и легким для поддержки, особенно в больших курсовых проектах, где множество форм и отчетов работают с одними и теми же сущностями. Для курсовой работы рекомендуется использовать процедурный подход для простых задач и обработчиков событий, но рассмотреть применение модулей классов для более сложных сущностей и бизнес-логики, что продемонстрирует глубокое понимание современных принципов программирования.Разработка Конкретной Базы Данных: Пример «Журнал Регистрации Командировочных Удостоверений»
Теоретические знани�� и понимание инструментов становятся по-настоящему ценными только тогда, когда они применяются на практике. Для курсовой работы важно не только изложить концепции, но и продемонстрировать их реализацию на конкретном примере. «Журнал регистрации командировочных удостоверений» является отличным кейсом для демонстрации полного цикла разработки базы данных: от анализа требований до программной реализации с использованием VBA.
Анализ Предметной Области и Требований
Первым и одним из самых критичных этапов в разработке любой информационной системы является тщательный анализ предметной области и сбор требований. От того, насколько полно и точно будут определены потребности пользователей и бизнес-процессы, зависит успех всего проекта. В нашем случае, для «Журнала регистрации командировочных удостоверений», необходимо определить, какую информацию система должна хранить, какие функции выполнять и для кого она предназначена.
1. Определение функциональных требований:
Функциональные требования описывают, что система должна делать. Для нашего журнала это будет:- Регистрация командировочных удостоверений: Возможность внесения новой информации о выданном командировочном удостоверении (номер, дата выдачи, период, цель, место назначения).
- Учет сотрудников: Хранение данных о сотрудниках, отправляемых в командировки (ФИО, должность, подразделение).
- Учет подразделений и должностей: Хранение справочной информации о структуре компании.
- Связь сотрудника с командировкой: Однозначное соотнесение каждого удостоверения с конкретным сотрудником.
- Просмотр списка командировок: Возможность фильтрации и сортировки по различным критериям (сотрудник, дата, статус).
- Изменение и удаление данных: Редактирование информации о командировках и сотрудниках, а также возможность удаления записей.
- Генерация отчетов: Печать списка всех командировок, отчета по конкретному сотруднику или за определенный период.
- Поиск: Быстрый поиск по ключевым полям (например, по фамилии сотрудника, номеру удостоверения).
- Валидация данных: Проверка корректности вводимых данных (например, дата окончания не может быть раньше даты начала, обязательные поля не могут быть пустыми).
2. Определение нефункциональных требований:
Нефункциональные требования описывают, как система должна работать (её характеристики).- Производительность: Быстрый отклик при выполнении запросов и открытии форм.
- Безопасность: Защита данных от несанкционированного доступа.
- Надежность: Устойчивость к ошибкам и потерям данных.
- Удобство использования: Интуитивно понятный интерфейс.
- Сопровождаемость: Легкость внесения изменений и обновлений.
3. Выделение ключевых сущностей, их атрибутов и связей:
На основе функциональных требований можно выделить основные сущности предметной области:- Сущность: Сотрудник
- Атрибуты:
IDСотрудника(первичный ключ, автонумерация),Фамилия,Имя,Отчество,КодДолжности(внешний ключ),КодПодразделения(внешний ключ).
- Атрибуты:
- Сущность: Должность
- Атрибуты:
IDДолжности(первичный ключ, автонумерация),НазваниеДолжности.
- Атрибуты:
- Сущность: Подразделение
- Атрибуты:
IDПодразделения(первичный ключ, автонумерация),НазваниеПодразделения.
- Атрибуты:
- Сущность: КомандировочноеУдостоверение
- Атрибуты:
IDУдостоверения(первичный ключ, автонумерация),НомерУдостоверения,ДатаВыдачи,IDСотрудника(внешний ключ),ДатаНачалаКомандировки,ДатаОкончанияКомандировки,МестоНазначения,ЦельКомандировки,Статус(например, «Выдано», «Закрыто»).
- Атрибуты:
4. Определение связей:
- Сотрудник – Должность: Один-ко-многим (1:M). Одна должность может быть у многих сотрудников, но каждый сотрудник имеет одну должность.
- Сотрудник – Подразделение: Один-ко-многим (1:M). Одно подразделение может иметь много сотрудников, но каждый сотрудник относится к одному подразделению.
- Сотрудник – КомандировочноеУдостоверение: Один-ко-многим (1:M). Один сотрудник может иметь много командировочных удостоверений, но каждое удостоверение выдано одному сотруднику.
Тщательный анализ предметной области и требований является основой для успешного концептуального и логического проектирования базы данных.
Концептуальное и Логическое Проектирование
После того как требования к базе данных были собраны и проанализированы, следующим шагом является переход от абстрактных концепций к структурированной модели данных. Этот процесс включает концептуальное проектирование с использованием ER-модели и логическое проектирование с применением принципов нормализации.
1. Разработка ER-диаграммы для предметной области «Журнал регистрации командировочных удостоверений»:
ER-диаграмма визуализирует сущности и их связи, делая структуру базы данных интуитивно понятной.+--------------------+ 1 | Подразделение |-----< ---------------------> | +--------------------+ | M +--------------------+ | IDПодразделения (PK)| | | | Сотрудник | | НазваниеПодразделения| | | +--------------------+ +--------------------+ | | | IDСотрудника (PK) | | | | Фамилия | | | | Имя | | | | Отчество | | | | IDДолжности (FK) | | | | IDПодразделения (FK)| | | +--------------------+ | | | 1 M |----------------------> +--------------------+ | Должность | +--------------------+ | IDДолжности (PK) | | НазваниеДолжности | +--------------------++--------------------+ M 1 +--------------------------+ | Сотрудник |<----------------------->| КомандировочноеУдостоверение | +--------------------+ +--------------------------+ | IDСотрудника (PK) | | IDУдостоверения (PK) | | Фамилия | | НомерУдостоверения | | ... | | ДатаВыдачи | +--------------------+ | IDСотрудника (FK) | | ДатаНачалаКомандировки | | ДатаОкончанияКомандировки| | МестоНазначения | | ЦельКомандировки | | Статус | +--------------------------+Объединение ER-диаграмм:
+--------------------+ 1 | Подразделение |-----< ---------------------> | +--------------------+ | M +--------------------+ | IDПодразделения (PK)| | | | Сотрудник | | НазваниеПодразделения| | | +--------------------+ +--------------------+ | | | IDСотрудника (PK) | | | | Фамилия | | | | Имя | | | | Отчество | | | | IDДолжности (FK) | | | | IDПодразделения (FK)| | | +--------------------+ | | 1 | 1 M ----------< -------------------> M |----------------------> +--------------------+ | | Должность | | +--------------------+ | | IDДолжности (PK) | | | НазваниеДолжности | | +--------------------+ | | | 1 |--------------------------+ | КомандировочноеУдостоверение | +--------------------------+ | IDУдостоверения (PK) | | НомерУдостоверения | | ДатаВыдачи | | IDСотрудника (FK) | | ДатаНачалаКомандировки | | ДатаОкончанияКомандировки| | МестоНазначения | | ЦельКомандировки | | Статус | +--------------------------+2. Применение принципов нормализации:
После создания ER-модели, ее необходимо преобразовать в набор реляционных таблиц и затем применить принципы нормализации для устранения избыточности и аномалий. Для нашего примера мы стремимся к 3НФ.- Таблица
tblПодразделения(Departments):IDПодразделения(Primary Key)НазваниеПодразделения- Находится в 3НФ.
- Таблица
tblДолжности(Positions):IDДолжности(Primary Key)НазваниеДолжности- Находится в 3НФ.
- Таблица
tblСотрудники(Employees):IDСотрудника(Primary Key)ФамилияИмяОтчествоIDДолжности(Foreign Key, ссылается наtblДолжности.IDДолжности)IDПодразделения(Foreign Key, ссылается наtblПодразделения.IDПодразделения)- Эта таблица находится в 3НФ, так как все неключевые поля зависят только от
IDСотрудникаи не имеют транзитивных зависимостей.
- Таблица
tblКомандировочныеУдостоверения(TravelAuthorizations):IDУдостоверения(Primary Key)НомерУдостоверенияДатаВыдачиIDСотрудника(Foreign Key, ссылается наtblСотрудники.IDСотрудника)ДатаНачалаКомандировкиДатаОкончанияКомандировкиМестоНазначенияЦельКомандировкиСтатус(например, «Выдано», «Закрыто»)- Эта таблица также находится в 3НФ, так как все неключевые поля зависят только от
IDУдостоверения.
Проверка на более высокие нормальные формы (БКНФ, 4НФ, 5НФ):
В данном примере структура проста и не содержит сложных многозначных зависимостей или пересекающихся потенциальных ключей, которые могли бы нарушать БКНФ, 4НФ или 5НФ. Все детерминанты являются первичными ключами, нет многозначных зависимостей, и таблица не может быть разложена без потери информации. Следовательно, достижение 3НФ здесь является достаточным и соответствует более высоким нормальным формам. Логическое проектирование гарантирует, что база данных будет иметь оптимальную структуру, минимизирующую избыточность и предотвращающую аномалии, что является залогом ее долговечности и надежности.Физическая Реализация в Access: Таблицы, Запросы, Формы, Отчеты
После этапов концептуального и логического проектирования наступает фаза физической реализации, где разработанная модель данных воплощается в жизнь с использованием средств Microsoft Access. Этот шаг включает создание всех объектов базы данных: таблиц, запросов, форм и отчетов.
1. Создание Таблиц:
На основе логической модели данных, описанной в предыдущем разделе, создадим таблицы в Access в режиме конструктора.
Таблица:
tblПодразделенияIDПодразделения: Автонумерация, Первичный ключ.НазваниеПодразделения: Короткий текст, 50 символов, Обязательное поле.
Таблица:
tblДолжностиIDДолжности: Автонумерация, Первичный ключ.НазваниеДолжности: Короткий текст, 50 символов, Обязательное поле.
Таблица:
tblСотрудникиIDСотрудника: Автонумерация, Первичный ключ.Фамилия: Короткий текст, 50 символов, Обязательное поле.Имя: Короткий текст, 50 символов, Обязательное поле.Отчество: Короткий текст, 50 символов.IDДолжности: Числовой (Длинное целое), Обязательное поле, Внешний ключ, связывается сtblДолжности.IDДолжности.IDПодразделения: Числовой (Длинное целое), Обязательное поле, Внешний ключ, связывается сtblПодразделения.IDПодразделения.
Таблица:
tblКомандировочныеУдостоверенияIDУдостоверения: Автонумерация, Первичный ключ.НомерУдостоверения: Короткий текст, 20 символов, Обязательное поле, Индексированное (Без совпадений).ДатаВыдачи: Дата/время, Формат:Краткий формат даты, Обязательное поле.IDСотрудника: Числовой (Длинное целое), Обязательное поле, Внешний ключ, связывается сtblСотрудники.IDСотрудника.ДатаНачалаКомандировки: Дата/время, Формат:Краткий формат даты, Обязательное поле.ДатаОкончанияКомандировки: Дата/время, Формат:Краткий формат даты, Обязательное поле.МестоНазначения: Короткий текст, 100 символов, Обязательное поле.ЦельКомандировки: Длинный текст.Статус: Короткий текст, 20 символов, Значение по умолчанию: «Выдано».
После создания таблиц необходимо установить между ними связи в окне «Схема данных», обеспечив ссылочную целостность и каскадное обновление/удаление.
Пример заполнения тестовыми данными:
tblПодразделения:IDПодразделения НазваниеПодразделения 1 Отдел продаж 2 Отдел разработки tblДолжности:IDДолжности НазваниеДолжности 1 Менеджер по продажам 2 Разработчик 3 Директор tblСотрудники:IDСотрудника Фамилия Имя Отчество IDДолжности IDПодразделения 1 Иванов Иван Иванович 1 1 2 Петров Петр Петрович 2 2 3 Сидорова Анна Сергеевна 1 1 2. Разработка Запросов:
Создадим несколько запросов для демонстрации функциональности.
- Запрос на выборку:
qryСписокКомандировокСотрудников
Извлекает информацию о командировках, включая ФИО сотрудника, его должность и подразделение.
SQL-код:
SELECT T1.НомерУдостоверения, T1.ДатаВыдачи, T2.Фамилия & " " & T2.Имя & " " & T2.Отчество AS ФИОСотрудника, T3.НазваниеДолжности, T4.НазваниеПодразделения, T1.ДатаНачалаКомандировки, T1.ДатаОкончанияКомандировки, T1.МестоНазначения, T1.ЦельКомандировки, T1.Статус FROM tblКомандировочныеУдостоверения AS T1 INNER JOIN tblСотрудники AS T2 ON T1.IDСотрудника = T2.IDСотрудника INNER JOIN tblДолжности AS T3 ON T2.IDДолжности = T3.IDДолжности INNER JOIN tblПодразделения AS T4 ON T2.IDПодразделения = T4.IDПодразделения ORDER BY T1.ДатаВыдачи DESC;- Запрос на обновление:
qryЗакрытьСтарыеКомандировки
Обновляет статус командировок на «Закрыто», еслиДатаОкончанияКомандировкираньше текущей даты (15.10.2025).
SQL-код:
UPDATE tblКомандировочныеУдостоверения SET Статус = "Закрыто" WHERE ДатаОкончанияКомандировки < Date();3. Проектирование Форм:
- Форма для ввода/редактирования командировок:
frmКомандировочноеУдостоверение- Дизайн: Создается в режиме конструктора. Должна включать поля для
НомерУдостоверения,ДатаВыдачи,ДатаНачалаКомандировки,ДатаОкончанияКомандировки,МестоНазначения,ЦельКомандировки,Статус. - Поле со списком для выбора сотрудника: Вместо
IDСотрудникаиспользуется поле со списком (ComboBox), которое отображает ФИО сотрудников (Фамилия & " " & Имя) изtblСотрудники, но сохраняетIDСотрудника. - Кнопки: «Сохранить», «Удалить», «Закрыть», «Новое удостоверение».
- Валидация: Используем VBA (см. следующий раздел) для проверки, что
ДатаОкончанияКомандировкине может быть раньшеДатаНачалаКомандировки.
- Дизайн: Создается в режиме конструктора. Должна включать поля для
- Навигационная форма:
frmГлавноеМеню- Содержит кнопки для открытия форм
frmКомандировочноеУдостоверение,frmСотрудники,frmОтчетПоКомандировкам.
- Содержит кнопки для открытия форм
4. Создание Отчетов:
- Отчет «Список всех командировок»:
rptСписокКомандировок- Источник данных:
qryСписокКомандировокСотрудников. - Дизайн: Создается в режиме конструктора. Включает заголовки, группировку (например, по сотруднику или по статусу), детализацию по каждой командировке. В нижнем колонтитуле отчета можно добавить общее количество командировок.
- Вычисляемые поля: Например,
=[ДатаОкончанияКомандировки]-[ДатаНачалаКомандировки]для вычисления количества дней командировки.
- Источник данных:
- Отчет «Командировочное удостоверение»:
rptКомандировочноеУдостоверение- Источник данных:
tblКомандировочныеУдостоверенияс параметром[IDУдостоверения]при открытии. - Дизайн: Форматирование, имитирующее бланк командировочного удостоверения, с полями для всех деталей.
- Источник данных:
Физическая реализация является кульминацией этапов проектирования, где все теоретические наработки обретают осязаемую форму и функциональность, что позволяет наглядно оценить результаты работы.
Программная Реализация с VBA: Автоматизация и Интерфейс
После того как базовая структура базы данных (таблицы, запросы, формы, отчеты) создана, наступает этап программной реализации с использованием VBA. Этот шаг призван оживить приложение, добавить бизнес-логику, автоматизировать рутинные операции, улучшить взаимодействие с пользователем и обеспечить валидацию данных, выходящую за рамки встроенных средств Access.
1. Обработка Событий Форм и Элементов Управления:
VBA-код для форм обычно пишется в модуле формы.
- Автоматическое заполнение полей:
При выборе сотрудника в поле со списком, автоматически заполнять его должность и подразделение (если это не делается через связанную таблицу).
' В модуле формы frmКомандировочноеУдостоверение Private Sub cboСотрудник_AfterUpdate() ' cboСотрудник - это поле со списком, которое отображает ФИО, но хранит IDСотрудника Dim rs As DAO.Recordset Dim db As DAO.Database Set db = CurrentDb ' Запрос для получения должности и подразделения сотрудника Set rs = db.OpenRecordset("SELECT T1.IDДолжности, T1.IDПодразделения, T2.НазваниеДолжности, T3.НазваниеПодразделения " & _ "FROM tblСотрудники AS T1 " & _ "INNER JOIN tblДолжности AS T2 ON T1.IDДолжности = T2.IDДолжности " & _ "INNER JOIN tblПодразделения AS T3 ON T1.IDПодразделения = T3.IDПодразделения " & _ "WHERE T1.IDСотрудника = " & Me.cboСотрудник.Value, dbOpenSnapshot) If Not rs.EOF Then ' Предположим, у нас есть текстовые поля txtДолжность и txtПодразделение на форме Me.txtДолжность.Value = rs!НазваниеДолжности Me.txtПодразделение.Value = rs!НазваниеПодразделения Else Me.txtДолжность.Value = "" Me.txtПодразделение.Value = "" End If rs.Close Set rs = Nothing Set db = Nothing End Sub- Валидация дат командировки:
Проверка, что дата окончания командировки не может быть раньше даты начала. Это должно происходить при изменении любого из полей дат.
' В модуле формы frmКомандировочноеУдостоверение Private Sub ДатаНачалаКомандировки_AfterUpdate() Call CheckDates End Sub Private Sub ДатаОкончанияКомандировки_AfterUpdate() Call CheckDates End Sub Private Sub CheckDates() If Not IsNull(Me.ДатаНачалаКомандировки) And Not IsNull(Me.ДатаОкончанияКомандировки) Then If Me.ДатаОкончанияКомандировки < Me.ДатаНачалаКомандировки Then MsgBox "Дата окончания командировки не может быть раньше даты начала.", vbExclamation, "Ошибка даты" Me.ДатаОкончанияКомандировки.SetFocus End If End If End Sub2. Автоматизация Расчета Полей:
Расчет количества дней командировки.
' В модуле формы frmКомандировочноеУдостоверение Private Sub ДатаОкончанияКомандировки_AfterUpdate() Call CheckDates ' Сначала проверить даты Call CalculateDuration End Sub Private Sub ДатаНачалаКомандировки_AfterUpdate() Call CheckDates ' Сначала проверить даты Call CalculateDuration End Sub Private Sub CalculateDuration() If Not IsNull(Me.ДатаНачалаКомандировки) And Not IsNull(Me.ДатаОкончанияКомандировки) Then ' Предположим, есть текстовое поле txtКоличествоДней Me.txtКоличествоДней.Value = DateDiff("d", Me.ДатаНачалаКомандировки, Me.ДатаОкончанияКомандировки) + 1 Else Me.txtКоличествоДней.Value = Null End If End Sub3. Создание Навигационного Меню:
Использование главной формы (
frmГлавноеМеню) для управления открытием других форм и отчетов.' В модуле формы frmГлавноеМеню Private Sub cmdОткрытьФормуКомандировок_Click() DoCmd.OpenForm "frmКомандировочноеУдостоверение" End Sub Private Sub cmdОткрытьОтчетКомандировок_Click() DoCmd.OpenReport "rptСписокКомандировок", acViewPreview End Sub Private Sub cmdВыход_Click() DoCmd.Quit acQuitSaveAll End Sub4. Использование Модулей Классов для Бизнес-Логики (Продвинутый уровень):
Для более сложных курсовых работ можно создать модуль класса для сущности «Командировка», инкапсулируя в нем свойства и методы.
Создание модуля класса
clsКомандировка:
В меню VBE выберите «Insert» -> «Class Module». Назовите егоclsКомандировка.' В модуле класса clsКомандировка Private pIDУдостоверения As Long Private pНомерУдостоверения As String ' ... другие свойства Public Property Get IDУдостоверения() As Long IDУдостоверения = pIDУдостоверения End Property Public Property Let IDУдостоверения(Value As Long) pIDУдостоверения = Value End Property ' ... другие Property Get/Let для всех атрибутов Public Function Save() As Boolean ' Логика сохранения командировки в БД ' Например, используя DAO или ADO для INSERT/UPDATE Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb If Me.IDУдостоверения = 0 Then ' Новая запись Set rs = db.OpenRecordset("tblКомандировочныеУдостоверения", dbOpenTable) With rs .AddNew !НомерУдостоверения = Me.НомерУдостоверения ' ... заполнить остальные поля .Update Me.IDУдостоверения = !IDУдостоверения ' Получить новый ID End With Else ' Существующая запись Set rs = db.OpenRecordset("SELECT * FROM tblКомандировочныеУдостоверения WHERE IDУдостоверения = " & Me.IDУдостоверения, dbOpenDynaset) With rs If Not .EOF Then .Edit !НомерУдостоверения = Me.НомерУдостоверения ' ... обновить остальные поля .Update End If End With End If rs.Close Set rs = Nothing Set db = Nothing Save = True End Function Public Function Load(ByVal ID As Long) As Boolean ' Логика загрузки командировки из БД по ID ' ... End Function Public Function Delete() As Boolean ' Логика удаления командировки ' ... End FunctionИспользование класса в форме:
' В модуле формы frmКомандировочноеУдостоверение Private CurrentTravelAuth As clsКомандировка Private Sub Form_Load() Set CurrentTravelAuth = New clsКомандировка ' Если форма открыта для существующей записи, загрузить данные If Me.NewRecord = False Then ' Предполагается, что IDУдостоверения передается форме ' CurrentTravelAuth.Load Me!IDУдостоверения End If End Sub Private Sub cmdСохранить_Click() ' Перенести данные из формы в объект класса CurrentTravelAuth.НомерУдостоверения = Me.НомерУдостоверения ' ... If CurrentTravelAuth.Save() Then MsgBox "Данные сохранены успешно!" ' Обновить форму или закрыть ее Else MsgBox "Ошибка при сохранении данных.", vbCritical End If End Sub Private Sub Form_Unload(Cancel As Integer) Set CurrentTravelAuth = Nothing End SubЭтот подход делает код более структурированным и удобным для поддержки, особенно в больших проектах. Программная реализация с VBA является кульминацией процесса разработки, превращающей статичную базу данных в интерактивное и функциональное приложение.
Обеспечение Целостности, Безопасности и Оптимизации Базы Данных
Создание функциональной базы данных – это только часть задачи. Для того чтобы приложение было надежным, устойчивым и эффективным в долгосрочной перспективе, необходимо уделить пристальное внимание вопросам целостности, безопасности и оптимизации. Эти аспекты гарантируют, что данные будут корректными, защищенными от несанкционированного доступа и быстродоступными для пользователей, что является залогом успешной эксплуатации любой информационной системы.
Механизмы Целостности Данных: Транзакции и Нормализация
Целостность данных – это состояние, при котором данные в базе данных являются точными, непротиворечивыми и надежными. Достижение и поддержание целостности данных имеет решающее значение для достоверности информации и корректной работы бизнес-процессов. В реляционных СУБД, таких как Access, это обеспечивается двумя основными механизмами: нормализацией и транзакциями.
1. Нормализация как фундамент целостности:
Как мы подробно рассмотрели ранее, нормализация – это процесс организации данных, который устраняет избыточность и аномалии изменения (вставки, редактирования, удаления).
- Устранение избыточности: Разделение данных на логически связанные таблицы позволяет хранить каждый факт только один раз. Это предотвращает возможность возникновения противоречий, когда один и тот же факт обновляется в одном месте, но забывается в другом.
- Предотвращение аномалий:
- Аномалии обновления: Нормализованная структура гарантирует, что изменение факта потребует обновления только в одном месте.
- Аномалии вставки: Позволяет добавлять новую информацию о сущности, даже если она еще не связана с другой (например, добавить новый отдел без привязки к сотруднику).
- Аномалии удаления: Предотвращает случайную потерю связанной информации при удалении записи (например, удаление сотрудника не должно приводить к потере информации о его отделе, если он был последним в этом отделе).
Таким образом, нормализация является превентивной мерой, создающей структурную основу для поддержания целостности данных на логическом уровне.
2. Механизм транзакций: гарантия атомарности операций:
Если нормализация обеспечивает структурную целостность, то транзакции гарантируют операционную целостность – корректность выполнения последовательности операций.
Транзакция – это неделимая последовательность операций с базой данных, которая рассматривается как единое целое. Либо все операции в транзакции успешно выполняются (транзакция фиксируется, илиCOMMIT), либо, если хотя бы одна операция завершается неудачей, все изменения, сделанные в рамках транзакции, отменяются (транзакция откатывается, илиROLLBACK).Транзакции обеспечивают так называемые ACID-свойства:
- Атомарность (Atomicity): Транзакция является атомарной, что означает «все или ничего». Если какая-либо часть транзакции завершается сбоем, вся транзакция откатывается, и база данных возвращается в состояние до начала транзакции.
- Согласованность (Consistency): Транзакция переводит базу данных из одного согласованного состояния в другое согласованное состояние. Она гарантирует, что данные всегда соответствуют определенным правилам и ограничениям. Если транзакция нарушает правила, она будет отменена.
- Изолированность (Isolation): Параллельно выполняющиеся транзакции не влияют друг на друга. Результаты одной транзакции не должны быть видны другим транзакциям до тех пор, пока первая транзакция не будет зафиксирована. Это предотвращает «грязное чтение» и другие аномалии параллельного доступа.
- Долговечность (Durability): После того как транзакция зафиксирована, ее изменения сохраняются в базе данных навсегда, даже в случае сбоев системы (например, отключение питания).
Пример использования транзакций в VBA (DAO):
Sub ProcessTravelAuthorization() Dim db As DAO.Database Dim rsTravel As DAO.Recordset Dim rsLog As DAO.Recordset Set db = CurrentDb ' Начать транзакцию db.BeginTrans On Error GoTo ErrorHandler ' Шаг 1: Добавить новую запись о командировке Set rsTravel = db.OpenRecordset("tblКомандировочныеУдостоверения", dbOpenTable) With rsTravel .AddNew !НомерУдостоверения = "КУ-005" !ДатаВыдачи = Date !IDСотрудника = 1 ' ... остальные поля .Update End With rsTravel.Close ' Шаг 2: Записать факт выдачи в журнал аудита Set rsLog = db.OpenRecordset("tblЖурналАудита", dbOpenTable) With rsLog .AddNew !ДатаСобытия = Now !ТипСобытия = "Выдача командировки" !Описание = "Выдано удостоверение КУ-005 сотруднику ID=1" .Update End With rsLog.Close ' Если все шаги выполнены успешно, фиксируем транзакцию db.CommitTrans MsgBox "Командировка успешно оформлена и зарегистрирована.", vbInformation Exit Sub ErrorHandler: ' Если произошла ошибка, откатываем все изменения db.Rollback MsgBox "Произошла ошибка: " & Err.Description & ". Все изменения отменены.", vbCritical End SubВ этом примере, если произойдет сбой при добавлении записи в журнал аудита (например, из-за ошибки в данных или сбоя системы), то и запись о командировке в
tblКомандировочныеУдостоверениябудет отменена, что гарантирует согласованность данных. Сочетание нормализации (для структурной целостности) и транзакций (для операционной целостности) обеспечивает мощный механизм поддержания достоверности данных в базе данных.Комплексный Подход к Безопасности Access-БД
Обеспечение безопасности базы данных – это многогранная задача, направленная на защиту данных от несанкционированного доступа, изменения или уничтожения. В Microsoft Access реализованы различные механизмы безопасности, которые, хотя и не столь сложны как в корпоративных СУБД, предоставляют достаточный уровень защиты для большинства настольных и небольших многопользовательских приложений.
1. Шифрование Базы Данных:
Шифрование является первым барьером на пути несанкционированного доступа. Оно преобразует данные в нечитаемый формат, делая их бесполезными для тех, у кого нет ключа дешифрования.
- Современное шифрование (Access 2010 и позднее): Начиная с Access 2010, для шифрования файлов
.accdbиспользуется алгоритм AES (Advanced Encryption Standard) с длиной ключа 128 бит. AES-128 считается значительно более стойким и надежным, чем устаревший алгоритм RC4, который использовался в предыдущих версиях (.mdb). Это шифрование защищает данные от просмотра с помощью служебных программ для просмотра дисков или прямого доступа к файлу. - Шифрование с паролем: Можно зашифровать базу данных и установить пароль, который потребуется вводить каждый раз при ее открытии.
- Как сделать: Файл -> Сведения -> Зашифровать с помощью пароля.
- Преимущество: Предотвращает открытие базы данных без знания пароля.
- Недостаток: Пароль хранится локально и может быть подвержен атакам грубой силы, если он слабый.
2. Защита Исходного Кода и Дизайна: Создание MDE/ACCDE-файлов:
Для защиты интеллектуальной собственности (VBA-кода) и предотвращения случайных или преднамеренных изменений дизайна форм, отчетов и модулей разработчики могут распространять базу данных в скомпилированном формате.
- MDE-файл (для .mdb) / ACCDE-файл (для .accdb): Это скомпилированная версия базы данных Access, в которой исходный VBA-код удаляется, а формы, отчеты и модули сохраняются только в скомпилированном виде.
- Преимущества:
- Защита VBA-кода: Пользователи не могут просматривать, изменять или копировать исходный VBA-код.
- Защита дизайна: Нельзя изменить дизайн форм, отчетов или модулей.
- Уменьшение размера файла: За счет удаления исходного кода.
- Небольшое ускорение: Код уже скомпилирован.
- Недостатки:
- Невозможно изменить структуру объектов после сохранения в MDE/ACCDE. Любые изменения в дизайне или коде требуют создания нового MDE/ACCDE-файла из исходной
.accdbбазы данных. - Данные в таблицах по-прежнему доступны и могут быть изменены.
- Невозможно изменить структуру объектов после сохранения в MDE/ACCDE. Любые изменения в дизайне или коде требуют создания нового MDE/ACCDE-файла из исходной
- Как сделать: Файл -> Сохранить как -> Создать ACCDE.
3. Упаковка и Подписание Базы Данных:
Для безопасного распространения базы данных, особенно в корпоративных сетях, можно использовать цифровую подпись.
- Назначение: Упаковка и подписание базы данных (доступно в Access 2007 и более поздних версиях) позволяет разработчику создать развертываемый пакет, который включает базу данных и цифровую подпись.
- Преимущество: Цифровая подпись гарантирует пользователю, что база данных не была изменена после ее публикации и исходит от доверенного издателя. Это повышает доверие и безопасность при первом открытии файла.
4. Надежные расположения и Центр управления безопасностью:
Access использует «Центр управления безопасностью» для определения уровня доверия к открываемым файлам.
- Надежные расположения: Если база данных Access находится в надежном расположении (папка, указанная в Центре управления безопасностью как доверенная), весь код VBA, макросы и безопасные выражения выполняются без запроса доверия или блокировки. Это основной метод для обеспечения функциональности приложения.
- Режим ограниченной функциональности: Если файл открывается из ненадежного расположения, Access по умолчанию блокирует весь исполняемый код, требуя явного разрешения пользователя.
5. Устаревшая безопасность на уровне пользователя (.mdb-файлы):
Для Access 2003 и более ранних версий (для файлов
.mdb) существовала система безопасности на уровне пользователя.- Механизм: Основана на рабочих группах и позволяет очень детально настраивать разрешения для отдельных пользователей или групп на уровне объектов (таблиц, запросов, форм, отчетов, макросов, модулей) и даже на уровне полей.
- Совместимость: Эта функциональность не поддерживается для файлов
.accdb, но сохраняется для совместимости при работе с legacy-файлами.mdbв новых версиях Access. - Мастер защиты: Существовал «Мастер защиты», который помогал в настройке уникальной рабочей группы и управлении разрешениями.
- Актуальность: Для новых проектов на
.accdbэтот метод не применяется, но его знание может быть полезно для работы со старыми системами.
Комплексный подход к безопасности в Access включает комбинацию шифрования, паролей, защиты кода, использования надежных расположений и цифровых подписей, что позволяет создать достаточно защищенное приложение для большинства сценариев курсовой работы.
Методы Оптимизации Производительности Базы Данных Access+VBA
Оптимизация базы данных – это постоянный процесс, направленный на сокращение времени ответа на запросы, обеспечение быстрого доступа к данным и снижение нагрузки на систему. В Access, как и в любой другой СУБД, производительность может значительно снизиться при росте объемов данных или увеличении числа пользователей, если не применять соответствующие методы оптимизации.
1. Создание Эффективных Индексов:
Это один из самых мощных и простых способов повышения производительности.
- Принцип работы: Индексы создают упорядоченные указатели на данные, позволяя СУБД быстро находить нужные записи, не сканируя всю таблицу.
- Где применять: Создавайте индексы на полях, которые:
- Являются первичными или внешними ключами (Access делает это автоматически для первичных ключей).
- Часто используются в условиях
WHERE(фильтрация записей). - Используются для сортировки (
ORDER BY). - Участвуют в операциях соединения (
JOIN) между таблицами. - Используются в группирующих запросах (
GROUP BY).
- Важность: Создание индексов на полях, используемых в условиях
WHERE,JOIN,ORDER BYиGROUP BY, может многократно ускорить выполнение запросов, поскольку СУБД может напрямую переходить к нужным данным. - Осторожность: Избыточное количество индексов может замедлять операции вставки, обновления и удаления, так как при каждом изменени�� данных необходимо обновлять и индексы. Необходимо найти баланс.
2. Регулярное Сжатие и Восстановление Базы Данных:
Файлы Access (особенно
.mdbи.accdb) могут со временем увеличиваться в размере и фрагментироваться из-за частых операций добавления, изменения и удаления данных.- Назначение: Регулярное сжатие и восстановление базы данных очищает неиспользуемое пространство, реорганизует данные и объекты, что уменьшает размер файла и повышает производительность.
- Частота: Рекомендуется проводить эту операцию регулярно (например, еженедельно или ежемесячно, в зависимости от интенсивности изменений данных).
- Эффект: Может уменьшить размер файла на 20-50% и существенно повысить производительность, особенно при активном добавлении, изменении и удалении данных.
- Как сделать: Файл -> Сведения -> Сжать и восстановить базу данных.
3. Разделение Базы Данных на Интерфейсную и Серверную Части:
Этот метод критически важен для многопользовательских сред.
- Принцип: База данных делится на две части:
- Серверная часть (Back-end): Содержит только таблицы с данными и хранится на сетевом диске или в серверной СУБД (SQL Server).
- Интерфейсная часть (Front-end): Содержит формы, отчеты, запросы, макросы и VBA-код. Каждому пользователю предоставляется локальная копия этой части.
- Преимущества:
- Снижение сетевого трафика: По сети передаются только данные, а не объекты интерфейса. Это снижает объем сетевого трафика на 50-70%, что существенно ускоряет работу в многопользовательских средах.
- Улучшение надежности: Повреждение локальной интерфейсной части у одного пользователя не влияет на данные других пользователей.
- Упрощение обновлений: Обновлять интерфейсную часть можно у каждого пользователя отдельно, не затрагивая общие данные.
- Как сделать: Вкладка «Работа с базами данных» -> «Перемещение данных» -> «База данных Access» -> «Разделить базу данных».
4. Оптимизация SQL-запросов:
Плохо оптимизированные SQL-запросы являются одной из главных причин низкой производительности.
- Выбирайте только необходимые поля: Избегайте
SELECT *. Выбор всех столбцов, когда нужна лишь часть, увеличивает объем передаваемых данных и нагрузку на СУБД. - Используйте индексы: Убедитесь, что поля, используемые в
WHERE,JOIN,ORDER BYиGROUP BY, индексированы. - Избегайте функций в условиях
WHERE: Использование функций в условияхWHERE(например,YEAR(ДатаЗаказа) = 2025вместоДатаЗаказа BETWEEN #01/01/2025# AND #31/12/2025#) препятствует использованию индексов. - Осторожное использование
LIKE:LIKE '%значение%'(поиск подстроки в начале) не может использовать индекс, тогда какLIKE 'значение%'(поиск по началу строки) может. - Упрощайте сложные
JOIN: Чрезмерное количествоJOINбез должной оптимизации может замедлять запросы. - Встроенное средство анализа быстродействия: Access имеет встроенное средство анализа быстродействия (вкладка «Работа с базами данных» -> «Анализатор производительности»), которое проверяет структуру базы данных и данные, предлагая улучшения. Оно может анализировать отдельные объекты или всю базу данных, предлагая такие улучшения, как создание или удаление индексов, изменение типов данных полей, добавление первичных ключей, разбиение таблиц, а также преобразование запросов и макросов для более эффективной работы.
5. Обновление Табличной Статистики:
- Назначение: Табличная статистика содержит информацию о распределении данных в столбцах таблицы (например, количество уникальных значений, диапазон значений). Оптимизатор запросов СУБД использует эту статистику для выбора наиболее эффективного плана выполнения запроса.
- Важность: Регулярное обновление статистики (например, после значительных изменений данных, ежедневно или еженедельно) обеспечивает, что оптимизатор запросов будет принимать корректные решения. В Access это обычно происходит автоматически, но для больших объемов данных или специфических проблем может потребоваться ручная перестройка индексов.
6. Использование Ограничений (Constraints):
- Назначение: Ограничения (например,
PRIMARY KEY,FOREIGN KEY,UNIQUE,CHECK) не только обеспечивают целостность данных, но и предоставляют оптимизатору запросов дополнительную информацию о данных. - Влияние на производительность: Например,
PRIMARY KEYавтоматически создает уникальный кластеризованный индекс, который существенно ускоряет поиск по этому полю.FOREIGN KEYинформирует оптимизатор о связях между таблицами, что может быть использовано для оптимизации операцийJOIN.
Внедрение этих методов оптимизации на этапе разработки и в процессе эксплуатации поможет поддерживать высокую производительность базы данных Access даже при росте ее сложности и объема.
Отладка, Тестирование и Документирование VBA-кода
Завершение разработки программного обеспечения – это не только написание кода, но и тщательная проверка его работоспособности, поиск и исправление ошибок, а также подробное документирование. Эти этапы критически важны для создания надежной, стабильной и понятной системы, соответствующей требованиям курсовой работы.
Средства Отладки VBA в Access
Отладка (debugging) – это процесс поиска и устранения ошибок (багов) в программном коде. VBA включает интегрированную среду разработки (VBE — Visual Basic Editor), которая предоставляет мощные инструменты для эффективной отладки.
1. Интегрированная Среда Разработки VBA (VBE):
Доступ к VBE осуществляется через
Alt + F11из Access. Здесь находятся все модули, формы и отчеты с их кодом.2. Точки Останова (Breakpoints):
- Назначение: Точка останова позволяет приостановить выполнение кода на определенной строке, чтобы проанализировать состояние программы в этот момент.
- Использование: Установите курсор на нужную строку кода и нажмите
F9или щелкните по серой полосе слева от кода. Строка будет выделена красным цветом. Когда выполнение кода достигнет этой строки, оно остановится. - Преимущество: Позволяет сосредоточиться на конкретном участке кода, где, предположительно, возникла проблема.
3. Пошаговое Выполнение Кода:
После остановки в точке останова можно выполнять код по одной строке, наблюдая за его поведением.
F8(Step Into): Выполняет одну строку кода. Если строка содержит вызов другой процедуры или функции,F8переходит внутрь этой процедуры/функции.Shift + F8(Step Over): Выполняет одну строку кода. Если строка содержит вызов процедуры/функции,Shift + F8выполняет эту процедуру/функцию целиком, не заходя внутрь, и переходит к следующей строке текущей процедуры.Ctrl + Shift + F8(Step Out): Выполняет оставшуюся часть текущей процедуры/функции и останавливается на строке, следующей за вызовом этой процедуры/функции.F5(Run / Continue): Продолжает выполнение кода до следующей точки останова или до конца программы.
4. Окна Отладки:
- Окно Locals (Локальные переменные):
- Назначение: Отображает список всех переменных, которые находятся в текущей области видимости (локальные переменные текущей процедуры/функции), а также их текущие значения и типы данных.
- Как открыть: View -> Locals Window.
- Преимущество: Позволяет отслеживать изменения значений переменных в реальном времени во время пошагового выполнения.
- Окно Watch (Контрольные значения):
- Назначение: Позволяет отслеживать значения конкретных переменных или выражений, которые не обязательно находятся в текущей области видимости, или сложных объектов. Можно также установить «условную точку останова», которая срабатывает, когда выражение принимает определенное значение.
- Как открыть: View -> Watch Window.
- Как добавить: Выделите переменную/выражение в коде, щелкните правой кнопкой мыши -> Add Watch.
- Окно Immediate (Непосредственное):
- Назначение: Очень мощный инструмент, позволяющий выполнять команды VBA, проверять значения переменных, изменять их и вызывать процедуры/функции во время паузы в выполнении кода.
- Как открыть: View -> Immediate Window.
- Использование: Можно набрать
? MyVariableдля просмотра значения переменной,MyVariable = 10для изменения значения,Call MyProcedureдля выполнения процедуры.
5. Эффективная Обработка Ошибок с
On Error GoTo:Даже самый тщательно отлаженный код может столкнуться с неожиданными ошибками во время выполнения (runtime errors), например, из-за отсутствия файла, проблем с подключением к БД или некорректных пользовательских данных. Механизм обработки ошибок в VBA позволяет gracefully (изящно) реагировать на такие ситуации, предотвращая аварийное завершение программы.
On Error GoTo [метка]: Перехватывает ошибку и передает управление коду, расположенному после указанной метки.ErrОбъект: После возникновения ошибки, объектErrсодержит информацию о ней:Err.Number(код ошибки),Err.Description(описание ошибки).Resume Next/Resume [метка]: После обработки ошибки можно продолжить выполнение кода.Resume Nextпродолжает с оператора, следующего за тем, где произошла ошибка.Resume [метка]переходит к указанной метке.On Error GoTo 0: Отключает обработку ошибок для текущей процедуры.
Пример эффективной обработки ошибок:
Sub SaveDataSafely() On Error GoTo ErrorHandler ' Устанавливаем обработчик ошибок Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("tblКомандировочныеУдостоверения", dbOpenTable) With rs .AddNew !НомерУдостоверения = "КУ-006" !ДатаВыдачи = Date !IDСотрудника = 999 ' Предположим, такого сотрудника нет, что вызовет ошибку ссылочной целостности .Update ' Здесь может возникнуть ошибка End With rs.Close Set rs = Nothing Set db = Nothing MsgBox "Данные успешно сохранены.", vbInformation Exit Sub ' Важно выйти из процедуры, чтобы не попасть в блок ErrorHandler ErrorHandler: MsgBox "Произошла ошибка при сохранении данных: " & Err.Description & _ vbCrLf & "Код ошибки: " & Err.Number, vbCritical, "Ошибка БД" ' Дополнительные действия: запись в лог-файл, откат транзакции If Not rs Is Nothing Then rs.Close If Not db Is Nothing Then If db.Transactions = 1 Then db.Rollback ' Откатить незафиксированную транзакцию Resume ExitSub ' Перейти к метке выхода из процедуры ExitSub: Set rs = Nothing Set db = Nothing End SubЭффективное использование этих средств отладки и механизмов обработки ошибок значительно повышает качество и устойчивость разработанного приложения.
Методы Тестирования Функциональности БД
Тестирование – это систематический процесс проверки того, что разработанная база данных и сопутствующее приложение работают так, как ожидается, и соответствуют всем поставленным требованиям. Без адекватного тестирования невозможно гарантировать надежность и корректность системы.
1. Разработка Тестовых Сценариев:
Первым шагом является создание набора тестовых сценариев – пошаговых инструкций, описывающих, как использовать систему и какой результат ожидается.
- Позитивные сценарии: Проверка функциональности при корректном вводе данных и выполнении операций.
- Пример: «Ввести новое командировочное удостоверение с корректными датами и существующим сотрудником. Ожидаемый результат: запись успешно сохраняется, отображается в списке командировок.»
- Негативные сценарии: Проверка поведения системы при некорректном вводе данных или исключительных ситуациях.
- Пример: «Попытаться ввести командировочное удостоверение, где дата окончания раньше даты начала. Ожидаемый результат: система выдает сообщение об ошибке валидации, сохранение записи отменяется.»
- Пример: «Попытаться удалить сотрудника, у которого есть связанные командировки (при включенной ссылочной целостности без каскадного удаления). Ожидаемый результат: Access выдает ошибку о нарушении ссылочной целостности.»
- Пограничные сценарии: Проверка поведения на крайних значениях (например, самая ранняя/поздняя дата, минимальное/максимальное числовое значение).
2. Выполнение Тестовых Сценариев:
- Тестирование форм:
- Ввод данных: Проверка, что все поля принимают корректные значения, а валидация VBA срабатывает для некорректных.
- Навигация: Перемещение между записями, открытие связанных форм.
- Кнопки: Проверка работы всех кнопок (сохранить, удалить, открыть отчет).
- Поля со списками: Проверка корректности отображения и выбора значений.
- Тестирование запросов:
- Запросы на выборку: Проверка, что запросы возвращают ожидаемый набор данных с правильными фильтрами и сортировкой.
- Запросы на изменение: Запускать с осторожностью на тестовых данных и проверять, что изменения применяются корректно и только к целевым записям.
- Тестирование отчетов:
- Генерация: Проверка, что отчеты открываются и отображают данные.
- Содержание: Корректность отображаемых данных, правильность расчетов, группировки и сортировки.
- Форматирование: Проверка внешнего вида отчета (шрифты, расположение элементов).
- Тестирование VBA-кода:
- Использование точек останова и пошагового выполнения для проверки логики всех процедур и функций.
- Проверка работы обработчиков событий.
- Специальное тестирование блоков обработки ошибок.
3. Виды Тестирования:
- Модульное тестирование: Проверка отдельных процедур, функций или модулей класса.
- Интеграционное тестирование: Проверка взаимодействия между различными компонентами системы (например, форма -> VBA-код -> запрос -> таблица).
- Системное тестирование: Проверка системы в целом на соответствие всем требованиям.
- Приемочное тестирование: Проверка конечным пользователем или заказчиком на соответствие его ожиданиям.
4. Управление Тестовыми Данными:
- Используйте тестовую копию базы данных, чтобы не повредить рабочие данные.
- Разработайте набор репрезентативных тестовых данных, покрывающих различные сценарии.
Систематическое тестирование является залогом создания качественной курсовой работы, способной продемонстрировать глубокое понимание не только разработки, но и обеспечения надежности программного продукта.
Требования к Оформлению и Документированию Курсовой Работы
Качественная курсовая работа – это не только функциональная база данных, но и грамотно оформленный, исчерпывающий текст, который отражает весь процесс разработки. Документирование является неотъемлемой частью любого проекта и демонстрирует академическую строгость и профессиональный подход студента.
1. Структура Курсовой Работы:
Типичная структура курсовой работы включает следующие разделы:
- Титульный лист: Согласно требованиям учебного заведения.
- Оглавление: Со всеми разделами и подразделами.
- Введение:
- Актуальность темы.
- Цель и задачи работы.
- Объект и предмет исследования.
- Методы исследования.
- Структура работы.
- Глава 1: Теоретические основы:
- Определение ключевых терминов (БД, СУБД, реляционная модель).
- Принципы проектирования реляционных БД (ER-модель, нормализация).
- Обзор Microsoft Access как СУБД и VBA как языка программирования.
- Глава 2: Анализ предметной области и проектирование БД:
- Описание предметной области (например, «Журнал регистрации командировочных удостоверений»).
- Функциональные и нефункциональные требования.
- Концептуальная модель (ER-диаграмма с пояснениями).
- Логическая модель (схема таблиц, описание полей, связей, нормализация).
- Глава 3: Практическая реализация и программный код:
- Описание созданных объектов Access (таблиц, запросов, форм, отчетов).
- Детальное описание пользовательского интерфейса (скриншоты форм, их назначение).
- Описание программного кода VBA (основные модули, процедуры, функции, обработчики событий).
- Листинги ключевых фрагментов VBA-кода с комментариями.
- Глава 4: Безопасность, оптимизация и тестирование:
- Обоснование примененных методов обеспечения целостности и безопасности.
- Методы оптимизации производительности.
- Описание процесса тестирования, тестовые сценарии и результаты.
- Заключение:
- Основные выводы по работе.
- Подтверждение достижения цели и задач.
- Перспективы дальнейшего развития.
- Список использованных источников: Согласно ГОСТу.
- Приложения:
- Полный листинг VBA-кода (если не вставлялся в текст).
- Скриншоты всех форм, отчетов, запросов.
- Пользовательская инструкция.
- Инструкция администратора.
2. Требования к Оформлению Текста:
- Шрифт: Times New Roman, 14 пт.
- Межстрочный интервал: 1,5.
- Поля: Стандартные (верхнее 20 мм, нижнее 20 мм, левое 30 мм, правое 10 мм).
- Нумерация страниц: Сквозная, начиная с введения (на титульном листе номер не ставится).
- Выравнивание: По ширине.
- Заголовки: Четкая иерархия (H1, H2, H3), полужирное начертание, без точки в конце.
3. Оформление Кода VBA:
- Листинги кода: Должны быть вставлены в текст работы (или в Приложения) с использованием моноширинного шрифта (например, Courier New) и выделены рамкой или фоном.
- Комментарии: Код должен быть тщательно прокомментирован, объясняя назначение каждой процедуры, функции и сложных блоков.
- Именование: Соблюдение стандартов именования переменных, процедур, функций (например, венгерская нотация для переменных —
txtFirstName,cmdSave).
4. Оформление ER-диаграмм и Схем:
- ER-диаграмма: Должна быть четкой, понятной, с условными обозначениями, если используются нестандартные нотации. Помещается в раздел проектирования.
- Схемы: Блок-схемы алгоритмов VBA-кода (для сложных процедур), схемы взаимодействия форм и отчетов.
- Подписи: Все рисунки и схемы должны быть пронумерованы и иметь содержательные подписи, а также ссылки в тексте.
5. Скриншоты Пользовательского Интерфейса:
- Каждая разработанная форма и отчет должны быть представлены скриншотами.
- Скриншоты должны быть четкими, с подписями и ссылками в тексте.
6. Список Источников:
- Должен включать академические источники (учебники, монографии, научные статьи), официальную документацию Microsoft.
- Исключить ненадежные источники (блоги, форумы без экспертной проверки).
- Оформление по ГОСТу (например, ГОСТ Р 7.0.5–2008).
Тщательное документирование не только повышает академическую ценность курсовой работы, но и облегчает ее понимание и оценку со стороны преподавателя, а также служит основой для будущих доработок и развития проекта.
Заключение
Разработка базы данных в Microsoft Access с использованием Visual Basic for Applications (VBA) представляет собой комплексную, но чрезвычайно ценную задачу для студента, стремящегося освоить фундаментальные принципы информационных технологий. Данное методологическое руководство по созданию курсовой работы охватило полный цикл разработки, от глубокого погружения в теоретические основы до практической реализации, обеспечения безопасности и оптимизации, а также детального документирования.
Мы начали с основополагающих концепций реляционной модели, детально разобрав ER-моделирование и процесс нормализации от 1НФ до 5НФ, подчеркнув их критическую роль в создании устойчивой и эффективной структуры данных. Было показано, как Microsoft Access, несмотря на свою «настольную» природу, может быть использован как полноценная СУБД и даже как интерфейсный инструмент для более мощных серверных решений, а также рассмотрены все его ключевые объекты.
Особое внимание было уделено программированию на VBA, где мы разобрали основы синтаксиса, важность явного объявления переменных с
Option Explicit, механизмы работы процедур, функций и объектной модели Access. Проведен глубокий сравнительный анализ библиотек DAO и ADO, предоставивший четкие критерии для их выбора в различных сценариях. Концепция событийно-управляемого программирования и создание обработчиков событий были представлены как ключ к интерактивности приложения.На примере «Журнала регистрации командировочных удостоверений» мы продемонстрировали пошаговую реализацию базы данных, охватив этапы анализа требований, концептуального и логического проектирования, а также физической реализации таблиц, запросов, форм и отчетов. Были приведены конкретные примеры VBA-кода для автоматизации, валидации данных и улучшения пользовательского интерфейса, включая возможности объектно-ориентированного подхода.
Не менее важными аспектами стали обеспечение целостности данных посредством транзакций и нормализации, а также комплексный подход к безопасности, включающий шифрование AES-128, защиту MDE/ACCDE-файлов, цифровые подписи и надежные расположения. Мы также подробно рассмотрели методы оптимизации производительности, такие как индексирование, сжатие БД, разделение на front-end/back-end, оптимизация SQL-запросов и использование встроенных инструментов Access. Наконец, были представлены эффективные подходы к отладке VBA-кода с использованием VBE и его инструментов, а также принципы тестирования и требования к академическому документированию курсовой работы.
Таким образом, все поставленные цели и задачи данного методологического руководства были успешно достигнуты. Студент, следуя предложенным рекомендациям, сможет не только создать функциональную базу данных в Access с VBA, но и продемонстрировать глубокое теоретическое понимание и практические навыки, соответствующие высоким стандартам ИТ-образования. Какие новые возможности открывает этот опыт для будущей карьеры?
Дальнейшее развитие разработанной базы данных может включать интеграцию с внешними системами (например, с кадровыми системами), реализацию более сложных отчетов и аналитических панелей, расширение функциональности для управления расходами по командировкам, а также миграцию на серверную СУБД (например, SQL Server) для обеспечения большей масштабируемости и надежности в корпоративной среде. Эти направления послужат основой для последующих исследовательских и дипломных проектов.
Список использованной литературы
- Кузьменко В.Г. Visual Basic 6. Бином, 2003.
- Лукин С.Н. Visual Basic. Самоучитель. Диалог-МИФИ, 2007.
- Мак-Федрис П. Формы, отчеты и запросы в Microsoft Access 2003. Вильямс, 2003.
- Сафронов И. Visual Basic в задачах и примерах. БХВ-Петербург, 2006.
- Хабракен Д. Microsoft Access 2000. Шаг за шагом. АСТ, 2004.
- Как ускорить работу Access. Служба поддержки Майкрософт. URL: https://support.microsoft.com/ru-ru/office/как-ускорить-работу-access-3ac5959f-d3c2-4a00-9993-274737fbc754 (дата обращения: 15.10.2025).
- Программирование на VBA в Access. URL: https://bspu.b/upload/documents/fakultets/fmf/kaf_prikl_inf/metod_mater/metod_posobiya/access_vba_posobie.pdf (дата обращения: 15.10.2025).
- Модель “Сущность-Связь”. Документация RedDatabaseSQLBook 0.1. URL: https://reddatabasesqlbook.readthedocs.io/ru/latest/er_model.html (дата обращения: 15.10.2025).
- Использование средства анализа быстродействия для оптимизации базы данных Access. Служба поддержки Майкрософт. URL: https://support.microsoft.com/ru-ru/office/использование-средства-анализа-быстродействия-для-оптимизации-базы-данных-access-a7541738-160a-4299-80a5-296489379659 (дата обращения: 15.10.2025).
- Нормализация отношений при проектировании БД. Реляционные базы данных. URL: http://www.intuit.ru/studies/courses/2186/61/lecture/14353?page=4 (дата обращения: 15.10.2025).
- ER: диаграммы сущность — связь. Сайт Кривошеина Михаила. URL: http://www.mkrivoshein.ru/er-diagrams.html (дата обращения: 15.10.2025).
- Глава 8. Элементы модели «сущность-связь». CITForum.ru. URL: http://citforum.ru/database/foundations/chapt8.shtml (дата обращения: 15.10.2025).
- Доклад «Нормализация данных в базе данных». Алые паруса, 2022. URL: https://nsportal.ru/ap/library/nauchno-tekhnicheskoe-tvorchestvo/2022/06/01/doklad-normalizatsiya-dannyh-v-baze-dannyh (дата обращения: 15.10.2025).
- Реляционные базы данных. Нормализация. METANIT.COM. URL: https://metanit.com/sql/tutorial/2.3.php (дата обращения: 15.10.2025).
- Лекция 6: Нормальные формы отношений. Создание логической модели реляционной базы данных. Интуит. URL: http://www.intuit.ru/studies/courses/2186/61/lecture/232 (дата обращения: 15.10.2025).
- Базы данных: Теория нормализации. Оренбургский государственный университет. URL: https://new.osu.ru/sites/default/files/metod_ukazaniya_BD_teoriya_normalizacii.pdf (дата обращения: 15.10.2025).
- Объявление переменных и констант в VBA Access. Базы данных Access. URL: https://access—bd.ru/vba/obyavlenie-peremennyx-i-konstant.html (дата обращения: 15.10.2025).
- Работа с записями Access VBA с использованием DAO или ADO: 3 ключевых момента с наборами записей VBA. Tmarket.ge. URL: https://tmarket.ge/ru/работа-с-записями-access-vba-с-использованием-dao-или-ado-3-ключевых-момента-с-наборами-записей-vba/ (дата обращения: 15.10.2025).
- Настройка производительности баз данных. Gals Software. URL: https://gals-software.com/blog/database-performance-tuning/ (дата обращения: 15.10.2025).
- Безопасность в Access 2010. Служба поддержки Майкрософт. URL: https://support.microsoft.com/ru-ru/office/безопасность-в-access-2010-38439369-14a9-462d-a600-0e1d51a66b99 (дата обращения: 15.10.2025).
- Основные принципы проектирования баз данных. URL: http://www.ict.edu.ru/ft/005698/gl1.html (дата обращения: 15.10.2025).
- Новые возможности Access. Microsoft Learn. URL: https://learn.microsoft.com/ru-ru/office/client-developer/access/access-whats-new-access (дата обращения: 15.10.2025).
- Переменные, константы и типы данных. bspu.b. URL: http://bspu.b/upload/documents/fakultets/fmf/kaf_prikl_inf/metod_mater/metod_posobiya/vba.pdf (дата обращения: 15.10.2025).
- Архитектура Microsoft Access. SPbU Researchers Portal. URL: https://research.spbu.ru/ru/publications/arkhitektura-microsoft-access/file/get (дата обращения: 15.10.2025).
- Предисловие ЧАСТЬ I. ОСНОВЫ ПРОЕКТИРОВАНИЯ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ Гл. URL: https://studfile.net/preview/16603501/page:2/ (дата обращения: 15.10.2025).
- Основы проектирования реляционных баз данных средствами СУБД Microsoft Access. URL: https://rep.bntu.by/handle/data/2093 (дата обращения: 15.10.2025).
- Работа с базами данных с использованием VBA MS Excel. Лаборатория РоботоТехники. Горно-Алтайский государственный университет. URL: http://altspu.ru/Files/library/uchebnie_posob_gagu_2016/Rabota_s_bazami_dannyx_s_ispolzovaniem_VBA_MS_Excel.pdf (дата обращения: 15.10.2025).
- MS Access. VBA. URL: https://ntu.edu.ua/sites/default/files/files/shkaleto_v_i_-_lekcii_po_disc_osnovy_programmirovaniya_i_informacionnyh_tehnologij_programmirovanie_v_access_na_yazyke_vba_0.pdf (дата обращения: 15.10.2025).
- Объект Recordset (DAO). Microsoft Learn. URL: https://learn.microsoft.com/ru-ru/office/vba/api/overview/access/recordset-object-dao (дата обращения: 15.10.2025).
- Создание запроса, формы или отчета в Access. Служба поддержки Майкрософт. URL: https://support.microsoft.com/ru-ru/office/создание-запроса-формы-или-отчета-в-access-646927d6-3e42-45a8-941c-8e4726487e95 (дата обращения: 15.10.2025).
- Основные сведения о создании баз данных. Служба поддержки Майкрософт. URL: https://support.microsoft.com/ru-ru/office/основные-сведения-о-создании-баз-данных-01b34e56-11f3-4d0c-bfb0-928d323b202c (дата обращения: 15.10.2025).
- Система управления базами данных Microsoft Access. SPbU Researchers Portal. URL: https://research.spbu.ru/ru/publications/sistema-upravleniya-bazami-dannykh-microsoft-access/file/get (дата обращения: 15.10.2025).
- Защита базы данных в Microsoft Access. Студенческий научный форум, 2014. URL: https://scienceforum.ru/2014/article/2014002622 (дата обращения: 15.10.2025).
- Функциональные возможности MS Access. URL: https://static.mgpu.ru/modules/pages/files/2015/02/14/Funkcionalnye_vozmozhnosti_MS_Access.doc (дата обращения: 15.10.2025).
- Создание реляционной базы данных в приложении Microsoft Access. Ивановский Государственный Политехнический Университет. URL: https://ivgpu.com/sites/default/files/2021-02/metodich_ukazaniya_bd_access.pdf (дата обращения: 15.10.2025).
- Оптимизация работы с базами данных: методы и рекомендации. Евробайт. URL: https://eurobyte.ru/blog/optimizatsiya-raboty-s-bazami-dannyh-metody-i-rekomendatsii/ (дата обращения: 15.10.2025).
- Программирование на Visual Basic. Microsoft Access. Использование запросов в ADO и DAO. Leadersoft.ru. URL: https://leadersoft.ru/microsoft-access/microsoft-access-ispolzovanie-zaprosov-v-ado-i-dao.html (дата обращения: 15.10.2025).
- Обзор методов доступа к данным. alibek09@narod.ru. URL: http://alibek09.narod.ru/vb_dao_ado.html (дата обращения: 15.10.2025).
- Что такое объектно-ориентированное программирование? Объекты VBA. URL: https://ms-access.biz/chto-takoe-obektno-orientirovannoe-programmirovanie.html (дата обращения: 15.10.2025).
- Настройка или изменение безопасности Access 2003 на уровне пользователя в текущих версиях Access. Microsoft Support. URL: https://support.microsoft.com/ru-ru/office/настройка-или-изменение-безопасности-access-2003-на-уровне-пользователя-в-текущих-версиях-access-6d5e758e-0a06-4074-8848-35639149479e (дата обращения: 15.10.2025).
- Безопасность баз данных. Средства защиты БД Access. SPbU Researchers Portal. URL: https://research.spbu.ru/ru/publications/bezopasnost-baz-dannykh-sredstva-zashchity-bd-access/file/get (дата обращения: 15.10.2025).
- Создание запроса на создание таблицы. Служба поддержки Майкрософт. URL: https://support.microsoft.com/ru-ru/office/создание-запроса-на-создание-таблицы-a91d1822-26f5-467f-be24-949437905d42 (дата обращения: 15.10.2025).
- Лабораторная работа № 1. Создание таблиц, запросов, форм, отчетов. Цель. Инфоурок. URL: https://infourok.ru/laboratornaya-rabota-sozdanie-tablic-zaprosov-form-otchetov-cel-315664.html (дата обращения: 15.10.2025).
- Реферат «Создание таблиц, запросов, отчётов в MS Access». Инфоурок. URL: https://infourok.ru/referat-sozdanie-tablic-zaprosov-otchyotov-v-ms-access-282662.html (дата обращения: 15.10.2025).
- Переход от процедурного подхода к объектно-ориентированному. Online presentation. URL: https://ppt-online.org/39908 (дата обращения: 15.10.2025).
- Тема 1.2. Объектно-ориентированное программирование. Язык Visual Basic for Application. URL: https://moodle.bsu.by/pluginfile.php/31422/mod_resource/content/1/VBA.pdf (дата обращения: 15.10.2025).
- Лаб4.doc. URL: https://ir.bntu.by/bitstream/handle/data/2093/%D0%9B%D0%B0%D0%B14.doc?sequence=1&isAllowed=y (дата обращения: 15.10.2025).
- ООП (объектно-ориентированное программирование) — что это простыми словами: принципы и суть. Skillfactory media. URL: https://skillfactory.ru/blog/chto-takoe-oop (дата обращения: 15.10.2025).
- Объявление переменных: Осуществляется с помощью оператора