Dao

  • July 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Dao as PDF for free.

More details

  • Words: 1,548
  • Pages: 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

Related Documents

Dao
November 2019 25
Dao
December 2019 34
Dao
November 2019 34
Dao
July 2020 11
Dao
May 2020 9
Ca Dao
June 2020 5