Freigeben über


Die Fields-Sammlung

Die Fields-Sammlung ist eine der systeminternen Sammlungen von ADO. Eine Auflistung ist eine sortierte Gruppe von Elementen, die als Einheit bezeichnet werden können. Weitere Informationen zu ADO-Auflistungen finden Sie unter Das ADO-Objektmodell.

Die Fields-Auflistung enthält ein Field-Objekt für jedes Feld (Spalte) im Recordset. Wie alle ADO-Auflistungen verfügt sie über Count-- und Item--Eigenschaften sowie Append- und Refresh-Methoden. Außerdem verfügt es über CancelUpdate, Delete, Resyncund Update Methoden, die für andere ADO-Auflistungen nicht verfügbar sind.

Begutachtung der Fields-Sammlung

Betrachten Sie die Fields Auflistung des Beispiels Recordset in diesem Abschnitt eingeführt. Das Beispiel Recordset- wurde von der SQL-Anweisung abgeleitet.

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

Daher sollten Sie feststellen, dass die Recordset Fields Auflistung drei Felder enthält.

'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  

Dieser Code bestimmt einfach die Anzahl der Field -Objekte in der Fields -Auflistung mithilfe der Count -Eigenschaft und durchläuft die Auflistung und gibt den Wert der eigenschaft Name für jedes Field -Objekt zurück. Sie können viele weitere Field- Eigenschaften verwenden, um Informationen zu einem Feld abzurufen. Weitere Informationen zum Abfragen eines Feldesfinden Sie unter Das Feldobjekt.

Zählen von Spalten

Wie Sie vielleicht erwarten, gibt die Count-Eigenschaft die tatsächliche Anzahl von Field--Objekten in der Fields--Auflistung zurück. Da die Nummerierung für Elemente einer Auflistung mit Null beginnt, sollten Sie immer Codeschleifen mit dem Nullmember beginnen und mit dem Wert der Count-Eigenschaft minus 1 enden. Wenn Sie Microsoft Visual Basic verwenden und die Member einer Auflistung durchlaufen möchten, ohne die Eigenschaft Count abzufragen, verwenden Sie den For Each...Next-Befehl.

Wenn die Count-Eigenschaft null ist, gibt es keine Objekte in der Auflistung.

Zum Feld gelangen

Wie bei jeder ADO-Auflistung ist die Item-Eigenschaft die Standardeigenschaft der Auflistung. Es gibt das einzelne Field -Objekt zurück, das durch den Namen oder index angegeben wird, der an das Objekt übergeben wird. Daher sind die folgenden Aussagen für die Stichprobe Recordsetgleichwertig:

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

Wenn diese Methoden gleichwertig sind, was am besten ist? Es hängt davon ab. Die Verwendung eines Index zum Abrufen eines Field aus der Auflistung ist schneller, da er direkt auf das Field zugreift, ohne eine Zeichenfolgensuche ausführen zu müssen. Andererseits muss die Reihenfolge der Fields innerhalb der Auflistung bekannt sein, und wenn sich die Reihenfolge ändert, muss der Verweis auf den Feldindex an jedem Ort geändert werden. Obwohl die Verwendung des Namens des -Feldes etwas langsamer ist, ist sie flexibler, da sie nicht von der Reihenfolge der -Felder in der Sammlung abhängt.

Verwenden der Refresh-Methode

Im Gegensatz zu einigen anderen ADO-Auflistungen hat die Verwendung der Refresh-Methode für die Fields-Auflistung keine sichtbaren Auswirkungen. Um Änderungen aus der zugrunde liegenden Datenbankstruktur abzurufen, müssen Sie entweder die Requery-Methode verwenden oder wenn das Recordset-Objekt keine Lesezeichen unterstützt, die MoveFirst-Methode, wodurch der Befehl für den Anbieter erneut ausgeführt wird.

Hinzufügen von Feldern zu einem Recordset

Die methode Append wird verwendet, um einem RecordsetFelder hinzuzufügen.

Sie können die methode Append verwenden, um ein Recordset programmgesteuert zu erstellen, ohne eine Verbindung mit einer Datenquelle zu öffnen. Ein Laufzeitfehler tritt auf, wenn die Append-Methode für die Fields-Auflistung in einem geöffneten Recordset oder auf einem Recordset, bei dem die ActiveConnection-Eigenschaft festgelegt wurde, aufgerufen wird. Sie können Felder nur an eine Recordset- anfügen, die nicht geöffnet ist und noch nicht mit einer Datenquelle verbunden wurde. Um jedoch Werte für die neu angefügten Fieldsanzugeben, muss das Recordset- zuerst geöffnet werden.

Entwickler benötigen häufig einen Ort zum vorübergehenden Speichern einiger Daten oder möchten, dass einige Daten von einem Server stammen, damit sie an der Datenbindung an einer Benutzeroberfläche teilnehmen können. Mit ADO (in Verbindung mit dem Microsoft Cursor Service für OLE DB-) kann der Entwickler ein leeres Recordset--Objekt erstellen, indem Spalteninformationen angegeben und Openaufgerufen werden. Im folgenden Beispiel werden drei neue Felder an ein neues Recordset-Objekt angefügt. Anschließend wird das Recordset- geöffnet, zwei neue Datensätze hinzugefügt, und das Recordset- wird in einer Datei beibehalten. (Weitere Informationen zu Recordset Persistenz finden Sie unter Aktualisieren und Speichern von Daten.)

'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  

Die Verwendung der methode "Fields Append" unterscheidet sich zwischen dem Recordset-Objekt und dem Record-Objekt. Weitere Informationen zum Record-Objekt finden Sie unter Records and Streams.

Siehe auch

Erstellen hierarchischer Recordsets