Fields-Auflistung
Gilt für: Access 2013, Office 2013
Die Fields -Auflistung ist eine der systeminternen Auflistungen von ADO. Eine Auflistung ist eine geordnete Menge von Elementen, auf die als Einheit Bezug genommen werden kann.
Die Fields -Auflistung enthält ein Field -Objekt für jedes Feld (Spalte) im Recordset -Objekt. Wie alle ADO-Auflistungen weist sie die Eigenschaften Count und Item sowie die Methoden Append und Refresh auf. Darüber hinaus enthält diese Auflistung die Methoden CancelUpdate, Delete, Resync und Update, die für andere ADO-Auflistungen nicht verfügbar sind.
Analyse der Fields-Auflistung
Ziehen Sie die Fields -Auflistung des Recordset -Beispielobjekts heran, das in diesem Kapitel vorgestellt wurde. Das Recordset -Beispielobjekt wurde von der SQL-Anweisung abgeleitet.
SELECT ProductID, ProductName, UnitPrice FROM Products WHERE CategoryID = 7
Daher sollten Sie feststellen, dass die RecordsetFields-Auflistung drei Felder enthält.
'BeginWalkFields
Dim objFields As ADODB.Fields
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
Mit diesem Code wird einfach die Anzahl von Field -Objekten in der Fields -Auflistung mithilfe der Count -Eigenschaft zurückgegeben, und es werden Schleifen durch die Auflistung ausgeführt, um den Wert der Name -Eigenschaft für jedes Field -Objekt zurückzugeben. Sie können mit vielen weiteren Field -Eigenschaften Informationen zu einem Feld abrufen. Weitere Informationen zum Abfragen eines Field-Objekts finden Sie unter Field-Objekt.
Zählen von Spalten
Die Count -Eigenschaft gibt erwartungsgemäß die tatsächliche Anzahl von Field -Objekten in der Fields -Auflistung zurück. Die Nummerierung für Auflistungselemente beginnt bei null, weshalb Sie im Code Schleifen stets mit dem Element Null beginnen und mit dem Wert der Count -Eigenschaft minus 1 beenden sollten. Wenn Sie Microsoft Visual Basic verwenden und die Elemente einer Sammlung durchlaufen möchten, ohne die Count-Eigenschaft zu überprüfen, verwenden Sie forEach... Nächster Befehl.
Wenn die Count-Eigenschaft gleich null ist, sind in der Auflistung keine Objekte vorhanden.
Navigieren zum Feld
Wie bei jeder ADO-Auflistung ist die Item -Eigenschaft die Standardeigenschaft der Auflistung. Sie gibt das einzelne Field -Objekt zurück, das durch den Namen oder den übergebenen Index angegeben ist. Deshalb sind die folgenden Anweisungen für das Recordset -Beispielobjekt gleichwertig:
objField = objRecordset.Fields.Item("ProductID")
objField = objRecordset.Fields("ProductID")
objField = objRecordset.Fields.Item(0)
objField = objRecordset.Fields(0)
Wenn diese Methoden gleichwertig sind, was ist am besten? Das hängt von verschiedenen Faktoren ab. Die Verwendung eines Indexes zum Abrufen eines Field aus der Auflistung ist schneller, da es direkt auf das Feld zugreift, ohne eine Zeichenfolgensuche durchführen zu müssen. Auf der anderen Seite muss die Reihenfolge der Felder innerhalb der Auflistung bekannt sein, und wenn sich die Reihenfolge ändert, muss der Verweis auf den Index des Felds überall dort geändert werden, wo er auftritt. Obwohl etwas langsamer , ist die Verwendung des Feldnamens flexibler, da er nicht von der Reihenfolge der Felder in der Auflistung abhängt.
Verwenden der Refresh-Methode
Im Gegensatz zu manch anderen ADO-Auflistungen hat das Verwenden der Refresh -Methode in der Fields -Auflistung keinen sichtbaren Effekt. Zum Abrufen von Änderungen aus der zugrunde liegenden Datenbankstruktur müssen Sie entweder die Requery-Methode verwenden, oder falls Lesezeichen vom Recordset-Objekt nicht unterstützt werden, die MoveFirst-Methode, mit der der Befehl erneut für den Anbieter ausgeführt wird.
Hinzufügen von Feldern zu einem Recordset
Mit der Append -Methode werden einem Recordset -Objekt Felder hinzugefügt.
Mithilfe der Append -Methode können Sie ein Recordset -Objekt programmgesteuert erstellen, ohne eine Verbindung mit einer Datenquelle zu öffnen. Ein Laufzeitfehler wird gemeldet, falls die Append -Methode in der Fields -Auflistung eines geöffneten Recordset -Objekts oder eines Recordset -Objekts, in dem die ActiveConnection -Eigenschaft festgelegt wurde, aufgerufen wird. Felder können nur an ein Recordset -Objekt angefügt werden, das nicht geöffnet ist und noch nicht mit einer Datenquelle verbunden wurde. Das Recordset -Objekt muss jedoch zuerst geöffnet werden, um Werte für das neu angefügte Fields -Objekt anzugeben.
Entwickler benötigen häufig einen Bereich für die vorübergehende Speicherung von Daten oder möchten, dass sich Daten so verhalten, als ob sie von einem Server stammten, damit sie für die Datenbindung in einer Benutzeroberfläche verwendet werden können. Mit ADO (in Verbindung mit dem Microsoft Cursor Service für OLE DB) kann der Entwickler ein leeres Recordset -Objekt erstellen, indem er Spalteninformationen angibt und die Open -Methode aufruft. Im folgenden Beispiel werden drei neue Felder an ein neues Recordset -Objekt angefügt. Anschließend wird das Recordset -Objekt geöffnet, zwei neue Datensätze werden hinzugefügt, und das Recordset -Objekt wird in einer Datei gespeichert. (Weitere Informationen zum Speichern des Recordset -Objekts finden Sie unter Kapitel 5: Aktualisieren und Speichern von Daten.)
'BeginFabricate
Dim objRs As 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 FieldsAppend-Methode unterscheidet sich zwischen dem Recordset-Objekt und dem Record-Objekt . Weitere Informationen zum Record -Objekt finden Sie unter Kapitel 10: Datensätze und Datenströme.