Partilhar via


A coleção Fields

A coleção Campos é uma das coleções intrínsecas do ADO. Uma coleção é um conjunto ordenado de itens que podem ser chamados de unidade. Para obter mais informações sobre coleções do ADO, consulte O modelo de objeto do ADO.

A coleção Campos contém um objeto Field para cada campo (coluna) no conjunto de registros . Assim como todas as coleções do ADO, ele tem as propriedades Count e Item, bem como os métodos Append e Refresh. Ele também tem métodos CancelUpdate, Delete, Resynce Update, que não estão disponíveis para outras coleções do ADO.

Examinando a coleção Fields

Considere a coleção Fields do exemplo Recordset introduzido nesta seção. O conjunto de registros de exemplo foi derivado da instrução SQL

SELECT ProductID, ProductName, UnitPrice FROM Products WHERE CategoryID = 7  

Portanto, você deve descobrir que a coleção Campos do Recordset contém três campos.

'BeginWalkFields  
    Dim objFields As ADODB.Fields  
    Dim intLoop As Integer  
  
    objRs.Open strSQL, strConnStr, adOpenForwardOnly, adLockReadOnly, adCmdText  
  
    Set objFields = objRs.Fields  
  
    For intLoop = 0 To (objFields.Count - 1)  
        Debug.Print objFields.Item(intLoop).Name  
    Next  
'EndWalkFields  

Esse código simplesmente determina o número de objetos Field na coleção Fields usando a propriedade Count e itera sobre a coleção, retornando o valor da propriedade Name para cada objeto Field. Você pode usar muito mais propriedades Field para obter informações sobre um campo. Para obter mais informações sobre como consultar um campo , consulte o objeto Campo .

Contando colunas

Como era de se esperar, a propriedade Count retorna o número real de objetos Field na coleção Fields. Como a numeração para membros de uma coleção começa com zero, você sempre deve codificar loops começando com o membro zero e terminando com o valor da propriedade Count menos 1. Se você estiver usando o Microsoft Visual Basic e quiser percorrer os membros de uma coleção sem verificar a propriedade Count, use o comando For Each...Next.

Se a propriedade Count for zero, não haverá objetos na coleção.

Chegando ao campo

Assim como acontece com qualquer coleção ADO, a propriedade Item é a propriedade padrão da coleção. Ele retorna o objeto field individual especificado pelo nome ou índice passado para ele. Portanto, as instruções a seguir são equivalentes ao exemplo Recordset:

objField = objRecordset.Fields.Item("ProductID")  
objField = objRecordset.Fields("ProductID")  
objField = objRecordset.Fields.Item(0)  
objField = objRecordset.Fields(0)  

Se esses métodos forem equivalentes, qual é o melhor? Depende. Usar um índice para recuperar um Campo da coleção é mais rápido porque acessa o Campo diretamente sem precisar executar uma pesquisa de string. Por outro lado, a ordem dos campos de dentro da coleção deve ser conhecida e, se a ordem for alterada, a referência ao índice do campo precisará ser alterada onde quer que ela ocorra. Embora um pouco mais lento, usar o nome do Campo é mais flexível porque não depende da ordem dos Campos na coleção.

Usando o método Refresh

Ao contrário de algumas outras coleções do ADO, usar o método Refresh na coleção Campos não tem efeito visível. Para recuperar alterações da estrutura de banco de dados subjacente, você deve usar o método Requery ou, caso o objeto Recordset não ofereça suporte a indicadores, o método MoveFirst, que fará o comando ser executado novamente contra o provedor.

Adicionando campos a um conjunto de registros

O método Append é usado para adicionar campos a um Recordset.

Você pode usar o método Append para fabricar um conjunto de registros programaticamente sem abrir uma conexão com uma fonte de dados. Um erro em tempo de execução ocorrerá se o método Append for chamado na coleção Campos de um Recordset aberto ou em um Recordset em que a propriedade ActiveConnection tenha sido definida. Você pode acrescentar campos apenas a um conjunto de registros que não está aberto e ainda não foi conectado a uma fonte de dados. No entanto, para especificar valores para os campos de recém-acrescentados, o Recordset deve ser aberto primeiro.

Os desenvolvedores geralmente precisam de um local para armazenar temporariamente alguns dados ou querem que alguns dados atuem como se eles viessem de um servidor para que ele possa participar da associação de dados em uma interface do usuário. O ADO (em conjunto com o Microsoft Cursor Service for OLE DB) permite que o desenvolvedor crie um objeto Recordset vazio especificando informações de coluna e chamando Open. No exemplo a seguir, três novos campos são acrescentados a um novo objeto Recordset. Em seguida, o Recordset é aberto, dois novos registros são adicionados e o Recordset é mantido em um arquivo. (Para obter mais informações sobre persistência de do Recordset, consulte Atualizando e persistindo dados.)

'BeginFabricate  
    Dim objRs As ADODB.Recordset  
    Set objRs = New ADODB.Recordset  
  
    With objRs.Fields  
        .Append "StudentID", adChar, 11, adFldUpdatable  
        .Append "FullName", adVarChar, 50, adFldUpdatable  
        .Append "PhoneNmbr", adVarChar, 20, adFldUpdatable  
    End With  
  
    With objRs  
        .Open  
  
        .AddNew  
        .Fields(0) = "123-45-6789"  
        .Fields(1) = "John Doe"  
        .Fields(2) = "(425) 555-5555"  
        .Update  
  
        .AddNew  
        .Fields(0) = "123-45-6780"  
        .Fields(1) = "Jane Doe"  
        .Fields(2) = "(615) 555-1212"  
        .Update  
    End With  
  
    objRs.Save App.Path & "FabriTest.adtg", adPersistADTG  
  
    objRs.Close  
'EndFabricate  

O uso do método Fields Append difere entre o objeto Recordset e o objeto Record. Para obter mais informações sobre o objeto Record, consulte Records and Streams.

Consulte Também

fabricando conjuntos de registros hierárquicos