- •Базы данных
- •Введение
- •Часть 1. Проектирование баз данных
- •1.1. Некоторые понятия и определения
- •1. 2. Модели данных
- •1.2.1. Иерархическая модель данных
- •1.2.2. Сетевая модель данных
- •1.2.3. Реляционная модель данных Основные определения
- •Типы связей между отношениями
- •1.3. Классификация баз данных
- •1.4. Цели проектирования баз данных
- •1.5. Проектирование баз данных с использованием универсального отношения
- •1.5.1. Универсальное отношение
- •1.5.2. Проблемы, вызываемые использованием универсального отношения
- •Проблема вставки
- •Проблемы обновления
- •Проблемы удаления
- •1.5.3. Нормальная форма Бойса -Кодда
- •Функциональные зависимости
- •Возможный ключ и детерминант
- •Общий подход к декомпозиции
- •Анализ исходных аномалий
- •1.5.4. Возможные потери фз при декомпозиции
- •1.5.5. Избыточные функциональные зависимости
- •Приемы удаления избыточных фз
- •Минимальное покрытие
- •Модернизированный алгоритм проектирования бд
- •1.6. Метод er - проектирования
- •1.6.1. Сущности и связи
- •1.6.2. Степень связи
- •1.6.3. Переход от диаграмм er – типа к отношениям
- •Предварительные отношения для бинарных связей степени 1:1
- •Предварительные отношения для бинарных связей степени 1:n.
- •Предварительные отношения для бинарных связей степени n:m
- •1.6.4. Дополнительные конструкции, используемые в er - методе
- •Необходимость связей более высокого порядка
- •Предварительные отношения для трехсторонних связей
- •Использование ролей
- •1.6.5. Последовательность проектирования бд при использовании er- метода
- •1.6.6. Проверка отношений на завершающейся фазе проектирования
- •1.7. Другие нормальные формы
- •1.8. Контрольные вопросы
- •Часть 2. Специальные аспекты работы с базами данных
- •2.1. Защита данных в базе
- •2.2.1. Общие вопросы защиты данных
- •2.2.2. Реализация защиты данных в различных системах
- •Управление доступом в sql
- •Реализация системы защиты в ms sql Server
- •2.2. Обеспечение целостности данных
- •2.3. Организация параллельных процессов обработки данных
- •2.4. Восстановление бд
- •2.4.1. Уровни восстановления.
- •2.4.2. Восстановление и логический элемент работы
- •Требования к лэр
- •2.4.3. Промежуточное восстановление
- •2.4.4. Длительное восстановление
- •2.5. Математический аппарат, используемый при работе с реляционной базой данных
- •2.5.1. Теоретико-множественные операции реляционной алгебры
- •2.5.2. Специальные операции реляционной алгебры
- •2.6. Контрольные вопросы
- •Часть 3. Разработка приложений для работы с базами данных
- •3.1. Краткий обзор субд
- •3.2. Субд Access
- •3.2.1. Вводные замечания
- •3.2.2. Создание базы данных
- •3.2.3. Создание и работа с таблицами
- •3.2.4. Работа с запросами
- •3.2.5. Создание форм
- •3.2.6. Отчеты в Access
- •3.2.7. Макросы в Access
- •Преобразование макросов в программы на Visual Basic
- •3.2.8. Работа с внешними данными
- •3.3. Программирование в Access
- •3.3.1. Вводные замечания
- •3.3.2. Объявление переменных
- •3.3.3. Константы
- •3.3.4. Тип данных Variant
- •3.3.5. Пользовательские типы данных
- •3.3.5.Операторы, команды и выражения в vba
- •3.3.7. Процедуры vba
- •3.3.8. Управляющие структуры в vba
- •Работа с управляющими структурами
- •3.3.9. Объекты в Access
- •3.3.10. Классы в Access
- •3.3.11. Работа с ошибками в vba
- •3.4.Работа в ms sql –Server
- •3.4.1. Основные количественные показатели системы sql-сервер
- •3.4.2. Создание баз данных
- •3.4.3. Создание таблицы
- •3.4.4. Извлечение данных
- •3.4.5. Добавление данных
- •3.4.6. Изменение данных
- •3.4.7. Удаление данных
- •3.5. Контрольные вопросы
- •Цитированная литература
- •Оглавление
- •Часть 1. Проектирование баз данных 3
- •Часть 2. Специальные аспекты работы с базами данных 71
- •Часть 3. Разработка приложений для работы с базами данных 114
3.3.11. Работа с ошибками в vba
Виды ошибок. Ошибки можно разделить на следующие три вида: ошибки компиляции; ошибки периода выполнения; логические ошибки.
Ошибки компиляции. Ошибки компиляции проистекают из ошибок в тексте кода. Если во время разработки введено неправильное ключевое слово, пропущена необходимая пунктуация или, например, использована инструкция Next без соответствующего инструкции For, Access обнаружит эти ошибки при компиляции приложения.
Если установлена функция Проверка синтаксиса во вкладке Модуль окна диалога Параметры, то при появлении синтаксической ошибки во время ввода текста в окно редактора кода Access немедленно выведет на экран сообщение об ошибке.
Чтобы установить опцию Проверка синтаксиса необходимо:
1. В меню Сервис выбрать команду Параметры и в окне диалога Параметры открыть вкладку Модуль.
2.В разделе Программирование установить флажок Проверка синтаксиса
Ошибки периода выполнения. Ошибки периода выполнения возникают, когда приложение выполняется и Access обнаруживает, что инструкция делает попытку выполнить недопустимое или невозможное действие. Пример — деление на ноль. Прежде чем приложение обнаружит эту ошибку, его необходимо запустить на выполнение.
Логические ошибки. Логические ошибки имеют место, когда приложение работает не так, как это планировалось разработчиком. Приложение может иметь синтаксически правильный код, не выполнять недопустимых операций, но, однако, выдавать неправильные результаты. Обнаружить логические ошибки можно только в ходе тестирования приложения и анализа результатов.
Как избежать ошибок? Имеется несколько общих рекомендаций, позволяющих уменьшить количество ошибок в приложении:
• каждая процедура обработки события и каждая процедура общей области должны иметь определенную, четкую цель;
• не следует жалеть комментариев. При последующем анализе кода комментарии существенно облегчают понимание назначения каждой процедуры;
• необходимо, когда возможно, использовать явные ссылки на объекты. Объекты нужно объявлять так, как они представлены в окне Классы окна Просмотр объектов вместо использования типа Variant или общего типа данных Object;
• рекомендуется разработать единообразную схему именования для переменных и объектов приложения;
• один из наиболее общих источников ошибок — опечатки в именах переменных или элементов управления. Избежать этого можно, используя инструкцию Option Explicit.
Управление ошибками. Ошибки периода выполнения могут останавливать выполнение программного кода. В этих ситуациях обычно у пользователя нет никаких средств, которые позволили бы ему продолжить работу в приложении. Другие ошибки могут и не прерывать выполнения, но обусловливают непредсказуемые результаты.
Чтобы предупредить такие ситуации, нужно использовать возможности обработки ошибок, предоставляемые Access. Эти средства позволяют перехватывать ошибки и выполнять некоторое корректирующее действие. Когда происходит ошибка, Access устанавливает личные свойства объекта Err, такие, как номер ошибки, ее описание и т. д. Объект Err и его свойства можно использовать в подпрограмме обработки ошибок для организации интеллектуального поведения приложения при наступлении ситуации ошибки.
Разработка процедур обработки ошибок. Процедура обработки ошибки — подпрограмма, предназначенная для перехвата и обработки ошибок приложением. Процедуры обработки ошибок следует вводить в любую процедуру, где возможно предвидеть возникновение ситуаций ошибки (приходится допустить, что теоретически для любой инструкции возможны условия ошибки). Процесс проектирования процедуры обработки ошибки включает три этапа:
1. Установить ловушку для ошибки, сообщив приложению, куда следует выполнить переход (какую подпрограмму обработки ошибки выполнить), если происходит ошибка.
"Ловушку" определяет инструкция On Error, которая направляет поток выполнения приложения на метку, отмечающую начало подпрограммы обработки ошибки.
Ловушка ошибки активируется, когда Visual Basic выполняет инструкцию On Егrоr, и остается активированной до тех пор, пока активна содержащая ее процедура, то есть до выполнения инструкции Exit Sub, Exit Function, Exit Property, End Sub, End Function или End Property этой процедуры. Хотя, в любой данной процедуре в любой момент может активироваться только одна ловушка ошибки, можно создавать несколько альтернативных ловушек, активируя их при разных ситуациях. Можно также деактивировать ловушку ошибки, используя специальный синтаксис инструкции On Error : On Error GoTo 0.
Для настройки перехода к подпрограмме обработки ошибок используется инструкция On Error GoTo строка, где строка указывает метку, идентифицирующую код обработки ошибок.
2. Написать подпрограмму обработки ошибок, реагирующую на все ошибки, которые данной ситуации можно предусмотреть.
Первый шаг при написании подпрограммы обработки ошибок — введение метки строки, отмечающей начало подпрограммы. Метка строки должна иметь некоторое описательное имя и должна заканчиваться двоеточием. Общее соглашение предусматривает размещение кода обработки ошибок в конце процедуры непосредственно после инструкций Exit Sub, Exit Function или Exit Property. Это позволяет процедуре в случае отсутствия ошибок не выполнять код обработки ошибок.
Тело подпрограммы обработки ошибок содержит код, который фактически управляет ошибкой обычно в форме инструкции Select Case или If...Then...Else. Необходимо заблаговременно определить, какие ошибки могут происходить, и обеспечить ход действий для каждой из них, например, пригласив пользователя вставить диск в случае ошибки "Устройство недоступно". Помимо этого, всегда нужно обеспечивать возможность обработки любых непредвиденных ошибок. Для этого можно использовать предложение Else или Case Else.
Свойство Number объекта Err содержит числовой код, представляющий самую последнюю ошибку периода выполнения. Используя объект Err в комбинации с инструкцией Select Case или If….Then….Else, можно предпринять определенное действие для любой ошибки.
Примечание. Строка, содержащаяся в свойстве Description объекта Err, поясняет ошибку, ассоциированную с текущим номером ошибки. Точная формулировка описания может изменяться с версиями Access. Следовательно, чтобы идентифицировать определенную ошибку, нужно использовать Err Number вместо Err.Description.
3. Выйти из подпрограммы обработки ошибок.
В зависимости от обстоятельств, для выхода из подпрограммы обработки ошибки можно использовать любую из инструкций, приведенных в следующей таблице:
Инструкции |
Описание |
Resume [0] |
Выполнение программы продолжается с инструкции, которая обусловила ошибку, или с последнего вызова процедуры, содержащей подпрограмму обработки ошибок. Эту инструкцию следует использовать для повтора операции после исправления условия, которое вызвало ошибку. |
Resume Next |
Выполнение программы продолжается с инструкции, следующей непосредственно за той, которая обусловила ошибку. Если ошибка произошла вне процедуры, которая содержит процедуру обработки ошибки, выполнение продолжается с инструкции, следующей за вызовом той процедуры, в которой произошла ошибка (если вызываемая процедура не имеет активированной процедуры обработки ошибки). |
Resume строка |
Выполнение программы продолжается с метки, специфицированной параметром строка, где строка — имя метки или номер строки, отличный от нуля. Метка должна быть в той же процедуре, где и процедура обработки ошибки. |
Err.Raise Number:= номер |
Вызывает ошибку периода выполнения. Когда эта инструкция выполняется внутри подпрограммы обработки ошибок, Access ищет список вызовов для другой подпрограммы обработки ошибок. |