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:
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