Partager via


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