Freigeben über


Field2.OrdinalPosition-Eigenschaft (DAO)

Gilt für: Access 2013, Office 2013

Legt die relative Position eines Field2-Objekts innerhalb einer Fields-Auflistung fest oder gibt diese zurück. .

Syntax

Ausdruck . OrdinalPosition

Ausdruck Eine Variable, die ein Field2-Objekt darstellt.

Hinweise

Bei einem Objekt, das noch nicht der Fields-Auflistung angefügt wurde, besteht für diese Eigenschaft Lese-/Schreibzugriff.

The default is 0.

Die Verfügbarkeit der OrdinalPosition-Eigenschaft hängt vom Objekt ab, in dem die Fields-Auflistung enthalten ist (siehe folgende Tabelle).

Zugehörigkeit der Fields-Auflistung

OrdinalPosition

Index-Objekt

Nicht unterstützt

QueryDef-Objekt

Schreibgeschützt

Recordset-Objekt

Schreibgeschützt

Relation-Objekt

Nicht unterstützt

TableDef-Objekt

Lesen/Schreiben

In der Regel hängt die Position eines Objekts, das Sie einer Auflistung anfügen, von der Reihenfolge der Anfügung ab. Das erste angefügte Objekt befindet sich an der ersten Position (0), das zweite an der zweiten Position (1) usw. Das letzte angefügte Objekt befindet sich in der Ordnungspositionsanzahl – 1, wobei count die Anzahl der Objekte in der Auflistung ist, wie durch die Einstellung der Count-Eigenschaft angegeben.

Sie können mithilfe der OrdinalPosition-Eigenschaft eine Position für neue Field2-Objekte angeben, die von der Reihenfolge abweicht, in der Sie diese Objekte der Auflistung anfügen. Dadurch können Sie eine Feldreihenfolge für Tabellen, Abfragen und Recordsets angeben, die Sie in einer Anwendung verwenden. Die Reihenfolge, in der Felder in einer SELECT *-Abfrage zurückgegeben werden, wird z. B. von den aktuellen OrdinalPosition-Eigenschaftswerten festgelegt.

Sie können die Reihenfolge, in der Felder in Recordsets zurückgegeben werden, dauerhaft zurücksetzen, indem Sie die OrdinalPosition-Eigenschaft auf eine positive ganze Zahl festlegen.

Two or more Field2 objects in the same collection can have the same OrdinalPosition property value, in which case they will be ordered alphabetically. For example, if you have a field named Age set to 4 and you set a second field named Weight to 4, Weight is returned after Age.

You can specify a number that is greater than the number of fields minus 1. The field will be returned in an order relative to the largest number. For example, if you set a field's OrdinalPosition property to 20 (and there are only 5 fields) and you've set the OrdinalPosition property for two other fields to 10 and 30, respectively, the field set to 20 is returned between the fields set to 10 and 30.

Hinweis

Auch wenn die Fields-Auflistung eines TableDef-Objekts nicht aktualisiert wurde, spiegelt die Feldreihenfolge in einem Recordset-Objekt , das über tableDef geöffnet wird, die OrdinalPosition-Daten des TableDef-Objekts wider. A table-type Recordset will have the same OrdinalPosition data as the underlying table, but any other type of Recordset will have new OrdinalPosition data (starting with 0) that follow the order determined by the OrdinalPosition data of the TableDef.

Beispiel

This example changes the OrdinalPosition property values in the Employees TableDef in order to control the Field2 order in a resulting Recordset. By setting the OrdinalPosition of all the Fields to 1, any resulting Recordset will order the Fields alphabetically. Note that the OrdinalPosition values in the Recordset don't match the values in the TableDef, but simply reflect the end result of the TableDef changes.

    Sub OrdinalPositionX() 
     
     Dim dbsNorthwind As Database 
     Dim tdfEmployees As TableDef 
     Dim aintPosition() As Integer 
     Dim astrFieldName() As String 
     Dim intTemp As Integer 
     Dim fldTemp As Field2 
     Dim rstEmployees As Recordset 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     Set tdfEmployees = dbsNorthwind.TableDefs("Employees") 
     
     With tdfEmployees 
     ' Display and store original OrdinalPosition data. 
     Debug.Print _ 
     "Original OrdinalPosition data in TableDef." 
     ReDim aintPosition(0 To .Fields.Count - 1) As Integer 
     ReDim astrFieldName(0 To .Fields.Count - 1) As String 
     For intTemp = 0 To .Fields.Count - 1 
     aintPosition(intTemp) = _ 
     .Fields(intTemp).OrdinalPosition 
     astrFieldName(intTemp) = .Fields(intTemp).Name 
     Debug.Print , aintPosition(intTemp), _ 
     astrFieldName(intTemp) 
     Next intTemp 
     
     ' Change OrdinalPosition data. 
     For Each fldTemp In .Fields 
     fldTemp.OrdinalPosition = 1 
     Next fldTemp 
     
     ' Open new Recordset object to show how the 
     ' OrdinalPosition data has affected the record order. 
     Debug.Print _ 
     "OrdinalPosition data from resulting Recordset." 
     Set rstEmployees = dbsNorthwind.OpenRecordset( _ 
     "SELECT * FROM Employees") 
     For Each fldTemp In rstEmployees.Fields 
     Debug.Print , fldTemp.OrdinalPosition, fldTemp.Name 
     Next fldTemp 
     rstEmployees.Close 
     
     ' Restore original OrdinalPosition data because this is 
     ' a demonstration. 
     For intTemp = 0 To .Fields.Count - 1 
     .Fields(astrFieldName(intTemp)).OrdinalPosition = _ 
     aintPosition(intTemp) 
     Next intTemp 
     
     End With 
     
     dbsNorthwind.Close 
     
    End Sub