Fields コレクション (DAO)
適用先: Access 2013、Office 2013
Fields コレクションには、Index、QueryDef、Relation、Recordset、または TableDef オブジェクトのすべての格納済み Field オブジェクトが含まれます。
解説
Index 、 QueryDef 、 Relation 、および TableDef の各オブジェクトの Fields コレクションには、そのオブジェクトが表すフィールドの定義が含まれます。 Recordset オブジェクトの Fields コレクションは、データの行、またはレコードの Field オブジェクトを表します。 Recordset オブジェクトのカレント レコードのフィールドの値を取得および設定するには、 Recordset オブジェクトの Field オブジェクトを使用します。
コレクション内の Field オブジェクトを、コレクションで付けられたインデックスまたは Name プロパティの設定値で参照するには、次のいずれかの構文を使います。
Fields(0)
Fields(「名前」)
フィールド![name]
同じ構文を使用して、作成して Fields コレクションに追加する Field オブジェクトの Value プロパティを参照することもできます。 フィールド参照のコンテキストにより、Field オブジェクトと Field オブジェクトの Value プロパティのいずれを参照するかが決まります。
例
この例では、 Field オブジェクトの場所 ( TableDef の Fields コレクション、 QueryDef の Fields コレクションなど) に応じた、 Field オブジェクトに対して有効なプロパティを示します。 このプロシージャを実行するには、FieldOutput プロシージャが必要です。
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
この例では、CreateField メソッドを使用して、新しい TableDef の 3 つのフィールドを作成します。 次に、CreateField メソッドによって自動的に設定される 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