0% acharam este documento útil (0 voto)
218 visualizações10 páginas

DAO

O documento descreve como acessar e manipular dados em uma base de dados do Microsoft Access usando o DAO (Data Access Objects) no Visual Basic. Ele discute como abrir uma base de dados e um recordset, navegar e editar registros, e executar consultas SQL.

Enviado por

api-19959782
Direitos autorais
© Attribution Non-Commercial (BY-NC)
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
218 visualizações10 páginas

DAO

O documento descreve como acessar e manipular dados em uma base de dados do Microsoft Access usando o DAO (Data Access Objects) no Visual Basic. Ele discute como abrir uma base de dados e um recordset, navegar e editar registros, e executar consultas SQL.

Enviado por

api-19959782
Direitos autorais
© Attribution Non-Commercial (BY-NC)
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 10

DAO

Linguagem : Visual Basic


Base de dados : Access
Indice
1 – Introdução
2 – Mecanismos de Acesso a uma Base de dados
3- Abertura de uma Base Dados, Opendatabase
4 – Abertura de um RecordSet
4.1 – Métodos de Navegação no Recordset
4.2 – Propriedades BOF e EOF
4.3 – Propriedades do RecordCount , AbsolutePosition e Percentposition
4.4 – Acesso aos Campos do Registo Actual
4.5 – Métodos Edit,Addnew,Update e CancelUpdate
4.6 – Método Delete
4.7 – Método Find e NoMatch
5 – DAO e SQL

1 – Introdução
DAO, foi criado antes do RDO e do ADO, é um conjunto
de “tarefas” que permite que o programador possa
aceder a informação de uma base de dados,contudo o
DAO não permite apenas aceder informação também
deixa controlar e administrar base de dados locais ou
remotas em vários formatos.
Usando DAO poderá criar e modificar a estrutura
da base de dados, criar tabelas, querys, relações,indexar
,receber, adicionar, actualizar e remover informação.

Neste Artigo irei abordar como poderemos fazer a


abertura da Databases e de RecordSets (acedendo as
suas propriedades e métodos) através de código. E
também a explicação de como poderá-se fazer uma
query em SQL à base de dados Access utilizando DAO.

2 – Mecanismos de Acesso a uma Base de Dados


Data Control – Controlo padrão;
Data Access Objects (DAO) – Permite utilizar código;
Open Database Conectivity (ODBC) – Permite a utilização directa das API;
Remote Data Objects (RDO) – Desenvolvido para ultrapassar a complexidade
do ODBC,é uma combinação deste último com o DAO;
ActiveX Data Objects (ADO) – Desenvolvido para combinar as melhores
características das três tecnologias (DAO,ODBC e RDO);
Visual Basic SQL Libraries (VBSQL) – Permitem l Ligação directa a um servidor
Microsoft SQL;
3 – Abertura de uma Base Dados (Opendatabase)
Uma base de dados pode ser aberta invocando o método OpenDatabase do
workspace corrente. O método OpenDatabase abre a base de dados e retorna uma
referência do tipo da base de dados e a sua localização . Exemplo:

Dim MinhaBD As Database


Set MinhaBD = OpenDatabase(“c:\...\MinhaBD.mdb”)

4 – Abertura de um Recordset
O método OpenRecordset de um objecto do tipo Database permite abrir os recordsets da
base de dados.

Sintaxe:

MeuRecordSet = MinhaBD.OpenRecordset(source, type)

source – nome da tabela ou query de que resulta o recordset


type – DBOpenTable, DBOpenDynaset ou DBOpenSnapShot

Exemplo:
‘ Declaração das variáveis necessárias
Dim MinhaBD As Database
Dim MeuRecordSet As Recordset

Set MinhaBD = OpenDatabase(“c:\My Documents\MinhaBD.mdb”)

Set MeuRecordSet = MinhaBD.OpenRecordset(“AMinhaTabela”, DBOpenTable)

4.1 – Metodos de Navegação no recordset


O registo actual de um recordset pode ser alterado através de um dos seguintes métodos:
MoveFirst, o registo actual passa a ser o primeiro registo do recordset
MoveLast, o registo actual passa a ser o último registo do recordset
MovePrevious, o registo actual passa a ser o registo anterior ao actual
MoveNext, o registo actual passa a ser o registo seguinte ao actual
Move, permite especificar o número de registos que se avança ou recua no recordset.
Exemplos: MeuRecordset.Move 5 ou MeuRecordset.Move -10

Caso não existam registos no recordset ocorrerá um erro sempre que qualquer destes
métodos seja invocado. O mesmo acontecerá sempre que a invocação de um destes
métodos implicar a deslocação para um registo anterior ao primeiro ou posterior ao
último registo do recordset.
Exemplos
Problema Proposto : “ Ligar a uma base de dados Access e por o ponteiro/cursor no
primeiro registo do recordset” (tabela)

‘ Declaração das variáveis necessárias


Dim MinhaBD As Database
Dim MeuRecordSet As Recordset

Set MinhaBD = OpenDatabase(“c:\My Documents\MinhaBD.mdb”)


Set MeuRecordSet = MinhaBD.OpenRecordset(“AMinhaTabela”, DBOpenTable)

MeuRecordSet.Movefirst 

O cursor/ponteiro irá para o primeiro registo da nossa Tabela chamada Clientes.

MeuRecordSet.MoveNext

O cursor/ponteiro passará para ao próximo registo.

MeuRecordSet.MovePrevious

O cursor/ponteiro passará para o registo anterior.

MeuRecordSet.MoveLast

O cursor/ponteiro passará para o ultimo registo.


4.2 - Propriedades BOF e EOF
As propriedades BOF (Beginning Of File) e EOF (End Of File), se forem
verdadeiras, indicam se o registo actual se encontra antes do primeiro registo ou depois
do último registo, respectivamente. Se ambas as propriedades forem verdadeiras
significa que não existem registos no recordset. As propriedades BOF e EOF só são
acessíveis em run-time e apenas para leitura. Estas propriedades são muito úteis no
tratamento de erros resultantes dos métodos de navegação no recordset.

Exemplo .:
Problema Proposto : “ Indicar se o cursor/ponteiro chegou ao fim do
RecordSet(tabela)”

‘ Declaração das variáveis necessárias


Dim MinhaBD As Database
Dim MeuRecordSet As Recordset

Set MinhaBD = OpenDatabase(“c:\My Documents\MinhaBD.mdb”)


Set MeuRecordSet = MinhaBD.OpenRecordset(“AMinhaTabela”, DBOpenTable)

MeuRecordset.MoveLast

IF tabela.EOF = True Then


MsgBox "O cursor/ponteiro chegou ao fim do RecordSet(tabela)"
End If

4.3 – Propriedades do RecordCount , AbsolutePosition e Percentposition


A propriedade RecordCount permite saber quantos registos existem num recordset.

A propriedade AbsolutePosition permite saber a posição do registo actual no recordset


ou alterar o registo actual: varia entre 0 e RecordCount-1.

A propriedade PercentPosition permite saber a posição do registo actual no recordset


ou alterar o registo actual em termos de percentagem do total de registos: varia entre
0.00 e 100.00.

Estas propriedades só indicam valores correctos depois de terem sido percorridos todos
os registos do recordset. Por isso, é comum fazer preceder a sua utilização da invocação
do método MoveLast.

Exemplo .:
Problema Proposto : “Mostrar quantos registos tem o Recordset(tabela)”

‘ Declaração das variáveis necessárias


Dim MinhaBD As Database
Dim MeuRecordSet As Recordset

Set MinhaBD = OpenDatabase(“c:\My Documents\MinhaBD.mdb”)


Set MeuRecordSet = MinhaBD.OpenRecordset(“AMinhaTabela”, DBOpenTable)

MeuRecordset.MoveLast
Msgbox MeuRecordSet.RecordCount

4.4 – Acesso aos Campos do Registo Actual

Para aceder por código aos campos do registo actual utiliza-se a seguinte notação:

MinhaTextBox.Text = MeuRecordset!Nsocio
Ou então
MinhaTextBox.text = MeuRecordset.Fields(0)

Para actualizar o valor de um campo do registo actual utiliza-se a seguinte notação:

MeuRecordset!Nsocio = MinhaTextBox.Text
Ou então
MeuRecordset.Fields(0) = MinhaTextBox.Text
(irei usar este método nos exemplos)

No entanto, como veremos, a actualização de campos do registo actual só é possível


após a invocação do método Edit ou do método AddNew.

4.5 – Métodos Edit,Addnew,Update e CancelUpdate

O método Edit copia os campos do registo actual para uma zona de memória
temporária de forma a que o mesmo possa ser actualizado.
O método AddNew cria um novo registo e copia os seus campos para uma zona de
memória temporária de forma a que estes possam ser editados.
Ao chamar os métodos Edit e AddNew os registos não são guardados automaticamente
na base de dados. Para que tal aconteça é necessário invocar o método Update após a
alteração dos campos que foram copiados para a zona de memória temporária.
O método CancelUpdate permite cancelar qualquer actualização pendente, isto é,
cancelar uma operação iniciada com os métodos Edit ou AddNew sem gravar as
alterações na base de dados.
Exemplo .:
Problema Proposto : “Actualizar o ultimo registo do campo Nsocio para o valor 11 e
criar um novo registo.”

‘ Declaração das variáveis necessárias


Dim MinhaBD As Database
Dim MeuRecordSet As Recordset

Set MinhaBD = OpenDatabase(“c:\My Documents\MinhaBD.mdb”)


Set MeuRecordSet = MinhaBD.OpenRecordset(“AMinhaTabela”, DBOpenTable)

MeuRecordset.MoveLast

MeuRecordset.edit

MeuRecordset.Fields(0) = MinhaTextBox.Text
MeuRecordset.Addnew

MeuRecordset.update

4.6 – Método Delete


O método Delete permite apagar da base de dados o registo actual. O seguinte
exemplo apaga da base de dados o último registo do recordset:
Exemplo:
Problema Proposto : “Apagar o ultimo registo do RecordSet.”

‘ Declaração das variáveis necessárias


Dim MinhaBD As Database
Dim MeuRecordSet As Recordset

Set MinhaBD = OpenDatabase(“c:\My Documents\MinhaBD.mdb”)


Set MeuRecordSet = MinhaBD.OpenRecordset(“AMinhaTabela”, DBOpenTable)

MeuRecordset.MoveLast
MeuRecordset.Delete

4.7 – Método Find e NoMatch


O método FindFirst procura o primeiro registo do recordset que satisfaz um
determinado critério.
O método FindLast procura o último registo do recordset que satisfaz um determinado
critério.
O método FindNext procura o próximo registo que satisfaz um determinado critério
partindo do registo actual.
O método FindPrevious procura o primeiro registo anterior que satisfaz um
determinado critério partindo do registo actual.
A sintaxe geral dos métodos FindFirst, FindLast, FindNext e FindPrevious é a
seguinte:
FindNext critério
critério é uma string que especifica o critério de procura

Exemplo:
Problema Proposto : “Procurar na tabela Clientes o primeiro registo que satisfaz a
seguinte condição Nsocio = 1 e procurar na tabela o ultimo registo na tabela que
satisfaz a seguinte condição Nome =’ teste3’.”

‘ Declaração das variáveis necessárias


Dim MinhaBD As Database
Dim MeuRecordSet As Recordset

Set MinhaBD = OpenDatabase(“c:\My Documents\MinhaBD.mdb”)


Set MeuRecordSet = MinhaBD.OpenRecordset(“AMinhaTabela”, DBOpenTable)

MeuRecordset.FindFirst “Nsocio = 1 ”
MeuRecordset.FindLast “Nome = ‘teste3’ ”
Sempre que na sequência da invocação de um dos métodos FindFirst, FindLast,
FindNext e FindPrevious for encontrado um registo, esse registo passa a ser o registo
actual e a propriedade NoMatch do recordset assume o valor False.
Sempre que não seja encontrado nenhum registo a propriedade NoMatch assume o valor
True.

5 – DAO e SQL
O mecanismo de Acesso DAO permite a utilização de querys à base de dados ou
seja de instruções SQL , passarei a demonstrar num simples exemplo como se poderá
fazer isso.

Exemplo:
Problema Proposto : “Selecionar todos os clientes com 19 anos de idade , utilizando
SQL.”

‘ Declaração das variáveis necessárias


Dim MinhaBD As Database
Dim MeuRecordSet_SQL As Recordset

Set MinhaBD = OpenDatabase(“c:\My Documents\MinhaBD.mdb”)


‘ Definer a Query

sqlquery = "Select * From Clientes Where Idade = 19"

Set MeuRecordSet_SQL = MinhaBD.OpenRecordset(sqlquery)

‘ Mostrar o resultado da query à base de dados


Msgbox MeuRecordSet_SQL!Nsocio
Msgbox MeuRecordSet_SQL!Nome
Msgbox MeuRecordSet_SQL!Idade
Msgbox MeuRecordSet_SQL!Morada
FIM

TMCS – RoLaN2
http://rprogrammer.blogspot.com
21 Abr. 06

Você também pode gostar