Compartir a través de


Propiedad Field2.OrdinalPosition (DAO)

Se aplica a: Access 2013, Office 2013

Establece o devuelve la posición relativa de un objeto Field2 dentro de una colección Fields . .

Sintaxis

expresión . OrdinalPosition

expression Variable que representa un objeto Field2.

Comentarios

Para un objeto que todavía no está anexado a la colección Fields, esta propiedad es de lectura y escritura.

El valor predeterminado es 0.

La disponibilidad de la propiedad OrdinalPosition depende del objeto que contiene la colección Fields, como se muestra en la siguiente tabla.

Si la colección Fields pertenece a un

Entonces OrdinalPosition

Objeto Index

No está admitido

Objeto QueryDef

Solo lectura

Objeto Recordset

Solo lectura

Objeto Relation

No admitido

Objeto TableDef

Lectura y escritura

Generalmente, la posición ordinal de un objeto anexado a una colección depende del orden en el que se anexe el objeto. El primer objeto anexado estará en la primera posición (0), el segundo estará en la segunda posición (1) y así sucesivamente. El último objeto anexado está en el recuento de posiciones ordinales: 1, donde count es el número de objetos de la colección especificado por el valor de la propiedad Count .

Puede utilizar la propiedad OrdinalPosition para especificar una posición ordinal para los nuevos objetos Field2 que difiera del orden en el que ha anexado esos objetos a una colección. Esto permite especificar un orden de campo para sus tablas, consultas y conjuntos de registros cuando los utiliza en una aplicación. Por ejemplo, el orden en el que los campos se devuelven en una consulta SELECT * está determinado por los valores actuales de la propiedad OrdinalPosition.

Puede restablecer permanentemente el orden en el que los campos se devuelven en los conjuntos de registros estableciendo la propiedad OrdinalPosition en cualquier entero positivo.

Dos o más objetos Field2 en la misma colección pueden tener el mismo valor que la propiedad OrdinalPosition, en cuyo caso se ordenarán alfabéticamente. Por ejemplo, si tiene un campo denominado Edad establecido en 4 y establece un segundo campo denominado Peso en 4, Peso se devuelve después de Edad.

Puede especificar un número que sea mayor que el número de campos menos 1. El campo se devolverá siguiendo un orden respecto al número más grande. Por ejemplo, si establece una propiedad de campo OrdinalPosition en 20 (y sólo hay 5 campos) y ha establecido la propiedad OrdinalPosition para dos campos más en 10 y en 30, respectivamente, el campo establecido en 20 se devolverá entre los campos establecidos en 10 y en 30.

Nota:

Incluso si no se ha actualizado la colección Fields de un objeto TableDef , el orden de los campos de un objeto Recordset abierto desde TableDef reflejará los datos ordinalPosition del objeto TableDef . Un tipo de tabla Recordset tendrá los mismos datos OrdinalPosition que la tabla base, pero cualquier otro tipo de Recordset tendrá nuevos datos OrdinalPosition (comenzando por 0) que sigue el orden determinado por los datos de OrdinalPosition del objeto TableDef.

Ejemplo

En este ejemplo se cambian los valores de la propiedad OrdinalPosition para Employees TableDef de forma que se controla el orden de Field2 en un resultado Recordset. Al establecer la OrdinalPosition de todos los Fields en 1, cualquier Recordset resultante ordenará los Fields alfabéticamente. Observe que los valores OrdinalPosition en Recordset no coinciden con los valores de TableDef, pero solo reflejan el resultado final de los cambios 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