Листинг 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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.