Partager via


Collection de champs (DAO)

S’applique à : Access 2013, Office 2013

Une collection de champs contient tous les objets champ stockés d’un objet Index, QueryDef, Recordset, Relation ou TableDef.

Remarques

Les collections Fields des objets Index, QueryDef, Relation et TableDef contiennent les spécifications pour les champs que représentent ces objets. La collection Fields d'un objet Recordset représente les objets Field sur une ligne de données ou dans un enregistrement. Vous utilisez les objets Field dans un objet Recordset pour lire et définir des valeurs pour les champs dans l'enregistrement actuel de l'objet Recordset.

Pour faire référence à un objet Field dans une collection par son numéro ordinal ou par son paramètre de propriété NameName, utilisez l'une formes de syntaxe suivantes :

Fields(0)

Fields("nom")

Champs ! [name]

Avec les mêmes formes de syntaxe, vous pouvez également renvoyer à la propriété Value d'un objet Field que vous créez et ajoutez à une collection Fields. Le contexte de la référence de champ détermine si vous faites référence à l'objet Field ou à la propriété Value de l'objet Field.

Exemple

Cet exemple indique les propriétés valides pour un objet Field en fonction de l'emplacement de l'objet Field (par exemple, la collection Fields d'un objet TableDef, la collection Fields d'un objet QueryDef, etc.). La procédure FieldOutput est nécessaire à l'exécution de cette procédure.

    Sub FieldX() 
     
     Dim dbsNorthwind As Database 
     Dim rstEmployees As Recordset 
     Dim fldTableDef As Field 
     Dim fldQueryDef As Field 
     Dim fldRecordset As Field 
     Dim fldRelation As Field 
     Dim fldIndex As Field 
     Dim prpLoop As Property 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     Set rstEmployees = _ 
     dbsNorthwind.OpenRecordset("Employees") 
     
     ' Assign a Field object from different Fields 
     ' collections to object variables. 
     Set fldTableDef = _ 
     dbsNorthwind.TableDefs(0).Fields(0) 
     Set fldQueryDef =dbsNorthwind.QueryDefs(0).Fields(0) 
     Set fldRecordset = rstEmployees.Fields(0) 
     Set fldRelation =dbsNorthwind.Relations(0).Fields(0) 
     Set fldIndex = _ 
     dbsNorthwind.TableDefs(0).Indexes(0).Fields(0) 
     
     ' Print report. 
     FieldOutput "TableDef", fldTableDef 
     FieldOutput "QueryDef", fldQueryDef 
     FieldOutput "Recordset", fldRecordset 
     FieldOutput "Relation", fldRelation 
     FieldOutput "Index", fldIndex 
     
     rstEmployees.Close 
     dbsNorthwind.Close 
     
    End Sub 
     
    Sub FieldOutput(strTemp As String, fldTemp As Field) 
     ' Report function for FieldX. 
     
     Dim prpLoop As Property 
     
     Debug.Print "Valid Field properties in " & strTemp 
     
     ' Enumerate Properties collection of passed Field 
     ' object. 
     For Each prpLoop In fldTemp.Properties 
     ' Some properties are invalid in certain 
     ' contexts (the Value property in the Fields 
     ' collection of a TableDef for example). Any 
     ' attempt to use an invalid property will 
     ' trigger an error. 
     On Error Resume Next 
     Debug.Print " " & prpLoop.Name & " = " & _ 
     prpLoop.Value 
     On Error GoTo 0 
     Next prpLoop 
     
    End Sub 

Cet exemple utilise la méthode CreateField pour créer trois objets Fields pour un objet TableDef. Il affiche ensuite les propriétés de ces objets Field, qui sont automatiquement définies par la méthode CreateField. (Les propriétés dont les valeurs sont vides lors de la création de Field ne sont pas affichées.)

    Sub CreateFieldX() 
     
     Dim dbsNorthwind As Database 
     Dim tdfNew As TableDef 
     Dim fldLoop As Field 
     Dim prpLoop As Property 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     
     Set tdfNew = dbsNorthwind.CreateTableDef("NewTableDef") 
     
     ' Create and append new Field objects for the new 
     ' TableDef object. 
     With tdfNew 
     ' The CreateField method will set a default Size 
     ' for a new Field object if one is not specified. 
     .Fields.Append .CreateField("TextField", dbText) 
     .Fields.Append .CreateField("IntegerField", dbInteger) 
     .Fields.Append .CreateField("DateField", dbDate) 
     End With 
     
     dbsNorthwind.TableDefs.Append tdfNew 
     
     Debug.Print "Properties of new Fields in " & tdfNew.Name 
     
     ' Enumerate Fields collection to show the properties of 
     ' the new Field objects. 
     For Each fldLoop In tdfNew.Fields 
     Debug.Print " " & fldLoop.Name 
     
     For Each prpLoop In fldLoop.Properties 
     ' Properties that are invalid in the context of 
     ' TableDefs will trigger an error if an attempt 
     ' is made to read their values. 
     On Error Resume Next 
     Debug.Print " " & prpLoop.Name & " - " & _ 
     IIf(prpLoop = "", "[empty]", prpLoop) 
     On Error GoTo 0 
     Next prpLoop 
     
     Next fldLoop 
     
     ' Delete new TableDef because this is a demonstration. 
     dbsNorthwind.TableDefs.Delete tdfNew.Name 
     dbsNorthwind.Close 
     
    End Sub