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 contm a coleo Fields que contm 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 mtodo Execute do objeto Connection.
  2. Usando o mtodo Open do objeto Recordset.
  3. Usando o mtodo Execute do objeto Command.

No podemos abrir um objeto Recordset da ADO diretamente de um objeto Table
ou Procedure ou View.

Os Recordsets abertos via mtodo Execute so sempre forward-only e somente
leitura. Se voc precisar criar recordsets atualizveis deve usar o mtodo
OPEN do objeto Recordset da DAO.

Os parmetros CursorType, LockType e Options do mtodo Open determinam o
tipo de Recordset que  retornado.

Vejamos na tabela abaixo como os parmetros do mtodo OPEN do objeto
Recordset podem ser mapeados para as propriedades da ADO.

 Tipo de Recordset DAO                     Propriedades ou parmetros do Recordset ADO

 dbOpenDynaset                             CursorType=adOpenKeyset

 dbOpenSnapshot                            CursorType=adOpenStatic

 dbOpenForwardOnly                         CursorType=adOpenForwardOnly

 dbOpenTable                               CursorType=adOpenKeyset, Options=adCmdTableDirect

 Opo 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
informaes 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 conexo

    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]
