MyTetra Share
Делитесь знаниями!
Объект TableDef (DAO)
Время создания: 09.10.2019 16:17
Текстовые метки: vba_access, dao
Раздел: !Закладки - VBA - Access - DAO
Запись: xintrea/mytetra_db_adgaver_new/master/base/1570627029mt4wl9mzor/text.html на raw.githubusercontent.com

Объект 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.59
Яндекс индекс цитирования