ActiveX Data Objects I

Documentos relacionados
VBA e Access. Modo de interacção

VBA e Access Modo de interacção

10. Acessando o Banco de Dados através do Visual Basic

Reconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL

2.) Listagem Página a Página

Macros e Programação VBA

Componentes ADO e o Acesso ao Banco de Dados

Formulários VIII Vista de estrutura

Consultas I Para que servem? Como funcionam Tipos de consulta Consultas Selecção Consultas parametrizadas Consultas Tabela de referência cruzada

VBA e Access. Opções do Access

Basicamente iremos precisar de uma base de dados na qual iremos armazenar os registros feitos pelos vistantes: Vamos armazenar os seguintes dados:

Informática II Ficha 5_resolução

IEC Banco de Dados I Aula 11 Técnicas de Programação SQL

Variáveis Tipos de Dados. APROG (Civil) Aula 2

INTRODUÇÃO AO MODELO ADO.NET (DESCONECTADO)

Módulo 1a: Introdução ao Visual Basic for Applications (VBA)

Variáveis Tipos de Dados

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

Plano de Aula - Access cód Horas/Aula

Material de Apoio. Access - Módulo II (Novo) 1632_MA01 Novembro/2013

Tutorial C# - ADO.NET

AULA TEÓRICA 11 Tema 7. Introdução ao Microsoft Access (cont.)

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Plano de Aula - Access cód Horas/Aula

Tratamento de erros I Ideia básica

Tutorial de Extensibilidade

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

MÓDULO 8 INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA POR OBJETOS O QUE É A PROGRAMAÇÃO ORIENTADA POR OBJETOS 10

Variáveis Escalar e de Array

5. NOÇÕES DE PROGRAMAÇÃO

Informática II Ficha 4_resolução

BDII SQL TRANSAÇÃO Revisão 2

Objectivos. Introdução à programação Macros em Microsoft Excel Introdução ao Visual Basic para Aplicações (VBA)

Progress DCA Desenvolvendo Aplicações Caracter Parte 1

MÓDULO 10 INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA POR OBJETOS O QUE É A PROGRAMAÇÃO ORIENTADA POR OBJETOS 10

Deverá ser apresentada uma caixa de combinação para auxiliar o utilizador a escolher o distrito de residência do entrevistado.

Visual Basic. Autor: Ronaldo Almada

BD II (SI 587) Programação SQL. Prof. Josenildo Silva.

Visual Basic for Applications

Técnicas de Uso de DBOs. Tecnologia

Tarefa Orientada 7 Consultas de selecção

Modulo 2 Gestão de Base

UFCD 786 Instalação e configuração de sistemas de bases de dados

Notas sobre programação VBA em Access 2000

Integração por Web Services

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

O dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros:

1 - Ambiente de desenvolvimento

Sub AcessaWeb(url, x) ' recebe uma url para pesquisar e devolve uma planilha ' Solicita a criação da planilha x

SQL Procedural. Josino Rodrigues Neto

PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO 11ºANO

Escola Secundária Ferreira Dias Agualva - Sintra. Atividade 18

PSI Linguagem de Definição de dados. Módulo 15

Acessando Dados com ADO.NET

1) Mostrando uma mensagem. 10 exemplos de macros essenciais no Excel. Este conteúdo faz parte da série: Excel VBA Ver 6 posts dessa série

AULA TEÓRICA 7-8. Tema 6. Introdução ao Microsoft Access (continuação)

TECNOLOGIAS DE ACESSO A BASES DE DADOS. Profª Ana Paula Cação Maio de 2018

Sistemas de Informação e Bases de Dados 2012/2013. Transações. Alberto Sardinha

Informática II Cap. 5-2 Bases de Dados - MsAccess

Oracle Database 10g: Fundamentos de SQL e PL/SQL

EISnt Centro de Formação em Tecnologia

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

CONSTRUÇÃO DE UMA APLICAÇÃO DE BANCO DE DADOS USANDO XML E ASP PROF. CELSO MASSAKI HIRATA (PQ) JULIANA DE MELO BEZERRA (IC)

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

f. Exemplo: verificar condição de aprovação de alunos

Ficha prática nº 8. SGBD Microsoft SQL Server e projecto do Microsoft Access

Oracle SQL Developer

Oracle Database: Fundamentos de SQL e PL/SQL

Marcos Alexandruk Marcos Alexandruk

Aplicativo para geração automática de páginas de gerenciamento on-line de banco de dados para sites

Excel 2010 Avançado Plano de Aula - 24 Aulas (Aulas de 1 Hora).

Oracle SQL Developer

Oracle PL/SQL Overview

Programação de Computadores usando VBA

Resolução de exercícios da ficha de trabalho nº. 8 de VBA

Administração de Banco de Dados

Plano de Aula - Excel 2010 Avançado - cód Horas/Aula

Bases de Dados. DDL Data Definition Language

Transcrição:

ActiveX Data Objects I Aspectos gerais A biblioteca ADO oferece uma interface genérica para acesso a dados Permite comunicar com um amplo conjunto de diferentes formatos de dados Define uma única sintaxe para manipular o mesmo tipo de objectos (é independente do formato dos dados) Constitui por si só uma hierarquia de objectos independente da hierarquia de objectos da aplicação principal Visual Basic for Applications: # 65

ActiveX Data Objects II Hierarquia de objectos ADODB: objecto de topo da hierarquia ADO Connection: para definir e estabelecer ligações com diferentes bases de dados Command: para executar instruções sobre uma dada ligação Recordset: para manipular conjuntos de registos Errors: conjunto de erros ocorridos durante a última operação duma ligação Parameters: conjunto de parâmetros de um dado comando com parâmetros Fields: conjunto de atributos (campos) de um dado registo Properties: conjunto de propriedades específicas de um dado objecto ADODB Connection Command Recordset Errors Properties Parameters Properties Fields Properties Visual Basic for Applications: # 66

Objectos Connection I Métodos connection.open ConnectionString: estabelece uma nova ligação connection.execute(commandtext,,options): para executar comandos adcmdtable: indica que CommandText refere o nome de uma tabela ou consulta adcmdtext: indica que CommandText refere uma expressão SQL connection.close: fecha a ligação Exemplos estabelecer ligação explícita a uma base de dados do Access Dim con As New Connection a declaração New cria desde logo uma nova instância do objecto con.open Provider=Microsoft.Jet.OLEDB.4.0; Data Source=teste.mdb con.close ligação corrente ao Access Dim con As Connection se vou usar Set posso omitir New Set con = CurrentProject.Connection con.close Visual Basic for Applications: # 67

Objectos Connection II Exemplos criar recordset a partir duma ligação explícita (3 exemplos) Dim con As Connection : Dim rst As Recordset Set con =... Set rst = con.execute( Clientes,, adcmdtable) Set rst = con.execute( [Query sem Parâmetros],, adcmdtable) Set rst = con.execute( SELECT * FROM Clientes,, adcmdtext) rst.close con.close criar recordset a partir da ligação corrente ao Access Dim rst As New Recordset rst.open Clientes, CurrentProject.Connection rst.close criar recordset a partir duma ligação implícita Dim rst As New Recordset rst.open Clientes, Provider=Microsoft.Jet.OLEDB.4.0; Data Source=teste.mdb rst.close Visual Basic for Applications: # 68

Objectos Command Propriedades e métodos command.activeconnection: ligação associada ao comando command.commandtext: texto do comando command.commandtype: tipo de comando (adcmdtable / adcmdtext) command.parameters: parâmetros do comando command.execute: para executar o comando Exemplos Dim com As New Command comando sem parâmetros com.activeconnection = CurrentProject.Connection com.commandtext = SELECT * FROM Clientes com.commandtype = adcmdtext : Set rst = com.execute comando com parâmetros com.activeconnection = CurrentProject.Connection com.commandtext = [Query com Parâmetros] com.commandtype = adcmdtable com.parameters.refresh lê os parâmetros com.parameters( [Limite?] ) = 100 : Set rst = com.execute Visual Basic for Applications: # 69

Objectos Recordset I Propriedades de ligação recordset.source: fonte de dados do recordset recordset.activeconnection: ligação associada ao recordset recordset.cursortype: tipo de cursor do recordset adopenforwardonly: navegação apenas para a frente adopenstatic: navegação livre adopendynamic: navegação livre; visualização em tempo real das adições e edições (alterações e eliminações) feitas por outros utilizadores adopenkeyset: navegação livre; visualização em tempo real apenas das edições feitas por outros utilizadores; batch updates recordset.locktype: tipo de bloqueio para edição dos registos do recordset adlockreadonly: não permite adição nem edição adlockpessimistic: bloqueia o registo corrente no início do processo de edição adlockoptimistic: bloqueia o registo corrente apenas quando sincroniza os dados com o servidor (método Update) adlockbatchoptimistic: bloqueia os vários registos alterados apenas quando sincroniza os dados com o servidor (método UpdateBatch) Visual Basic for Applications: # 70

Objectos Recordset II Abrir e Fechar recordset.open [Source, ActiveConnection, CursorType, LockType, Options]: abre um novo recordset recordset.close: fecha o recordset Movimentação recordset.move NumRecords, Start: move a posição do registo corrente recordset.movefirst: o mesmo que.move 0,adBookmarkFirst recordset.movelast: o mesmo que.move 0,adBookmarkLast recordset.movenext: o mesmo que.move 1,adBookmarkCurrent recordset.moveprevious: o mesmo que.move -1,adBookmarkCurrent recordset.bof: indica se a posição do registo corrente é antes do primeiro recordset.eof: indica se a posição do registo corrente é depois do último recordset.bookmark: marcador que identifica unicamente o registo corrente recordset.recordcount: número total de registos Visual Basic for Applications: # 71

Exemplos Dim rst As New Recordset Dim mark As Variant Dim cont As Integer Objectos Recordset III rst.open Clientes, CurrentProject.Connection, adopenstatic, adlockoptimistic, adcmdtable... mark = rst.bookmark guarda o marcador do registo corrente cont = 0 rst.movefirst Do Until rst.eof If rst.fields( Cliente ) Like A* Then cont = cont + 1 rst.movenext Loop MsgBox Existem & cont & nomes começados por A em & rst.recordcount & clientes! rst.bookmark = mark repõe o registo guardado como corrente rst.close Visual Basic for Applications: # 72

Objectos Recordset IV Edição e adição recordset.addnew: para adicionar novos registos recordset.update: guarda as alterações feitas ao registo corrente recordset.cancelupdate: anula as alterações feitas ao registo corrente Exemplos rst.movelast Do Until rst.bof rst.fields( Taxa de Comissão ) = 0.01 rst.update rst.moveprevious Loop rst.addnew cria um novo registo que passa a ser o corrente rst.fields( Cliente ) = António resp = MsgBox( Quer adicionar?, vbyesno) If resp = vbyes Then rst.update Else rst.cancelupdate o registo corrente volta a ser aquele End If que era antes da chamada a AddNew Visual Basic for Applications: # 73

Objectos Recordset V Eliminação recordset.delete: elimina o registo corrente Exemplo Dim rst As New Recordset rst.open SELECT * FROM [Clientes] WHERE [Taxa de Comissão]=0, CurrentProject.Connection, adopenstatic, adlockoptimistic, adcmdtext rst.movefirst Do Until rst.eof rst.delete a posição do registo corrente não se altera rst.movenext Loop rst.close para recolocar válido o registo corrente Visual Basic for Applications: # 74

Objectos Recordset VI Batch Updates recordset.updatebatch: guarda as alterações feitas em todos os registos recordset.cancelbatch: anula as alterações feitas em todos os registos Exemplo para batch updates no Access o cursor precisa de estar do lado do cliente (por defeito CursorLocation é aduseserver) rst.cursorlocation = aduseclient rst.open Clientes, CurrentProject.Connection, adopenkeyset, adlockbatchoptimistic, adcmdtable rst.addnew Cliente, António rst.addnew Cliente, Manuel resp = MsgBox( Quer adicionar?, vbyesno) If resp = vbyes Then rst.updatebatch Else rst.cancelbatch o registo corrente fica indeterminado rst.movefirst End If rst.close para recolocar válido o registo corrente Visual Basic for Applications: # 75

Objectos Recordset VII Transacções São úteis para quando se pretende garantir o sucesso de uma série de operações que no seu conjunto funcionam como um todo Por exemplo, para transferir dinheiro entre duas contas é necessário subtrair uma dada quantidade de um lado e adicionar num outro. Se algumas destas operações falha a outra deixa de fazer sentido e deverá ser anulada connection.begintrans: inicia uma nova transacção connection.committrans: confirma as alterações feitas durante a transacção e termina a transacção connection.rollbacktrans: repõe as alterações feitas durante a transacção e termina a transacção connection.attributes: atributos para criação automática de transacções adxactabortretaining: cria uma nova transacção após RollbackTrans adxactcommitretaining: cria uma nova transacção após CommitTrans Visual Basic for Applications: # 76

Objectos Recordset VIII Exemplo Dim con As Connection Dim rst As New Recordset Dim rst_check As New Recordset Set con = CurrentProject.Connection con.attributes = adxactabortretaining + adxactcommitretaining con.begintrans rst.open Clientes, con, adopenstatic, adlockoptimistic, adcmdtable rst.addnew Cliente, António con.committrans rst.addnew Cliente, Manuel rst_check.open Clientes, con, adopendynamic, adlockoptimistic, adcmdtable rst_check.movelast MsgBox rst_check.fields( Cliente ) apresenta Manuel con.rollbacktrans MsgBox rst_check.fields( Cliente ) dá um erro Visual Basic for Applications: # 77

Objectos Recordset IX Filtrar, ordenar e pesquisar registos recordset.filter: critério para filtragem dos registos do recordset recordset.sort: critério para ordenação dos registos do recordset recordset.find Criteria, SkipRows, SearchDirection: procura o primeiro registo que verifica o critério e torna-o o registo corrente Exemplos rst.filter = [Taxa de Comissão]=0 rst.filter = elimina qualquer filtro rst.cursorlocation = aduseclient necessário para ordenação rst.sort = [Taxa de Comissão] DESC, Cliente rst.sort = elimina qualquer ordenação rst.find [Taxa de Comissão]=0, 0, adsearchforward Do Until rst.eof adsearchbackward como alternativa MsgBox rst( Cliente ) rst.find [Taxa de Comissão]=0, 1, adsearchforward Loop Visual Basic for Applications: # 78