Объект TableDef (DAO)TableDef object (DAO)

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

Объект TableDef представляет сохраненное определение основной или связанной таблицы (только для рабочих областей Microsoft Access).A TableDef object represents the stored definition of a base table or a linked table (Microsoft Access workspaces only).

ПримечанияRemarks

Работа с определением таблицы выполняется с помощью объекта TableDef и его методов и свойств.You manipulate a table definition using a TableDef object and its methods and properties. Например, вы можете:For example, you can:

  • Проверить в базе данных структуру полей и индексов любой локальной, связанной или внешней таблицы.Examine the field and index structure of any local, linked, or external table in a database.

  • Указать или возвратить сведения о связанных таблицах с помощью свойств Connect и SourceTableName, а также обновить подключения к связанным таблицам с помощью метода RefreshLink.Use the Connect and SourceTableName properties to set or return information about linked tables, and use the RefreshLink method to update connections to linked tables.

  • Установить или возвратить условия проверки с помощью свойств ValidationRule и ValidationText.Use the ValidationRule and ValidationText properties to set or return validation conditions.

  • Создать на основе определения таблицы объект Recordset табличного типа, динамического подмножества данных, динамического типа, моментального снимка или однонаправленного типа с помощью метода OpenRecordset.Use the OpenRecordset method to create a table–, dynaset–, dynamic–, snapshot–, or forward–only–type Recordset object, based on the table definition.

Для основных таблиц свойство RecordCount содержит число записей в указанной таблице базы данных.For base tables, the RecordCount property contains the number of records in the specified database table. Для связанных таблиц свойство RecordCount всегда имеет значение -1.For linked tables, the RecordCount property setting is always –1.

Чтобы создать новый объект TableDef, используйте метод CreateTableDef.To create a new TableDef object, use the CreateTableDef method.

Добавление поля в таблицуTo add a field to a table

  1. Убедитесь, что закрыты все объекты Recordset, основанные на таблице.Make sure any Recordset objects based on the table are all closed.

  2. Используйте метод CreateField, чтобы создать переменную объекта Field и указать ее свойства.Use the CreateField method to create a Field object variable and set its properties.

  3. Добавьте объект Field в коллекцию Fields объекта TableDef с помощью метода Append.Use the Append method to add the Field object to the Fields collection of the TableDef object.

Можно удалить объект Field из коллекции TableDefs, если ему не назначены никакие индексы, однако при этом будут потеряны данные этого поля.You can delete a Field object from a TableDefs collection if it doesn't have any indexes assigned to it, but you will lose the field's data.

Создание в базе данных таблицы, готовой для новых записейTo create a table that is ready for new records in a database

  1. Чтобы создать объект TableDef, используйте метод CreateTableDef.Use the CreateTableDef method to create a TableDef object.

  2. Настройте его свойства.Set its properties.

  3. Для каждого поля в таблице используйте метод CreateField, чтобы создать переменную объекта Field и указать ее свойства.For each field in the table, use the CreateField method to create a Field object variable and set its properties.

  4. Добавьте поля в коллекцию Fields объекта TableDef с помощью метода Append.Use the Append method to add the fields to the Fields collection of the TableDef object.

  5. Добавьте новый объект TableDef в коллекцию TableDefs объекта Database с помощью метода Append.Use the Append method to add the new TableDef object to the TableDefs collection of the Database object.

Связанная таблица подключается к базе данных с помощью свойств SourceTableName и Connect объекта TableDef.A linked table is connected to the database by the SourceTableName and Connect properties of the TableDef object.

  1. Чтобы создать объект TableDef, используйте метод CreateTableDef.Use the CreateTableDef method to create a TableDef object.

  2. Установите его свойства Connect и SourceTableName (и свойство Attributes при необходимости).Set its Connect and SourceTableName properties (and optionally, its Attributes property).

  3. Используйте метод Append, чтобы добавить его в коллекцию TableDefs объекта Database.Use the Append method to add it to the TableDefs collection of a Database.

Чтобы сослаться на объект TableDef в коллекции по его порядковому номеру или по его свойствуName, используйте любую из указанных ниже синтаксических форм.To refer to a TableDef object in a collection by its ordinal number or by its Name property setting, use any of the following syntax forms:

TableDefs(0)TableDefs(0)

TableDefs("name")TableDefs("name")

TableDefs![имя]TableDefs![name]

ПримерExample

В этом примере создается новый объект TableDef, который добавляется в коллекцию TableDefs объекта базы данных Northwind.This example creates a new TableDef object and appends it to the TableDefs collection of the Northwind Database object. Затем перечисляются коллекции TableDefs и Properties нового объекта TableDef.It then enumerates the TableDefs collection and the Properties collection of the new TableDef.

    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.This example creates a new TableDef object in the Northwind database.

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 

В приведенном ниже примере показано, как создать вычисляемое поле.The following example shows how to create a calculated field. Метод CreateField создает поле с именем FullName.The CreateField method creates a field named FullName. Затем для свойства Expression устанавливается выражение, вычисляющее значение поля.The Expression property is then set to the expression that calculates the value of the field.

Пример кода из справочника программиста Microsoft Access 2010.Sample code provided by the Microsoft Access 2010 Programmer’s Reference.

    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