Você está na página 1de 4

Utilizando o ADO - [Básico]

Esta dica mostra os passos básicos p/ se usar o ADO ao invés do DAO.

A. Abertura de Banco de Dados e de Tabelas

'1º - Criar uma Conexão


Dim Conexão As ADODB.Connection
Set Conexão = New ADODB.Connection
'2º - Criar uma Recordset
Dim Tabela As ADODB.Recordset
Set Tabela = New ADODB.Recordset
'3º - Criar uma Variável para SQL
Dim SQLString As String
'4º - Abrir o Banco de Dados (Definir o SGBD a ser Utilizado)
Conexão.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
App.Path & "\Banco.MDB"
'5º - Definir o Valor Inicial para a Variável de SQL
SQLString = "Select * From Tabela"
'6º - Abrir o Recordset (Tabela)
Tabela.Open SQLString, Conexão, [CursorType], [LockType]

Explicações:
[CursorType]: Opcional. Um valor CursorTypeEnum que determina o tipo de cursor
que o provedor deve usar ao abrir o Recordset. Pode ser uma das seguintes constantes:

Constante Descrição
adOpenForwardOnly Cursor somente progressivo. Padrão. Idêntico ao cursor
estático exceto pelo fato de que é possível somente
efetuar rolagem progressiva pelos registros.
Isso melhora o desempenho em situações em que é
necessária somente uma passagem pelo recordset.
adOpenKeyset Cursor do conjunto de teclas. Como um cursor
dinâmico, exceto pelo fato de que não é
possível consultar os registros que outros usuário adicionaram,
embora os registros excluídos por outros usuários sejam
inacessíveis a partir do recordset. As
alterações nos dados feitas por outros usuários permanecem
visíveis.
adOpenDynamic Cursor dinâmico. Adições, alterações e exclusões
feitas por outros usuários são visíveis e todos
os tipos de movimentos pelo recordset são permitidos, exceto
indicadores, se o provedor não der suporte a eles.
adOpenStatic Cursor estático. Uma cópia estática de um recordset que
pode ser usada para localizar dados ou gerar
relatórios. Adições, alterações ou exclusões feitas por outros
usuários não são visíveis.
[LockType]: Opcional. Um valor LockTypeEnum que determina qual tipo de bloqueio
(simultaneidade) o provedor deve usar ao abrir o Recordset. Pode ser uma das seguintes
constantes:

Constante Descrição
adLockReadOnly Padrão. Somente leitura - não é possível alterar os
dados.
adLockPessimistic Bloqueio pessimista, registro por registro - o provedor faz
o que for necessário para garantir o êxito da edição dos registros,
em geral, bloqueando-os na fonte de dados
imediatamente acima de uma edição.
adLockOptimistic Bloqueio otimista, registro por registro - o provedor usa o
bloqueio otimista, bloqueando os registros somente
quando o método Update for chamado.
adLockBatchOptimistic Atualizações em lotes otimistas - necessárias para
o modo de atualização em lotes em oposição ao
modo de atualização imediata.

B. Manipulação de Dados
A manipulação continua idem ao do DAO, com a diferença de não existir mais o
metodo Edit.

Veja os exemplos:

Adicionando um Registro:
Tabela.AddNew
Tabela![Campo1] = Valor1
Tabela![Campo2] = Valor2
Tabela![Campo3] = Valor3
Tabela![Campo4] = Valor4
Tabela.Update

Alterando um Registro:
Tabela![Campo1] = NovoValor1
Tabela![Campo2] = NovoValor2
Tabela![Campo3] = NovoValor3
Tabela![Campo4] = NovoValor4
Tabela.Update

Excluindo um Registro:
Dim RES
RES = MsgBox("Deseja excluir o registro atual?", _
48 + vbYesNo, "Excluir???")
If RES = vbYes Then
Tabela.Delete
If Not Tabela.EOF Then
Tabela.MoveFirst
'Sub que joga os valores dos campos da
'tabela p/ os TextBoxes
MostraDados
End If
End If
Movendo entre Registros:
Coloque 4 botões no Form, com Captions "|<", "<", ">" e ">|", todos com o nome
cmdMove, formando assim um array de botões de indices 0 à 3.

No evento Click deste array de botões, coloque o seguinte código:

Private Sub cmdMove_Click(Index As Integer)


Select Case Index
Case 0
Tabela.MoveFirst
Case 1
If Not Tabela.BOF Then Tabela.MovePrevious
If Tabela.BOF Then
Tabela.MoveFirst
End If
Case 2
If Not Tabela.EOF Then Tabela.MoveNext
If Tabela.EOF Then
adoPrimaryRS.MoveLast
End If
Case 3
Tabela.MoveLast
End Select
End Sub

Editando dados de um Recordset com ADO ?

Quando você queria editar um registro usando a DAO seguia os seguintes passos:

1. Abria o Recordset
2. Executava o método EDIT
3. Executava o método UPDATE

Dim db As DAO.Database
Dim rst As DAO.Recordset

Set db = DAO.DBEngine.OpenDatabase(CaminhoBD,False, False)


Set rst = db.OpenRecordset("Clientes")

rst.Edit
rst!Nome = "Macoratti"
rst.Update

End Sub

Ao usar a ADO você deve atentar para as seguintes mudanças :


• O modo de abertura padrão de um recordset ADO é somente leitura , por
isto , você vai ter que alterar o tipo de cursor e o tipo de bloqueio ( Lock
Type ) permitindo a edição dos registros.
• Não existe o método EDIT na ADO , para editar é só começar...
• Você não precisar usar o método UPDATE , pois , ao mover-se para outro
registro , a ADO atualizará seus registros automaticamente. Mas se você
apenas sair sem executar o método UPDATE irá perder as alterações
feitas.

Dim conn As ADODB.Connection


Dim rst As ADODB.Recordset

Set conn = New ADODB.Connection

With conn

.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeReadWrite ' Permite Ler/Escrever.
.ConnectionString = "data source=" & CaminhoBD
.Open

End With

Set rst = New ADODB.Recordset


rst.Open "Clientes", conn, adOpenKeyset, adLockOptimistic
' Observe que não existe o método EDIT
rst!Nome = "Macoratti"
' Se você mover o ponteiro do registro o método UPDATE não é necessário
rst.Update

Até mais ...

Você também pode gostar