Программирование в ACCESS 2000, страница 8

Листинг 5.12. Удаление таблицы (ОАО — вариант 1)

     Sub DeleteTempTableO

     Dim db As Database,

Set db = CurrentDB

'удаляем таблицу из семейства TableDefs

db.TableDefs.Delete "ВремТовары"

'обновляем семейство TableDefs

     db.TableDefs.Refresh

     db.Close

     End Sub

Существует еще один способ изменения структуры базы данных — использова-ше метода Execute объекта Database для выполнения инструкций языка SQL. Этот 1етод позволяет выполнить любую инструкцию языка, в том числе и подмноже-тво инструкций языка определения данных DDL (Data Definition Language). 5 листингах 5.13 и 5.14 приведены примеры тех же процедур, но написанных использованием инструкций языка DDL.

Листинг 5.13. Создание таблицы (ОАО — вариант 2) Sub CreateTempTable   ()

Dim db As  Database,   strDDL As  String

Set  db = CurrentDb

'создаем новую таблицу

strDDL  =   "CREATE  TABLE  ВремТовары"

strDDL =  strDDL &  "КодТовара ТЕХТ(5),"

strDDL  =  strDDL &  "Наименование TEXT(50),"

strDDL  =  strDDL &  "Описание ТЕХТ(255)"

db.Execute  strDDL

'закрываем базу данных

db.Close

End Sub

Листинг 5.14. Удаление таблицы (DAO — вариант 2) Sub DeleteTempTableQ

Dim db As Database, strDDL As String

Set db = CurrentDB

'удаляем таблицу из семейства TableDefs

strDDL = "DROP TABLE ВремТовары"

db.Execute strDDL

db.Close

End Sub

Для изменения структуры таблицы следует использовать свойства объектов Field мейства Fields объекта TableDef или инструкцию DDL ALTER TABLE.

Например, чтобы удалить все поля из таблицы ВремТовары, нужно выполнить цикл:

For i = 1 То db.TableDefs("BpeMToBapbi").Fields.Count

db.TableDefs("ВремТовары").Fields.Delete get_column_name(i)

Next  i

В качестве аргумента метода Delete указывается имя удаляемого поля, возвраща-зе функцией get_column_name. Добавить новое поле можно так же, как это сазано для новой таблицы. Используя свойства объекта Field, можно изменить >йства любого поля таблицы. С инструкцией ALTER TABLE и другими инструк-ши SQL вы познакомитесь в уроке 6.

В модели ADO процессы создания, изменения и удаления таблиц аналогичны описанным выше процессам в модели DАО, только вместо объекта Database используется объект Catalog, вместо семейства TableDefs — семейство Tables, а вместо семейства Fields — семейство Columns библиотеки ADOX. Пример, приведенный в листинге 5.15, демонстрирует применение этих объектов.

Листинг 5.15. Создание временной таблицы (ADO)

Dim cat As ADOX.Catalog, tbl As ADOX.Table

Set cat = New ADOX.Catalog   

'открываем  каталог

cat.ActiveConnection = "Provider=Microsoft.Jet .OLEDB.4.0;" & _

               "Data  5ource=C: \Склад.mdb"

‘создаем новый  объект Table

Set  tbl = New ADOX.Table

With  tbl

.Name =  "ВремТовары" 'создаем  поля  и добавляем  их  в  семейство Columns

     With .Columns

          .Append "КодТовара", adVarWChar

          .Append  "Наименование",   adVarWChar

          .Append   "Описание",   adLongVarWChar

     End With

End With

'добавляем новую таблицу  к семейству Tables  базы данных

cat .Tables.Append  tbl

Set cat= Nothing

При создании полей таблицы первым параметром метода Append является имя поля, а вторым — тип данных. Для указания типа данных используются встроенные константы. Например, adVarWChar соответствует типу данных Текстовый в Access. Список констант в моделях DAO и ADOX и соответствующих им типов данных Access приведен в табл. 5.3.

Таблица 5.3. Типы данных в моделях ОАО и ADOX