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 Recordset DAO Tipos de bloqueios(LockType) do Recordset ADO
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