共用方式為


Fields 系列

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

Fields 集合包含 Recordset中每個字段 (column) 的 Field 物件。 和所有 ADO 集合一樣,它具有 CountItem 屬性,以及 AppendRefresh 方法。 它也提供 CancelUpdateDeleteResyncUpdate 方法,這些方法在其他 ADO 集合中是無法使用的。

檢查字段集合

請考慮在本節介紹的 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 屬性來取得欄位的相關信息。 如需查詢 欄位的詳細資訊,請參閱 欄位物件

計算欄位數量

如您所料,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,而不需要執行字元串查閱。 另一方面,必須知道集合中 Field 的順序,而且如果順序變更,那麼在所有出現的地方,需改變對 Field 的 索引的參考。 雖然稍微慢一點,但使用 Field 的名稱會更有彈性,因為它不取決於集合中 Fields 的順序。

使用 Refresh 方法

不同於其他一些 ADO 集合,在 Fields 集合上使用 Refresh 方法沒有任何可見效果。 若要從基礎資料庫結構擷取變更,您必須使用 Requery 方法;如果 Recordset 物件不支援書籤,則必須使用 MoveFirst 方法,這將再次對提供者執行命令。

將欄位新增至記錄集

Append 方法可用來將欄位新增至 Recordset

您可以使用 Append 方法來以程序設計方式捏造 Recordset,而不需開啟數據源的連線。 如果在開啟的 記錄集的 Fields 集合上呼叫 Append 方法,或在已設定 ActiveConnection 屬性的 記錄集上呼叫該方法,就會發生運行時錯誤。 您只能將欄位附加至尚未開啟且尚未連線至數據源的 Recordset。 不過,若要指定新附加 Fields的值,必須先開啟 Recordset

開發人員通常需要一個位置來暫時儲存某些數據,或希望某些數據像是來自伺服器,以便參與使用者介面中的數據系結。 ADO(搭配 OLE DB Microsoft Cursor Service),可讓開發人員藉由指定欄位資訊並呼叫 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 和 Streams

另請參閱

製作階層式記錄集