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