共用方式為


Fields 集合

Fields 集合是其中一個 ADO 的內部集合。 集合是已排序的項目集合,可作為單元來參考。 如需 ADO 集合的詳細資訊,請參閱 ADO 物件模型

Fields 集合包含 Recordset 中每個欄位 (資料行) 的 Field 物件。 如同所有 ADO 集合,其中具有 CountItem 屬性,以及 AppendRefresh 方法。 同時也有 CancelUpdateDeleteResyncUpdate 方法,其他 ADO 集合無法使用這些方法。

檢查 Fields 集合

請考慮本節所介紹範例 RecordsetFields 集合。 範例 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 屬性為零,代表集合中沒有物件。

取得欄位

如同任何 ADO 集合,Item 屬性為集合的預設屬性。 其屬性會傳回傳遞其中名稱或索引所指定的個別 Field 物件。 因此,下列陳述式相等於範例 Recordset

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

如果這些方法相等,哪一個是最佳方法? 要看情況而定。 使用索引從集合擷取 Field 會比較快,因為索引可直接存取 Field 而無須執行字串查詢。 另一方面,集合中的 Fields 順序必須為已知,且如果順序變更, Field 索引參考必須隨時變更。 即使如此操作速度會稍慢,但使用 Field 的名稱更具彈性,因為其不相依於集合中的 Fields 順序。

使用 Refresh 方法

不同於某些 ADO 集合,在 Fields 集合上使用 Refresh 方法無明顯效果。 若要從基礎資料庫結構擷取變更,您必須使用 Requery 方法,或者如果 Recordset 不支援書籤 (MoveFirst 方法),這會導致再次針對提供者執行命令。

將欄位新增至 Recordset

Append 方法會用於將欄位新增至 Recordset

您可使用 Append 方法以程式設計方式產生 Recordset,而無須開啟與資料來源的連線。 如果在已開啟 RecordsetFields 集合或已設定 ActiveConnection 屬性的 Recordset 上呼叫 Append 方法,便會產生執行階段錯誤。 您僅可將欄位附加至未開啟且尚未與資料來源連線的 Recordset。 不過,若要指定新附加 Fields 的值,必須先開啟 Recordset

開發人員通常需要暫時儲存某寫資料的位置或想要將某些資料作為來自伺服器的資料使用,以便可在使用者介面中參與資料繫結。 ADO (搭配使用 Microsoft Cursor Service for OLE DB) 可讓開發人員透過指定資料行資訊和呼叫 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  

Recordset 物件和 Record 物件之間的使用 Fields Append 方法會有所不同。 如需 Record 物件的詳細資訊,請參閱記錄和資料流

另請參閱

產生階層式資料錄集