字段集合

Fields 集合是 ADO 的内部集合之一。 一个集合是可作为单元引用的一组有序项。 有关 ADO 集合的详细信息,请参阅 ADO 对象模型

Fields 集合为 Recordset 中每个字段(列)都包含一个 Field 对象。 与所有 ADO 集合一样,此集合具有 Count 和 Item 属性以及 Append 和 Refresh 方法。 它还具有 CancelUpdate、Delete、Resync 和 Update 方法,这些方法不适用于其他 ADO 集合。

检查 Fields 集合

了解本部分介绍的示例 Recordset 的 Fields 集合。 示例 Recordset 派生自 SQL 语句

SELECT ProductID, ProductName, UnitPrice FROM Products WHERE CategoryID = 7  

因此,你应该会发现,Recordset Fields 集合包含三个字段。

'BeginWalkFields  
    Dim objFields As ADODB.Fields  
    Dim intLoop As Integer  
  
    objRs.Open strSQL, strConnStr, adOpenForwardOnly, adLockReadOnly, adCmdText  
  
    Set objFields = objRs.Fields  
  
    For intLoop = 0 To (objFields.Count - 1)  
        Debug.Print objFields.Item(intLoop).Name  
    Next  
'EndWalkFields  

此代码使用 Count 属性简单地确定 Fields 集合中的 Field 对象数量,并循环遍历该集合,从而为每个 Field 对象返回 Name 属性的值。 可以使用更多 Field 属性来获取有关字段的信息。 有关查询 Field 的详细信息,请参阅 Field 对象

对列进行计数

正如你所预期,Count 属性返回 Fields 集合中 Field 对象的实际数量。 由于集合成员以零开始编号,因此代码循环应始终以零号成员开头,以 Count 属性减 1 的值结尾。 如果使用 Microsoft Visual Basic 并且想在不检查 Count 属性的情况下循环遍历集合的成员,请使用 For Each...Next 命令。

如果 Count 属性为零,则集合中没有对象。

了解 Field

与任何 ADO 集合一样,Item 属性是集合的默认属性。 它返回由传递给它的名称或索引指定的单个 Field 对象。 因此,以下语句等效于示例 Recordset:

objField = objRecordset.Fields.Item("ProductID")  
objField = objRecordset.Fields("ProductID")  
objField = objRecordset.Fields.Item(0)  
objField = objRecordset.Fields(0)  

如果这些方法等效,哪一种方法是最佳的? 视情况而定。 使用索引从集合中检索 Field 更为快速,因为它直接访问 Field,而无需执行字符串查找。 另一方面,集合中 Field 的顺序必须已知,如果顺序发生更改,则对 Field 索引的引用必须更改,无论更改发生在什么位置。 使用 Field 的名称虽然速度稍慢,但更加灵活,因为这不依赖于集合中 Field 的顺序。

使用 Refresh 方法

与其他一些 ADO 集合不同,对 Fields 集合使用 Refresh 方法没有显著效果。 若要从基础数据库结构检索更改,必须使用 Requery 方法或 MoveFirst 方法(如果 Recordset 对象不支持书签),这样将针对提供程序再次执行此命令。

将 Fields 添加到 Recordset

Append 方法用于将字段添加到 Recordset。

可以使用 Append 方法以编程方式构建 Recordset,而无需开启与数据源的连接。 如果对打开的 Recordset 的 Fields 集合或对已设置了 ActiveConnection 属性的 Recordset 调用 Append 方法,则会发生运行时错误。 只能将字段追加到尚未打开且尚未连接到数据源的 Recordset。 但是,若要为新追加的 Fields 指定值,必须先打开 Recordset。

开发人员通常需要一个临时存储某些数据的位置,或者希望某些数据就像来自服务器一样运作,这样它就可以参与用户界面中的数据绑定。 ADO(与用于 OLE DB 的 Microsoft 游标服务结合使用)使开发人员能够通过指定列信息并调用 Open 来构建空 Recordset 对象。 在以下示例中,三个新字段被追加到新的 Recordset 对象。 然后会打开 Recordset,添加两条新记录,并将 Recordset 保存到文件中。 (有关 Recordset 暂留的详细信息,请参阅更新和保留数据。)

'BeginFabricate  
    Dim objRs As ADODB.Recordset  
    Set objRs = New ADODB.Recordset  
  
    With objRs.Fields  
        .Append "StudentID", adChar, 11, adFldUpdatable  
        .Append "FullName", adVarChar, 50, adFldUpdatable  
        .Append "PhoneNmbr", adVarChar, 20, adFldUpdatable  
    End With  
  
    With objRs  
        .Open  
  
        .AddNew  
        .Fields(0) = "123-45-6789"  
        .Fields(1) = "John Doe"  
        .Fields(2) = "(425) 555-5555"  
        .Update  
  
        .AddNew  
        .Fields(0) = "123-45-6780"  
        .Fields(1) = "Jane Doe"  
        .Fields(2) = "(615) 555-1212"  
        .Update  
    End With  
  
    objRs.Save App.Path & "FabriTest.adtg", adPersistADTG  
  
    objRs.Close  
'EndFabricate  

Fields Append 方法的用法在 Recordset 对象和 Record 对象之间有所不同。 有关 Record 对象的详细信息,请参阅 Record 和 Stream

另请参阅

构造分层记录集