Field2.OrdinalPosition, propriété (DAO)
S’applique à : Access 2013, Office 2013
Définit ou renvoie la position relative d’un objet Field2 dans une collection Fields . .
Syntaxe
expression . OrdinalPosition
expression une variable qui représente une champ2 objet.
Remarques
Pour un objet pas encore ajouté à la collection Fields, cette propriété est en lecture/écriture.
La valeur par défaut est 0.
La disponibilité de la propriété OrdinalPosition dépend de l'objet contenant la collection Fields, comme illustré dans le tableau suivant.
Si la collection Fields appartient à un |
Alors OrdinalPosition est |
---|---|
objet Index |
Non reconnu |
objet QueryDef |
Lecture seule |
objet Recordset |
Lecture seule |
objet Relation |
Non pris en charge |
objet TableDef |
Lecture/écriture |
En règle générale, la position ordinale d'un objet ajouté à une collection dépend de l'ordre dans lequel vous ajoutez l'objet. Le premier objet est ajouté a la première position (0), le second à la seconde position (1) et ainsi de suite. Le dernier objet ajouté est en nombre de positions ordinales : 1, où count est le nombre d’objets dans la collection, tel que spécifié par le paramètre de la propriété Count .
La propriété OrdinalPosition vous permet de spécifier une position ordinale pour les nouveaux objets Field2 qui diffère de l'ordre dans lequel vous les ajoutez à une collection. Ceci vous permet de spécifier un ordre de champs pour vos tables, requêtes et jeux d'enregistrements lorsque vous les utilisez dans une application. Par exemple, l'ordre dans lequel les champs sont renvoyés dans une requête SELECT * est déterminé par les valeurs actuelles de la propriété OrdinalPosition.
Vous pouvez à tout moment redéfinir l'ordre de renvoi des champs dans les jeux d'enregistrements en définissant la propriété OrdinalPosition sur tout entier positif.
Deux champs Field2 ou plus peuvent avoir la même valeur de propriété OrdinalPosition, auquel cas ils sont classés par ordre alphabétique. Par exemple, si vous avez un champ appelé Age défini sur 4 et un second champ appelé Poids sur 4, Poids est renvoyé après Age.
Vous pouvez spécifier un nombre supérieur au nombre de champs moins 1. Le champ est renvoyé dans un ordre relatif au nombre le plus élevé. Par exemple, si vous définissez la propriété OrdinalPosition d'un champ sur 20 (et qu'il n'y a que 5 champs) et si vous avez défini la propriété OrdinalPosition des deux autres champs sur 10 et 30, respectivement, le champ défini sur 20 est renvoyé entre les champs définis sur 10 et 30.
Remarque
Même si la collection Fields d’un objet TableDef n’a pas été actualisée, l’ordre des champs dans un objet Recordset ouvert à partir de TableDef reflète les données OrdinalPosition de l’objet TableDef . Un objet Recordset de type table a les mêmes données OrdinalPosition en tant que table sous-jacente, mais tout autre type d'objet Recordset a des nouvelles données OrdinalPosition (commençant par 0) qui suivent l'ordre déterminé par les données OrdinalPosition de l'objet TableDef.
Exemple
Cet exemple modifie les valeurs de propriété OrdinalPosition de la TableDef Employees afin de contrôler l'ordre des Field2 du Recordset résultant. En définissant la OrdinalPosition de tous les Fields sur 1, tous les Fields des Recordset résultants sont classés par ordre alphabétique. Notez que les valeurs OrdinalPosition du Recordset ne correspondent pas à celles de la TableDef, mais reflètent simplement le résultat final des modifications de TableDef.
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