Объект TableDef: определения таблиц
Объект TableDef задает определение таблиц в объекте Database. Все объекты TableDef формируют семейство. Число таблиц находится в свойстве TableDefs. Count.
Каждая таблица в базе данных задается объектом
TableDef. Перечислим его наиболее важные свойства.
• Count возвращает число строк в таблице.
• Fields - семейство объектов Field. Каждый объект Field задает поле в таблице.
• Indexes — семейство объектов Index. Каждый объект Index задает индекс таблицы.
Итак, объявим и откроем объект Database с помощью следующих команд.
Dim DB As Database
Set DB = OpenDatabase(dbName)
Для доступа к определениям таблиц базы данных используйте выражение DB.TableDefs, являющееся семейством объектов: по одному для каждой таблицы. С помощью элементов этого семейства можно обращаться к свойствам таблиц в базе данных. Чтобы реализовать обращение к каждой таблице самым простым способом, нужно объявить переменную TableDef
Dim tbl As TableDef
а затем просмотреть каждый элемент семейства
DB.TableDefs с помощью цикла For Each... Next.
For Each tbi In DB.TableDefs
Debug.Print tbl.Name
Next
Этот цикл отображает имена таблиц. В дополнение к таблицам данных базы данных Access содержат несколько системных таблиц. Имена этих таблиц начинаются с MSYS и их можно пропустить. Для получения подробной информации о том, как обнаружить и проигнорировать системные таблицы, смотрите параграф "VB6 в действии: проект DBStructure" далее в этой главе.
Индексы таблицы
Большинство таблиц в базе данных имеет хотя бы один связанный индексный файл, а иногда и больше. Для доступа к индексам таблицы предназначено свойство Indexes объекта TableDefs. Свойство Indexes - это семейство объектов, каждый из которых соответствует одному индексу таблицы. Чтобы самым простым способом реализовать обращение к каждому индексу в таблице, нужно объявить объект Index.
Dim idx As Index
а затем просмотреть каждый элемент семейства
Indexes с помощью цикла For Each...Next
For Each idx In tbi Indexes
Debug.Print idx.Name
Next
Элемент tbl — это объект TableDef, который объявлялся в предыдущем параграфе. Следующий вложенный цикл отображает имена всех таблиц в базе данных и имена их индексов под каждой таблицей.
For Each tbl In DB.TableDefs
Debug.Print tbl.Name
For Each idx In tbl.Indexes
Debug.Print idx.Name
Next idx
Next tbl
Можно запрашивать определение каждого индекса с помощью свойства Fields и использовать свойство Unique, чтобы определить, требует ли данный индекс уникальных ключей.
Поля таблицы
Наиболее важное свойство объекта TableDefs — свойство Fields (Поля), которое является семейством объектов, каждый из которых соответствует полю таблицы. Чтобы обратиться к полям таблицы, определите в базе данных нужную таблицу. Это делается с помощью индексного значения, которое равно 0 для первой таблицы, 1 — для второй и DB TableDefs Count-1 — для последней таблицы. К полям первой таблицы в базе можно обращаться с помощью объекта, приведенного ниже.
DB TableDefs (0) Fields
Вместо индекса можно использовать имя таблицы. Следующий объект задает все поля в таблице Titles базы данных BIBLIO/
DB.TableDefs ("Titles").Fields
Чтобы обратиться к каждому полю в семействе Fields, объявите объектную переменную Field и просмотрите семейство с помощью цикла For Each...Next. Следующий фрагмент кода отображает имена и типы каждого поля в первой таблице базы данных.
Dim fid As Field
For Each fld In DB.TableDefs(0).Fields
Debug.Print fld.Name, fld Type
Next
Свойство Type (Тип) возвращает целочисленное значение, которое представляет тип поля. Необходимо написать простую процедуру, которая преобразует этот номер в строку "Integer", "String" и т.п.
Другие свойства объекта Field приведены ниже.
• OrdinalPosition. Определяет порядок полей в таблице.
• AllowZeroLength. Булево свойство, указывающее, может ли поле содержать пустую строку.
• Size. Размер поля в байтах.
• Value. Текущее значение поля.