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