Compartilhar via


Propriedade Field.OrdinalPosition (DAO)

Aplica-se ao: Access 2013, Office 2013

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

Sintaxe

expressão . OrdinalPosition

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

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 .

Use a propriedade OrdinalPosition para especificar a posição ordinal dos novos objetos Field que é diferente da ordem na qual foram acrescentados à uma coleção. Isso permite especificar a ordem dos campos para tabelas, consultas e recordsets quando você 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.

Redefina, de forma permanente, a ordem na qual os campos são retornados nos recordsets pela definição da propriedade OrdinalPosition para qualquer número inteiro positivo.

Dois ou mais objetos Field na mesma coleção podem ter o mesmo valor da propriedade OrdinalPosition e, nesse caso, serão colocados em ordem alfabética. Por exemplo, se você tem um campo denominado Idade definido como 4 e definir um segundo campo denominado 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

[!OBSERVAçãO] Mesmo se a coleção Fields de um TableDef não tiver sido atualizado, a ordem do campo em um Recordset aberto a partir de TableDef refletirá os dados de 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 no TableDef Funcionários para controlar a ordem Field em um Recordset resultante. Pela definição de OrdinalPosition de todos os Fields como 1, qualquer Recordset resultante colocará os Fields em ordem alfabética. 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 Field 
     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