Partager via


Objet TableDef (DAO)

S’applique à : Access 2013, Office 2013

Un objet TableDef représente la définition stockée d’une table de base ou d’une table liée (espaces de travail Microsoft Access uniquement).

Remarques

Vous pouvez manipuler une définition de table à l’aide de l’objet TableDef et de ses méthodes et propriétés. Par exemple, vous pouvez :

  • Examiner la structure de champ et d'index d'une table locale, liée ou externe dans une base de données.

  • Utiliser les propriétés Connect et SourceTableName pour définir ou renvoyer des informations sur les tables liées et utiliser la méthode RefreshLink pour mettre à jour les connexions aux tables liées.

  • Utiliser les propriétés ValidationRule et ValidationText pour définir ou renvoyer les conditions de validation.

  • Utiliser la méthode OpenRecordset pour créer un objet Recordset de type table, feuille à réponse dynamique, capture instantanée ou transfert uniquement en fonction de la définition de table.

Pour les tables de base, la propriété RecordCount contient le nombre d’enregistrements de la table de base de données spécifiée. Pour les tables liées, le paramètre de la propriété RecordCount est toujours –1.

Pour créer un objet TableDef, utilisez la méthode CreateTableDef.

Pour ajouter un champ à une table

  1. Assurez-vous que les objets Recordset basés sur la table sont tous fermés.

  2. Utilisez la méthode CreateField pour créer une variable d’objet Field et définir ses propriétés.

  3. Utilisez la méthode Append pour ajouter l’objet Field à la collection Fields de l’objet TableDef.

Vous pouvez supprimer un objet Field à partir d’une collection TableDefs si aucun index ne lui est attribué, mais vous perdrez les données du champ.

Pour créer une table prête pour de nouveaux enregistrements dans une base de données

  1. Utilisez la méthode CreateTableDef pour créer un objet TableDef.

  2. Définissez ses propriétés.

  3. Pour chaque champ de la table, utilisez la méthode CreateField pour créer une variable d’objet Field et définir ses propriétés.

  4. Utilisez la méthode Append pour ajouter les champs à la collection Fields de l’objet TableDef.

  5. Utilisez la méthode Append pour ajouter le nouvel objet TableDef à la collection TableDefs de l’objet Database.

Une table liée est connectée à la base de données via les propriétés SourceTableName et Connect de l’objet TableDef.

  1. Utilisez la méthode CreateTableDef pour créer un objet TableDef.

  2. Définissez les propriétés Connect et SourceTableName (et éventuellement, la propriété Attributes).

  3. Utilisez la méthode Append pour ajouter cet objet à la collection TableDefs d’un objet Database.

Pour faire référence à un objet TableDef dans une collection par son nombre ordinal ou par son paramètre de propriété Name, utilisez l’une des formes de syntaxe suivantes :

TableDefs(0)

TableDefs("nom")

TableDefs ! [name]

Exemple

Cet exemple crée un objet TableDef et l'ajoute à la collection TableDefs de l'objet de la base de données Northwind. Il énumère ensuite les collections TableDefs et Properties du nouvel objet 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 

Cet exemple crée un objet TableDef dans la base de données Northwind.

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 

L'exemple suivant montre comment créer un champ calculé. La méthode CreateField crée un champ nommé FullName. La propriété Expression est ensuite définie sur l'expression qui calcule la valeur du champ.

Exemple de code fourni parMicrosoft 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