- •Иллюстрированный самоучитель по Access 2002
- •Глава 1. Общие сведения о Microsoft Access 2002
- •Базы данных как средство хранения и обработки информации
- •Запуск Access и открытие баз данных
- •Создание новой базы данных
- •Рабочая среда Access
- •Использование справочной системы
- •Вызов окна справки
- •Глава 2 .
- •Основные режимы работы с таблицами
- •Создание таблиц
- •Определение полей
- •Свойства полей таблицы
- •Использование Мастера подстановок
- •Форматы отображения данных
- •Примеры:
- •Определение маски ввода
- •Вставка, удаление и переименование полей таблицы
- •Вод и проверка данных
- •Изменение внешнего вида таблицы
- •Сортировка данных в таблице
- •Поиск и замена данных
- •Фильтрация данных
- •Часть III.
- •Способы совместного использования баз данных
- •Пример сетевого приложения
- •Организация совместного доступа к данным и объектам
- •Организация обмена данными между компонентами сетевого приложения
- •Создание и использование рабочей области
- •Программа 16.1. Использование рабочей области Jet, открытой по умолчанию
- •Программа 16.2. Создание рабочей области Jet
- •Открытие источника данных
- •Программа 16.3. Открытие таблицы в текущей базе данных
- •Программное изменение структуры и схемы данных
- •Программа 16.4. Удаление и создание таблицы с помощью инструкций ddl
- •Программа 16.5. Изменение структуры таблицы с помощью интерфейса dао
- •Выполнение операций с данными
- •Программа 16.6. Добавление записи в таблицу
- •Программа 16.7. Изменение текущей записи в таблице
- •Программа 16.8. Удаление текущей записи в таблице
- •Программная синхронизация доступа к данным
- •Программа 16.9. Синхронизация записи изменений в источнике данных
- •Программа 16.10. Сделать паузу на заданное количество секунд в работе приложения
- •Выполнение транзакций
- •Программа 16.11. Применение механизма транзакций
- •Защита сетевого приложения Access
- •Защита базы данных на уровне пользователей
- •Рава доступа в приложении "Игра в доминирование"
- •Часть IV. Приложения
- •Правила игры в доминирование
- •Архитектура приложения
- •Функциональное описание приложения
- •Интерфейс пользователя
- •Установка сетевого приложения "Игра в доминирование"
- •Параметры защиты приложения "Игра в доминирование"
Программа 16.7. Изменение текущей записи в таблице
' Увеличиваем счет игрока, сделавшего ход
' Делаем текущей запись, содержащую данные для нужного игрока
rs.FindFirst "[ИмяИгрока] = '" & newPlayer & "'"
rs.Edit ' Переводим запись в режим правки
rs!Счет = rs!Счет + newCount ' Изменяем значение поля Счет
rs.Update ' Сохраняем изменения
rs.Bookmark = rs.LastModified ' Делаем измененную запись текущей
Программа 16.8. Удаление текущей записи в таблице
playerQueryCode = rs!КодЗаявки ' Сохраняем параметры заявки
playerTrial = rs!Значение ' во временных переменных
rs.Delete ' и удаляем заявку из таблицы
Для перемещения по записям используются методы Move, MoveFirst, MoveNext, MovePrev, MoveLast объекта Recordset. Метод MoveLast перемещает курсор на последнюю запись в наборе, что приводит к загрузке в набор всех записей. После этого можно прочитать значение свойства Count объекта Recordset. Оно будет соответствовать общему количеству записей в наборе.
Замечание
Удаление записей и объектов из базы данных приводит к тому, что файл базы данных становится фрагментированным и место, занимаемое им на диске, используется нерационально. Чтобы дефрагментировать файл базы данных, используют процедуру сжатия. Ее можно выполнить с помощью команды Сервис, Служебные программы, Сжать и восстановить базу данных (Tools, Database Utilities, Compact and Repair Database) или программно — с помощью метода CompactDatabase объекта DBEngine. Можно также установить флажок Сжимать при закрытии (Compact on Close) в диалоговом окне Параметры (Options) (команда Сервис, Параметры (Tools, Options), вкладка Общие (General)), чтобы сжатие базы данных проводилось автоматически при ее закрытии. Подробнее процедура сжатия описана в гл. 20.
Программная синхронизация доступа к данным
При одновременном доступе нескольких пользователей к одной и той же записи в источнике данных могут возникнуть конфликты. Например, конфликты могут возникать при выполнении метода Update или Delete объекта Recordset и метода OpenDatabase объекта Workspace или DBEngine. Предотвращение конфликтов зависит от настройки Access, касающейся методов блокировки записей, режима доступа к базе данных, периодов обновления данных. Об установке этих параметров мы уже говорили в разд. "Организация совместного доступа к данным и объектам" этой главы. Более подробную информацию можно найти в справочной системе Access.
При программном доступе к совместно используемым базам данных необходимо организовать собственную обработку ошибок, появляющихся при попытке выполнить операции, которые могут привести к возникновению конфликтов. В приложении "Игра в доминирование" используется метод блокировки на уровне записей, блокируются изменяемые записи. В этом случае при возникновении конфликта самым простым решением является ожидание момента, когда заблокированная запись будет освобождена другим пользователем. Этот подход достаточно просто реализовать в процедуре на VBA, используя оператор Resume для повторного выполнения действия через некоторый интервал времени (сделав паузу). Назовем этот способ синхронизацией доступа к данным.
Рассмотрим в качестве примера синхронизации функцию отправки сервером сообщения одному из игроков (программа 16.9). Вспомогательная функция doPause, позволяющая сделать паузу в работе приложения на заданное количество секунд, приведена в программе 16.10.