Colección Fields (DAO)
Se aplica a: Access 2013, Office 2013
Una colección Fields contiene todos los objetos Fields almacenados de un objeto Index, QueryDef, Recordset, Relation o TableDef.
Comentarios
Las colecciones Fields de los objetos Index, QueryDef, Relation y TableDef contienen las especificaciones para los campos que estos objetos representan. La colección Fields de un objeto Recordset representa los objetos Field de una fila de datos o de un registro. Use los objetos Field de un objeto Recordset para leer y establecer valores para los campos en el registro actual del objeto Recordset.
Para hacer referencia a un objeto Field de una colección mediante su número ordinal o mediante el valor de la propiedad Name, utilice una de las formas sintácticas siguientes:
Fields(0)
Fields("name")
¡Campos! [nombre]
Con las mismas formas sintácticas, puede hacer referencia igualmente a la propiedad Value de un objeto Field que cree y anexe a la colección Fields. El contexto de la referencia del campo determinará si hace referencia al objeto Field o a la propiedad Value del objeto Field.
Ejemplo
En este ejemplo se muestra qué propiedades son válidas para un objeto Field según dónde resida el objeto Field (por ejemplo, la colección Fields de un objeto TableDef, la colección Fields de un objeto QueryDef, etc.). Se requiere el procedimiento FieldOutput para que pueda ejecutarse este procedimiento.
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
En este ejemplo se utiliza el método CreateField para crear tres objetos Fields para un nuevo objeto TableDef. A continuación, se muestran las propiedades de estos objetos Field que se establecen automáticamente mediante el método CreateField. No aparecen las propiedades cuyos valores están vacíos en el momento de crear los objetos Field.
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