Compartilhar via


Propriedade Field2.OrdinalPosition (DAO)

Aplica-se ao: Access 2013, Office 2013

Define ou retorna a posição relativa de um objeto Field2 em uma coleção Fields. .

Sintaxe

expressão . OrdinalPosition

expressão Uma variável que representa um objeto Field2.

Comentários

Para um objeto ainda não acrescentado à coleção Fields, essa propriedade é de leitura/gravação.

O padrão é 0.

A disponibilidade da propriedade OrdinalPosition depende do objeto que contém a coleção Fields, conforme mostrado na tabela a seguir.

Se a coleção Fields pertencer a um

OrdinalPosition será

Objeto Index

Sem suporte

Objeto QueryDef

Somente leitura

Objeto Recordset

Somente leitura

Objeto Relation

Sem suporte

Objeto TableDef

Leitura/gravação

Em geral, a posição ordinal de um objeto que você acrescenta a uma coleção depende da ordem na qual ele é acrescentado. O primeiro objeto acrescentado está na primeira posição (0), o segundo está na segunda posição (1) e assim por diante. O último objeto acrescentado está na contagem de posições ordinais – 1, em que a contagem é o número de objetos na coleção, conforme especificado pela configuração da propriedade Count .

Você pode usar a propriedade OrdinalPosition para especificar uma posição ordinal para os novos objetos Field2 que se difere da ordem na qual você acrescenta aqueles objetos a uma coleção. Isso permite que você especifique uma ordem de campo para suas tabelas, consultas e recordsets quando usá-los em um aplicativo. Por exemplo, a ordem na qual os campos são retornados em uma consulta SELECT * é determinada pelos valores atuais da propriedade OrdinalPosition.

Você pode redefinir de modo permanente a ordem na qual os campos serão retornados em recordsets, configurando a propriedade OrdinalPosition para qualquer inteiro positivo.

Dois ou mais objetos Field2 na mesma coleção podem ter o mesmo valor da propriedade OrdinalPosition, caso em que eles serão ordenados alfabeticamente. Por exemplo, se você tiver um campo chamado Idade definido como 4 e definir um segundo campo chamado Peso como 4, Peso será retornado depois de Idade.

É possível especificar um número maior que o número de campos menos 1. O campo será retornado em uma ordem relativa ao maior número. Por exemplo, se você definir a propriedade OrdinalPosition de um campo como 20 (e se houver apenas 5 campos) e definir a propriedade OrdinalPosition de dois outros campos como 10 e 30 respectivamente, o campo definido como 20 será retornado entre os campos definidos como 10 e 30.

Observação

Mesmo que a coleção Fields de um objeto TableDef não tenha sido atualizada, a ordem de campo em um Conjunto de registros aberto do TableDef refletirá os dados ordinalPosition do objeto TableDef . Um Recordset tipo tabela terá os mesmos dados de OrdinalPosition que a tabela base, mas nenhum outro tipo de Recordset terá novos dados OrdinalPosition (começando com 0) que seguirão a ordem determinada pelos dados OrdinalPosition de TableDef.

Exemplo

Este exemplo altera os valores da propriedade OrdinalPosition em TableDef de Funcionário para controlar a ordem de Field2 em um Recordset resultante. Configurando a OrdinalPosition de todos os Fields para 1, qualquer Recordset resultante ordenará Fields alfabeticamente. Observe que os valores de OrdinalPosition no Recordset não correspondem aos valores na TableDef, mas simplesmente refletem o resultado final das alterações 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