Trabalhando com Recordsets - Alterando e Retornando dados.

------------------------------------------------------------------------

O objeto Recordset esta presente tanto na DAO como na ADO. Lembre-se que um
Recordset representa um conjunto de registros de uma tabela ou o conjunto
de registros resultante de uma consulta SQL.

O objeto Recordset contém a coleção Fields que contém o objeto Field que
representa uma coluna de dados de um Recordset.

Usando a ADO podemos abrir um Recordset das seguintes formas:

  1. Usando o método Execute do objeto Connection.
  2. Usando o método Open do objeto Recordset.
  3. Usando o método Execute do objeto Command.

Não podemos abrir um objeto Recordset da ADO diretamente de um objeto Table
ou Procedure ou View.

Os Recordsets abertos via método Execute são sempre forward-only e somente
leitura. Se você precisar criar recordsets atualizáveis deve usar o método
OPEN do objeto Recordset da DAO.

Os parâmetros CursorType, LockType e Options do método Open determinam o
tipo de Recordset que é retornado.

Vejamos na tabela abaixo como os parâmetros do método OPEN do objeto
Recordset podem ser mapeados para as propriedades da ADO.

 Tipo de Recordset DAO                     Propriedades ou parâmetros do Recordset ADO

 dbOpenDynaset                             CursorType=adOpenKeyset

 dbOpenSnapshot                            CursorType=adOpenStatic

 dbOpenForwardOnly                         CursorType=adOpenForwardOnly

 dbOpenTable                               CursorType=adOpenKeyset, Options=adCmdTableDirect

 Opção de valores para o Recordset DAO     Propriedades do Recordset ADO

 dbAppendOnly                              Properties("Append-Only Rowset")

 dbSQLPassThrough                          Properties("Jet OLEDB:ODBC Pass-Through
                                           Statement")

 dbSeeChanges                              No equivalent.

 dbDenyWrite                               No equivalent.

 dbDenyRead                                No equivalent.

 dbInconsistent                            Properties("Jet OLEDB:Inconsistent") = True

 dbConsistent                              Properties("Jet OLEDB:Inconsistent") = False

 Tipos de bloqueios(LockType) do           Tipos de bloqueios(LockType) do Recordset ADO
 Recordset DAO

 dbReadOnly                                adLockReadOnly

 dbPessimistic                             adLockPessimistic

 dbOptimistic                              adLockOptimistic

Abrindo um Recordset somente-leitura e forwardOnly.

Abrindo a base de dados NWIND.MDB e a tabela Clientes , mostrando todas a
informações dos clientes cuja cidade for igual a SP .

DAO

Dim db As DAO.Database

    Dim rst As DAO.Recordset

    Dim fld As DAO.Field

    'Abre a base de dados

    Set db = DBEngine.OpenDatabase("C:\nwind.mdb")

    'Abre o Recordset

    Set rst = db.OpenRecordset("Select * from Clientes where Cidade" & _

        " = 'SP'", dbOpenForwardOnly, dbReadOnly)

    'Imprime os valores dos campos para o primeiro registro

     For Each fld In rst.Fields

        Debug.Print fld.Value & ";";

    Next

    'Fecha o Recordset

    rst.Close

ADO

    Dim cnn  As New ADODB.Connection

    Dim rst  As New ADODB.Recordset

    Dim fld As ADODB.Field

    'Abre uma conexão

    cnn.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\nwind.mdb;"

    'Abre o Recordse somente-leitura

    rst.Open "Select * from Clientes where Cidade = 'SP'", cnn, _

        adOpenForwardOnly, adLockReadOnly

    'Imprime os valores dos campos para o primeiro registro

    For Each fld In rst.Fields

        Debug.Print fld.Value & ";";

    Next

    'Fecha o Recordset

    rst.Close

continua...

------------------------------------------------------------------------

                                  retorna

[Image]
