MyTetra Share
Делитесь знаниями!
Объект TableDef (DAO)
Время создания: 09.10.2019 16:17
Текстовые метки: VBA Access, DAO
Раздел: !Закладки - VBA - Access - DAO


Объект TableDef (DAO)


18.09.2015

Время чтения: 3 мин


Область применения: Access 2013, Office 2013


Объект TableDef представляет сохраненное определение основной или связанной таблицы (только для рабочих областей Microsoft Access).

Примечания


Работа с определением таблицы выполняется с помощью объекта TableDef и его методов и свойств. Например, вы можете:


Проверить в базе данных структуру полей и индексов любой локальной, связанной или внешней таблицы.


Указать или возвратить сведения о связанных таблицах с помощью свойств Connect и SourceTableName, а также обновить подключения к связанным таблицам с помощью метода RefreshLink.


Установить или возвратить условия проверки с помощью свойств ValidationRule и ValidationText.


Создать на основе определения таблицы объект Recordset табличного типа, динамического подмножества данных, динамического типа, моментального снимка или однонаправленного типа с помощью метода OpenRecordset.


Для основных таблиц свойство RecordCount содержит число записей в указанной таблице базы данных. Для связанных таблиц свойство RecordCount всегда имеет значение -1.


Чтобы создать новый объект TableDef, используйте метод CreateTableDef.

Добавление поля в таблицу


Убедитесь, что закрыты все объекты Recordset, основанные на таблице.


Используйте метод CreateField, чтобы создать переменную объекта Field и указать ее свойства.


Добавьте объект Field в коллекцию Fields объекта TableDef с помощью метода Append.


Можно удалить объект Field из коллекции TableDefs, если ему не назначены никакие индексы, однако при этом будут потеряны данные этого поля.

Создание в базе данных таблицы, готовой для новых записей


Чтобы создать объект TableDef, используйте метод CreateTableDef.


Настройте его свойства.


Для каждого поля в таблице используйте метод CreateField, чтобы создать переменную объекта Field и указать ее свойства.


Добавьте поля в коллекцию Fields объекта TableDef с помощью метода Append.


Добавьте новый объект TableDef в коллекцию TableDefs объекта Database с помощью метода Append.


Связанная таблица подключается к базе данных с помощью свойств SourceTableName и Connect объекта TableDef.

Связывание таблицы с базой данных


Чтобы создать объект TableDef, используйте метод CreateTableDef.


Установите его свойства Connect и SourceTableName (и свойство Attributes при необходимости).


Используйте метод Append, чтобы добавить его в коллекцию TableDefs объекта Database.


Чтобы сослаться на объект TableDef в коллекции по его порядковому номеру или по его свойствуName, используйте любую из указанных ниже синтаксических форм.


TableDefs(0)


TableDefs("name")


TableDefs![имя]

Пример


В этом примере создается новый объект TableDef, который добавляется в коллекцию TableDefs объекта базы данных Northwind. Затем перечисляются коллекции TableDefs и Properties нового объекта TableDef.

VB


Sub TableDefX()

Dim dbsNorthwind As Database

Dim tdfNew As TableDef

Dim tdfLoop As TableDef

Dim prpLoop As Property

Set dbsNorthwind = OpenDatabase("Northwind.mdb")

' Create new TableDef object, append Field objects

' to its Fields collection, and append TableDef

' object to the TableDefs collection of the

' Database object.

Set tdfNew = dbsNorthwind.CreateTableDef("NewTableDef")

tdfNew.Fields.Append tdfNew.CreateField("Date", dbDate)

dbsNorthwind.TableDefs.Append tdfNew

With dbsNorthwind

Debug.Print .TableDefs.Count & _

" TableDefs in " & .Name

' Enumerate TableDefs collection.

For Each tdfLoop In .TableDefs

Debug.Print " " & tdfLoop.Name

Next tdfLoop

With tdfNew

Debug.Print "Properties of " & .Name

' Enumerate Properties collection of new

' TableDef object, only printing properties

' with non-empty values.

For Each prpLoop In .Properties

Debug.Print " " & prpLoop.Name & " - " & _

IIf(prpLoop = "", "[empty]", prpLoop)

Next prpLoop

End With

' Delete new TableDef since this is a

' demonstration.

.TableDefs.Delete tdfNew.Name

.Close

End With

End Sub


В этом примере создается новый объект TableDef в базе данных Northwind.

VB


Sub CreateTableDefX()

Dim dbsNorthwind As Database

Dim tdfNew As TableDef

Dim prpLoop As Property

Set dbsNorthwind = OpenDatabase("Northwind.mdb")

' Create a new TableDef object.

Set tdfNew = dbsNorthwind.CreateTableDef("Contacts")

With tdfNew

' Create fields and append them to the new TableDef

' object. This must be done before appending the

' TableDef object to the TableDefs collection of the

' Northwind database.

.Fields.Append .CreateField("FirstName", dbText)

.Fields.Append .CreateField("LastName", dbText)

.Fields.Append .CreateField("Phone", dbText)

.Fields.Append .CreateField("Notes", dbMemo)

Debug.Print "Properties of new TableDef object " & _

"before appending to collection:"

' Enumerate Properties collection of new TableDef

' object.

For Each prpLoop In .Properties

On Error Resume Next

If prpLoop <> "" Then Debug.Print " " & _

prpLoop.Name & " = " & prpLoop

On Error GoTo 0

Next prpLoop

' Append the new TableDef object to the Northwind

' database.

dbsNorthwind.TableDefs.Append tdfNew

Debug.Print "Properties of new TableDef object " & _

"after appending to collection:"

' Enumerate Properties collection of new TableDef

' object.

For Each prpLoop In .Properties

On Error Resume Next

If prpLoop <> "" Then Debug.Print " " & _

prpLoop.Name & " = " & prpLoop

On Error GoTo 0

Next prpLoop

End With

' Delete new TableDef object since this is a

' demonstration.

dbsNorthwind.TableDefs.Delete "Contacts"

dbsNorthwind.Close


В приведенном ниже примере показано, как создать вычисляемое поле. Метод CreateField создает поле с именем FullName. Затем для свойства Expression устанавливается выражение, вычисляющее значение поля.


Пример кода из справочника программиста Microsoft Access 2010.

VB


Sub CreateCalculatedField()

Dim dbs As DAO.Database

Dim tdf As DAO.TableDef

Dim fld As DAO.Field2

' get the database

Set dbs = CurrentDb()

' create the table

Set tdf = dbs.CreateTableDef("tblContactsCalcField")

' create the fields: first name, last name

tdf.Fields.Append tdf.CreateField("FirstName", dbText, 20)

tdf.Fields.Append tdf.CreateField("LastName", dbText, 20)

' create the calculated field: full name

Set fld = tdf.CreateField("FullName", dbText, 50)

fld.Expression = "[FirstName] & "" "" & [LastName]"

tdf.Fields.Append fld

' append the table and cleanup

dbs.TableDefs.Append tdf

Cleanup:

Set fld = Nothing

Set tdf = Nothing

Set dbs = Nothing

End Sub

Так же в этом разделе:
 
MyTetra Share v.0.53
Яндекс индекс цитирования