Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Иллюстрированный самоучитель по Access 2002.doc
Скачиваний:
129
Добавлен:
16.11.2019
Размер:
2.91 Mб
Скачать

Программа 16.3. Открытие таблицы в текущей базе данных

Dim db As Database

Dim rs As Recordset

' Получаем доступ к текущей базе данных:

Set db = CurrentDb

' Открываем таблицу сообщений для игрока (это связанная таблица):

Set rs = db.OpenRecordset("Сообщения", dbOpenDynaset)

' Код использования таблицы ... .

rs.Close ' Закрыли таблицу

Set rs = Nothing ' Очистили объектные переменные

Set db = Nothing

Программное изменение структуры и схемы данных

Для изменения схемы данных создан язык определения данных (DDL, Data-Definition Language). Инструкции на языке DDL позволяют выполнять действия по изменению схемы данных и структуры объектов данных, например:

  • создавать и удалять таблицы;

  • добавлять и удалять из таблиц поля и индексы;

  • создавать и удалять связи между таблицами.

В интерфейсе DАО имеется набор специальных объектов, который является интерфейсом для доступа к средствам DDL. Таким образом, с помощью объектов DАО можно управлять структурой таблиц и схемой данных, не составляя самих инструкций на языке DDL.

Следующий пример программного кода (программа 16.4) взят из процедуры initGame сервера приложения "Игра в доминирование". Этот пример иллюстрирует использование инструкций на языке DDL для удаления таблицы со старой структурой и создания новой таблицы с заданной структурой. Аналогичные действия можно выполнить, пользуясь объектно-ориентированным интерфейсом DАО. Целью этой процедуры является изменение структуры таблицы "ПолеИгрок", поэтому, вообще говоря, можно было бы изменить набор полей этой таблицы с помощью инструкции DDL ALTER TABLE. Эта инструкция позволяет удалить или добавить в таблицу поле или составной индекс. Удаление и добавление полей в таблицу средствами DDL через интерфейс DАО представлено в программе 16.5.

Замечание

Необходимо помнить о том, что изменение структуры связанных таблиц запрещено. Поэтому в примере (программы 16.4 и 16.5) для доступа к таблице "ПолеИгрок" открывается база данных DominationGame.mdb, в которой сохранена эта таблица, а не используется текущая база данных DominationGameServer.mdb, в которой установлена связь с этой таблицей.

Программа 16.4. Удаление и создание таблицы с помощью инструкций ddl

Dim db As Database

Dim fieldSize As Long, i As Long

Dim strDDL As String

' Узнаем линейный размер игрового поля, выраженный в клетках

fieldSize = CLng(get_parameter("РазмерПоля"))

' Открываем базу данных, в которой хранится нужная таблица

Set db = OpenDatabase(CurrentProject.Path & "\DominationGame.mdb")

' Удалить старую таблицу "ПолеИгрок" strDDL = "DROP TABLE ПолеИгрок;"

' Если таблица не существует, удаление вызовет ошибку

On Error GoTo the_next_2

db.Execute strDDL the_next_2:

On Error GoTo 0

' Создать новую таблицу "ПолеИгрок"

strDDL = "CREATE TABLE ПолеИгрок ("

For i = 1 To fieldSize - 1

strDDL = strDDL & get_column_name(i) & " TEXT(20), "

Next i

strDDL = strDDL & get_column_name(fieldSize) & " TEXT(20) );"

db.Execute strDDL

' Прочие действия ... db.Close