Vous êtes sur la page 1sur 537

VIDAL DE CARVALHO

ANA AZEVEDO
ANTÓNIO ABREU

BASES DE

DADOS COM

MICROSOFT
ACCESS 2007

Portugal/2008
’Microsoft’ is a registered trademark of Microsoft Corporation in the United States and/or other
countries and is used by Centro Atlântico under license from owner. ‘Bases de Dados com
Microsoft Access 2007’ is an independent publication not affiliated with Microsoft Corporation.

Reservados todos os direitos por Centro Atlântico, Lda.


Qualquer reprodução, incluindo fotocópia, só pode ser feita com autorização expressa dos editores da obra.

BASES DE DADOS COM MICROSOFT ACCESS 2007


Colecção: Tecnologias
Autores: António João Vidal de Carvalho
Ana Isabel Rojão Lourenço Azevedo
António José Abreu da Silva

Direcção gráfica: Centro Atlântico


Revisão técnica: Vítor Emanuel Pereira
Capa: Paulo Buchinho

© Centro Atlântico, Lda., 2008


Ap. 413
4760-056 V. N. Famalicão
©
Portugal
Tel. 808 20 22 21

geral@centroatlantico.pt
www.centroatlantico.pt

Impressão e acabamento: Inova


1ª edição: Janeiro de 2008
ISBN: 978-989-615-050-1
Depósito legal: /08

Marcas registadas: Todos os termos mencionados neste livro conhecidos como sendo marcas
registadas de produtos e serviços foram apropriadamente capitalizados. A utilização de um
termo neste livro não deve ser encarada como afectando a validade de alguma marca registada
de produto ou serviço.
O Editor e os Autores não se responsabilizam por possíveis danos morais ou físicos causados
pelas instruções contidas no livro nem por endereços Internet que não correspondam às Home-
-Pages pretendidas.
Índice

PARTE I

I.1 OS SISTEMAS DE INFORMAÇÃO E AS ORGANIZAÇÕES ....... 17


1.1 Características de um Sistema .......................................................................... 18
1.2 A organização vista como um Sistema .............................................................. 19
1.3 A Informação ..................................................................................................... 19
1.3.1 Características da informação ........................................................................... 20
1.3.2 A Informação nas organizações......................................................................... 20
1.3.3 Tipos de informação nas organizações ............................................................. 21
1.4 Os Sistemas de Informação Organizacionais .................................................... 22
1.4.1 Evolução histórica dos Sistemas de Informação ............................................... 23
1.4.2 Planeamento e desenvolvimento de Sistemas de Informação .......................... 25
1.4.3 A introdução dos Sistemas de Informação nas organizações .......................... 28
TERMOS CHAVE ................................................................................................................. 30
PARA REVER … .................................................................................................................. 31
PARA INVESTIGAR … ........................................................................................................ 31

I.2 AS BASES DE DADOS ..................................................... 33


2.1 As raízes históricas: Ficheiros e Sistemas de Ficheiros .................................... 34
2.1.1 Gestão de dados nos Sistemas de Ficheiros..................................................... 35
2.1.2 Dependência dados-aplicações ......................................................................... 38
2.1.3 Redundâncias nos dados .................................................................................. 38
2.2 Sistemas de Bases de Dados ............................................................................ 39
2.2.1 Características de um Sistema de Bases de Dados .......................................... 40
2.2.2 Intervenientes num Sistema de Bases de Dados .............................................. 41
2.2.3 As funções do Sistema de Gestão de Bases de Dados .................................... 42
2.2.4 Arquitectura do Sistema de Gestão de Bases de Dados e Independência dos
Dados ......................................................................................................................... 44
2.2.5 Linguagens fornecidas pelo SGBD .................................................................... 46
2.2.6 Classificação dos SGBD’s ................................................................................. 48
6 BASES DE DADOS COM MICROSOFT ACCESS 2007

2.3 Modelos de Bases de Dados ............................................................................ 48


2.3.1 Modelo Hierárquico ........................................................................................... 49
2.3.2 Modelo em Rede ............................................................................................... 51
2.3.3 O Modelo Relacional ......................................................................................... 53
2.3.4 Novos modelos: Modelos Orientados a Objectos e Extensões ao Modelo
Relacional .................................................................................................................. 54
2.4 Outras Aplicações das Base de Dados ............................................................. 59
2.4.1 Data Warehouses ............................................................................................. 59
2.4.2 OLAP’s .............................................................................................................. 62
2.4.3 Data Mining ...................................................................................................... 63
2.4.4 Integração com a Web ...................................................................................... 65
TERMOS CHAVE ................................................................................................................ 67
PARA REVER … ................................................................................................................. 68
PARA INVESTIGAR …........................................................................................................ 69

I.3 O MODELO RELACIONAL DE BASES DE DADOS ................ 71


3.1 Terminologia básica .......................................................................................... 72
3.2 Atributos Chave................................................................................................. 75
3.2.1 Super-Chave ..................................................................................................... 75
3.2.2 Chave Candidata .............................................................................................. 75
3.2.3 Chave Primária ................................................................................................. 76
3.2.4 Chave Estrangeira ............................................................................................ 76
3.2.5 Um exemplo ...................................................................................................... 77
3.3 Regras de Integridade ....................................................................................... 79
3.3.1 Integridade de Entidade .................................................................................... 79
3.3.2 Integridade Referencial ..................................................................................... 79
3.4 Operadores da Álgebra Relacional ................................................................... 80
3.4.1 O Operador SELECT ........................................................................................ 81
3.4.2 O operador PROJECT ...................................................................................... 81
3.4.3 O operador PRODUCT ..................................................................................... 82
3.4.4 O operador UNION ........................................................................................... 84
3.4.5 O Operador DIFFERENCE ............................................................................... 85
3.4.6 O Operador INTERSECT .................................................................................. 85
3.4.7 O operador JOIN ............................................................................................... 86
3.4.8 O operador DIVIDE ........................................................................................... 87
3.5 SQL – Uma linguagem de bases de dados relacionais ..................................... 88
3.5.1 Definição de dados ........................................................................................... 89
3.5.2 Inserção e actualização de dados ..................................................................... 92
3.5.3 Queries com SQL.............................................................................................. 94
ÍNDICE 7

3.6 As regras de Codd ............................................................................................. 98


TERMOS CHAVE ............................................................................................................... 101
PARA REVER … ................................................................................................................ 102
PARA INVESTIGAR … ...................................................................................................... 109

I.4 MODELAÇÃO DE DADOS ............................................... 111


4.1 A importância da modelação de dados ............................................................ 111
4.2 O modelo Entidade-Relacionamento (E-R) ...................................................... 112
4.2.1 Entidades e Atributos ....................................................................................... 113
4.2.2 Relacionamentos ............................................................................................. 115
4.2.3 Entidades fracas .............................................................................................. 123
4.2.4 Entidades compostas....................................................................................... 124
4.2.5 Uma comparação de notações ........................................................................ 127
4.3 Desenvolvendo um Diagrama E-R................................................................... 128
4.4 Correspondência entre o modelo E-R e o modelo relacional ........................... 133
TERMOS CHAVE ............................................................................................................... 136
PARA REVER … ................................................................................................................ 137
PARA INVESTIGAR … ...................................................................................................... 142

I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO ............. 143


5.1 A Importância da Normalização ....................................................................... 145
5.2 Dependências funcionais ................................................................................. 146
5.3 O processo de Normalização ........................................................................... 147
5.3.1 Primeira Forma Normal .................................................................................... 149
5.3.2 Segunda Forma Normal ................................................................................... 151
5.3.3 Terceira Forma Normal .................................................................................... 152
5.3.4 Forma Normal de Boyce-Codd ........................................................................ 153
5.3.5 Multi-dependência e Quarta Forma Normal ..................................................... 156
5.3.6 Dependência de junção e Quinta Forma Normal ............................................. 157
TERMOS CHAVE ............................................................................................................... 160
PARA REVER … ................................................................................................................ 161
PARA INVESTIGAR … ...................................................................................................... 165
8 BASES DE DADOS COM MICROSOFT ACCESS 2007

PARTE II

II.1 O MICROSOFT ACCESS ................................................ 169


1.1 Características gerais ...................................................................................... 169
1.2 O Microsoft Access 2007................................................................................. 170

II.2 NOVIDADES DO MICROSOFT ACCESS 2007 ................... 173


2.1 Começar rapidamente a controlar as informações .......................................... 173
2.1.1 Excelentes modelos para introdução ............................................................... 173
2.1.2 Criação rápida avançada utilizando o separador Criar .................................... 174
2.1.3 Criação rápida de tabelas com a vista Folha de Dados melhorada................. 175
2.1.4 Filtrar e classificar dados ................................................................................. 175
2.1.5 Campos com valores múltiplos ........................................................................ 176
2.1.6 Anexar documentos e arquivos à Base de Dados ........................................... 177
2.1.7 Texto formatado em campos Memo ................................................................ 177
2.1.8 Calendário automático para selecção da data................................................. 177
2.1.9 Linha de total nas folhas de dados .................................................................. 178
2.1.10 Macros incorporadas ..................................................................................... 178
2.1.11 Dividir formulários .......................................................................................... 178
2.1.12 Visualizador de Ajuda melhorado .................................................................. 179
2.2 Partilhar informações controladas com outros utilizadores ............................. 179
2.2.1 Recolher dados usando o Outlook 2007.......................................................... 179
2.2.2 Colaboração na Web com o Windows SharePoint Services ........................... 180
2.2.3 Trabalhar off-line com as listas do Windows SharePoint Services .................. 180
2.2.4 Integração com o fluxo de trabalho do Windows SharePoint Services ............ 181
2.2.5 Exportar para PDF e XPS ................................................................................ 181
2.2.6 Experiência melhorada de importação e exportação ....................................... 181
2.3 Criar e adaptar relatórios para responder às necessidades ............................ 182
2.3.1 Edição dos modos Relatório e Esquema ......................................................... 182
2.3.2 Painel de campos dos Relatórios .................................................................... 183
2.3.3 Informações agrupadas em Relatórios ............................................................ 183
2.4 Gerir e auditar informações confidenciais ....................................................... 184
2.4.1 Segurança avançada ....................................................................................... 184
2.4.2 Auditoria de dados ........................................................................................... 185
2.4.3 Histórico da revisão ......................................................................................... 185
2.4.4 Configuração de permissão ............................................................................. 185
2.4.5 Reciclagem ...................................................................................................... 185
ÍNDICE 9

II.3 A INTERFACE DO MICROSOFT ACCESS 2007 ................. 187


3.1 Interface de utilizador orientada a resultados...................................................187
3.2 O friso ..............................................................................................................188
3.2.1 Os separadores do friso ................................................................................... 188
3.2.2 Secções contextuais......................................................................................... 189
3.3 O Botão Microsoft Office ..................................................................................190
3.4 Barra de Ferramentas de Acesso Rápido ........................................................191
3.5 Painel de Navegação .......................................................................................192
3.6 Barra de Estado ...............................................................................................193

II.4 CRIAÇÃO DE UMA BASE DE DADOS COM O ACCESS 2007 195


4.1 Compreender as Bases de Dados do Access ..................................................195
4.2 Iniciar o Access 2007 .......................................................................................197
4.3 Alternativas para a criação de uma Base de Dados ........................................198
4.3.1 Criar uma Base de Dados utilizando um Modelo ............................................. 199
4.3.2 Criar uma Base de Dados vazia ....................................................................... 200
4.4 Gravar e Abrir Base de Dados do Access ........................................................201
4.4.1 Gravar Bases de Dados num formato diferente ............................................... 201
4.4.2 Abrir uma Base de Dados ................................................................................ 202

II.5 CONSTRUÇÃO DE TABELAS EFICIENTES ........................ 205


5.1 Opções para a criação de uma tabela .............................................................205
5.2 Criação de uma tabela com base num modelo predefinido .............................206
5.3 Criação de uma tabela por Inserção de Dados ................................................206
5.4 Criação de uma tabela na vista de estrutura ....................................................207
5.4.1 Escolher tipos de dados ................................................................................... 208
5.4.2 Propriedades dos campos ................................................................................ 209
5.4.3 Campo chave primária ..................................................................................... 217
5.5 Relacionamentos entre tabelas ........................................................................218
5.5.1 Criação de relacionamentos ............................................................................. 219
5.5.2 Integridade Referencial .................................................................................... 220
5.5.3 Tipos de relacionamentos ................................................................................ 221
5.5.4 Alteração da estrutura de relacionamentos ...................................................... 222
5.5.5 Navegação nos relacionamentos ..................................................................... 223
10 BASES DE DADOS COM MICROSOFT ACCESS 2007

5.6 Manipulação da Folha de Dados: Formatar, ordenar, filtrar e procurar ........... 225
5.6.1 Navegação na Folha de Dados ....................................................................... 226
5.6.2 Formatação da Folha de Dados ...................................................................... 227
5.6.3 Rearranjar Colunas.......................................................................................... 227
5.6.4 Colunas escondidas ........................................................................................ 228
5.6.5 Ordenação ....................................................................................................... 229
5.6.6 Filtragem .......................................................................................................... 229
5.6.7 Pesquisa .......................................................................................................... 233
5.6.8 Imprimir a Folha de Dados............................................................................... 234
5.7 Importação e exportação de dados ................................................................. 235
5.7.1 Importar dados................................................................................................. 236
5.7.2 Exportar dados ................................................................................................ 237
5.8 Exercício guiado .............................................................................................. 238

II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS .................. 247


6.1 Tipos de consultas com o Access ................................................................... 247
6.2 Criação de uma consulta simples com o assistente ........................................ 248
6.3 Criação de uma consulta com a Vista de Estrutura ......................................... 250
6.3.1 Descrição da janela para a criação de uma consulta ...................................... 251
6.3.2 Caracterização da grelha da consulta ............................................................. 252
6.3.3 Inserção de campos nas consultas.................................................................. 252
6.3.4 Visualizar a consulta através da Folha de Dados ............................................ 254
6.3.5 Especificar o tipo de ordenação....................................................................... 254
6.3.6 Valores superiores ........................................................................................... 255
6.4 Definição de critérios em consultas ................................................................. 255
6.5 Criação de consultas com tabelas relacionadas ............................................. 257
6.6 Consultas com parâmetros.............................................................................. 258
6.7 Criação de campos calculados........................................................................ 260
6.8 Consultas de Referência Cruzada ................................................................... 265
6.8.1 Criação de uma consulta de referência cruzada com o Assistente ................. 266
6.8.2 Criar uma consulta de referência cruzada com a Vista de estrutura ............... 269
6.9 Consultas de Acção ........................................................................................ 270
6.9.1 Impedir que o modo Desactivado bloqueie uma consulta ............................... 271
6.9.2 Consulta criar tabela ........................................................................................ 271
6.9.3 Consulta eliminação ........................................................................................ 273
6.9.4 Consulta acrescentar ....................................................................................... 275
6.9.5 Consulta actualização ...................................................................................... 276
ÍNDICE 11

6.10 Consultas SQL ...............................................................................................278


6.10.1 Visualização ou modificação de uma declaração SQL................................... 279
6.10.2 Consultas SQL específicas ............................................................................ 279
6.10.3 Utilização de Subconsultas ............................................................................ 282
6.11 Exercício guiado.............................................................................................282

II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS .......... 289


7.1 Aplicação de formulários ..................................................................................289
7.2 Opções para a criação de formulários .............................................................290
7.3 Formulário de Criação Rápida .........................................................................291
7.4 Formulários usando o Assistente .....................................................................293
7.4.1 Criação de um novo formulário com Assistente ............................................... 293
7.5 Formulários em branco ....................................................................................294
7.6 Formulários usando a Vista de Estrutura .........................................................295
7.6.1 Criação de um formulário com a Vista de Estrutura ......................................... 296
7.7 Secções do formulário .....................................................................................297
7.7.1 Accionar as secções do formulário ................................................................... 297
7.7.2 Alterar o tamanho de uma secção .................................................................... 298
7.7.3 Seleccionar as propriedades de uma secção ou do próprio formulário ............ 298
7.8 Controlos num formulário .................................................................................299
7.8.1 Controlos dependentes, independentes e de cálculo ....................................... 299
7.8.2 Inserir campos na área do formulário ............................................................... 300
7.8.3 Criar outros controlos ....................................................................................... 300
7.8.4 Criar controlos que calculem valores................................................................ 301
7.8.5 Criar controlos tipo etiqueta.............................................................................. 302
7.8.6 Alterar as propriedades de um controlo já existente ........................................ 303
7.8.7 Grupo de Opções ............................................................................................. 304
7.8.8 Caixa de Listagem e Caixa de Combinação..................................................... 307
7.8.9 Subformulários ................................................................................................. 311
7.8.10 Cálculos num formulário ................................................................................. 313
7.8.11 Cálculos num subformulário ........................................................................... 314
7.8.12 Botões de comandos ...................................................................................... 317
7.8.13 Quebras de página ......................................................................................... 318
7.8.14 Moldura de objecto dependente e independente ........................................... 319
7.9 Tabelas Dinâmicas...........................................................................................321
7.10 Efeitos especiais de construção .....................................................................324
7.10.1 Como obter uma grande selecção de cores ................................................... 324
7.10.2 Formatação dos controlos do formulário ........................................................ 325
12 BASES DE DADOS COM MICROSOFT ACCESS 2007

7.10.3 Caixas de informação para os controlos........................................................ 326


7.11 Exercício guiado ............................................................................................ 327

II.8 IMPRESSÃO DE RELATÓRIOS ........................................ 335


8.1 Aplicação de relatórios .................................................................................... 335
8.2 Modos de Criação de relatórios....................................................................... 336
8.3 Relatório de Criação Rápida ........................................................................... 337
8.4 Relatórios usando o Assistente ....................................................................... 338
8.5 Relatórios em branco ...................................................................................... 341
8.6 Relatórios usando a Vista de Estrutura ........................................................... 343
8.6.1 Secções do relatório ........................................................................................ 344
8.6.2 Controlos em relatórios .................................................................................... 346
8.7 Filtragem, Ordenação e Agrupamento ............................................................ 348
8.7.1 Filtragem de um relatório ................................................................................. 348
8.7.2 Ordenação de dados ....................................................................................... 349
8.7.3 Agrupamento dos dados .................................................................................. 351
8.8 Gráficos em relatórios ..................................................................................... 353
8.9 Etiquetas com relatórios .................................................................................. 356
8.10 Impressão de um relatório ............................................................................. 358
8.11 Exportar relatórios ......................................................................................... 359
8.12 Exercício guiado ............................................................................................ 360

II.9 MACROS ..................................................................... 365


9.1 Acções e argumentos ...................................................................................... 365
9.2 Criação de uma macro .................................................................................... 366
9.3 Execução e Teste de uma macro .................................................................... 368
9.3.1 Executar uma macro a partir do Painel de Navegação.................................... 368
9.3.2 Executar uma macro com recurso a um botão de comando ........................... 369
9.3.3 Testar uma macro passo-a-passo ................................................................... 370
9.4 Criação de grupos de macros ......................................................................... 371
9.5 Criar macros condicionadas ............................................................................ 372
9.6 Atribuir macros a acontecimentos ................................................................... 374
ÍNDICE 13

9.6.1 Atribuir uma macro a um acontecimento .......................................................... 374


9.6.2 Criar uma nova macro para um acontecimento................................................ 375
9.7 Exercício Guiado ..............................................................................................376

II.10 GESTÃO DA BASE DE DADOS ..................................... 381


10.1 Sistema de Navegação ..................................................................................381
10.1.1 Construção do Painel de Navegação ............................................................. 381
10.1.2 Designação do Sistema de Navegação como formulário de arranque da
aplicação ................................................................................................................... 383
10.2 Fazer Cópias de Segurança...........................................................................384
10.3 Utilizar uma palavra-passe para encriptar uma BD ........................................385
10.3.1 Encriptação utilizando uma palavra-passe ..................................................... 386
10.3.2 Desencriptar e abrir uma base de dados........................................................ 387
10.3.3 Remover uma palavra-passe ......................................................................... 387
10.4 Segurança para Bases de Dados Distribuídas...............................................388
10.5 Divisão de Base de Dados .............................................................................389
10.6 Analisar o desempenho .................................................................................391
10.7 Analisar Tabelas ............................................................................................393

PARTE III

III. 1 INTRODUÇÃO À PROGRAMAÇÃO EM VBA .................... 399

III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA ........... 401


2.1 Programação Orientada por Objectos ..................................... 401
2.2 O ambiente de desenvolvimento do VBA ................................ 402
2.2.1 Objectos e Classes .................................................................. 402
2.2.2 Propriedades e Métodos .......................................................... 404
2.2.3 Eventos .................................................................................... 410
14 BASES DE DADOS COM MICROSOFT ACCESS 2007

2.3 Procedimentos e Módulos ........................................................ 412


2.3.1 SubProcedimentos ................................................................... 415
2.3.2 Funções ................................................................................... 418
2.4 Janelas do Editor de Visual Basic – VBE Windows ................. 423
2.5 Conceitos e Estruturas de Controlo em VBA ........................... 428
2.5.1 Tipos de dados ......................................................................... 428
2.5.2 Variáveis e Constantes ............................................................ 429
2.5.3 Variáveis declaradas e não declaradas ................................... 430
2.5.4 Âmbito das variáveis e constantes ........................................... 432
2.5.5 Operadores .............................................................................. 435
2.5.6 Estruturas de controlo .............................................................. 437
2.6 Funções do VBA ...................................................................... 451

III.3 MODELO DE OBJECTOS NO ACCESS 2007/VBA ........... 473


3.1 Arquitectura DAO ..................................................................... 474
3.1.1 Microsoft Data Access Objects ................................................ 476
3.2 Arquitectura ADO ..................................................................... 506
3.2.1 A Metodologia ADO no Access/VBA ........................................ 508
3.2.2 Modelo de Objectos ADO ........................................................ 508
3.2.3 Objectos ADO no Access 2007 ................................................ 510

III.4 TRANSIÇÃO DA METODOLOGIA DAO PARA ADO .......... 521

ANEXO I: GLOSSÁRIO DE ABREVIATURAS ........................... 525

ANEXO II: FUNÇÕES DO VBA ............................................. 529

BIBLIOGRAFIA ................................................................... 533


PARTE I

Na primeira parte deste livro é feito um enquadramento teórico


sobre bases de dados. Neste sentido, começamos por abordar os
Sistemas de Informação organizacionais, dos quais fazem parte
os Sistemas de Bases de Dados. Posteriormente veremos alguns
conceitos importantes relacionados com estes assuntos. Explora-
mos também o modelo relacional de Bases de Dados, apresen-
tando os operadores da Álgebra Relacional e fazendo uma breve
abordagem à linguagem SQL. Seguidamente veremos o modelo
Entidade-Relacionamento para modelação de dados. Abordare-
mos, por fim, o conceito de Dependência Funcional e a sua apli-
cação à Normalização de relações. No final de cada capítulo são
apresentados os termos chave, algumas questões para revisão e
alguns tópicos para investigação.
I.1

Os Sistemas de Informação e as
Organizações

É difícil conceber a sociedade de hoje sem a omnipresença dos computa-


dores e dos sistemas informáticos. A maior parte dos lares portugueses
tem já um computador, ou pelo menos algum dos seus elementos já tra-
balhou com um. Esta presença torna-se mais significativa quando nos res-
tringimos ao mundo empresarial. Qualquer empresa, por mais pequena
que seja, tem pelo menos um computador. A utilização que deles é feita
vai desde o simples processamento de texto aos modernos sistemas que
integram todo o processo produtivo da empresa.
Em muitas organizações os sistemas de informação e as aplicações infor-
máticas são considerados como essenciais para a conquista de vantagens
competitivas. No entanto, eles não são a panaceia do sucesso. É neces-
sário determinar as necessidades e estabelecer os seus limites. Eles não
surgem por si só. Em vez disso, são o produto de um processo de planea-
mento e desenvolvimento cuidadosos que requerem o empenhamento
efectivo de toda a organização.
As bases de dados, assunto principal deste livro, são um dos componentes
da vasta realidade que é o sistema de informação. Sem pretendermos ser
exaustivos, consideramos importante enquadrar e clarificar este tema.
Assim sendo, começamos por nos referir, em 1.1, às características de um
sistema, para, logo de seguida, em 1.2, vermos a organização como um
sistema aberto. Seguidamente, em 1.3, vamos abordar o conceito de
informação e a importância desta nas organizações actuais. Finalmente,
em 1.4, iremos centrar-nos nas características e evolução histórica dos
sistemas de informação organizacionais bem como referiremos aspectos
referentes ao seu planeamento e desenvolvimento.
18 BASES DE DADOS COM MICROSOFT ACCESS 2007

1.1 CARACTERÍSTICAS DE UM SISTEMA

Na década de 50, o biólogo alemão Ludwig Von Bertalanffy observou que


quaisquer organismos vivos pesquisados, embora se diferenciassem uns
dos outros por uma grande variedade de características, mantinham algu-
mas características comuns. Von Bertalanffy estendeu estas observações
a outros tipos de organismos como, por exemplo, organismos mecânicos
ou organismos sociais, tendo constatado que algumas características se
mantinham, independentemente da natureza do organismo. A mais impor-
tante característica que se podia sempre destacar era o objectivo (propó-
sito) que o organismo atingia. Embora o organismo em observação fosse
composto por uma série de elementos, percebia-se claramente a interac-
ção desses elementos com vista a atingir um objectivo, que seria a finali-
dade daquele organismo. Com base nesses estudos e observações, Von
Bertalanffy apresentou a chamada Teoria Geral dos Sistemas.
Desde essa altura muitos cientistas de todo o mundo têm efectuado estu-
dos nessa área. Das várias definições de Sistema que podemos encontrar,
salientamos a de Chiavenato [Chiavenato, 1992]: “Um Sistema é um con-
junto de elementos dinamicamente inter-relacionados, desenvolvendo uma
actividade ou função para atingir um ou mais objectivos ou propósitos”.
Chiavenato acrescenta que “quando falamos em natureza sistémica,
geralmente queremos nos referir a esse funcionamento global, total e inte-
grado, no qual o todo é maior (ou diferente) do que a soma das suas par-
tes”.
Cada sistema pode ser subdividido em vários sistemas – os subsistemas,
dependendo dos interesses da pessoa que pretende estudá-lo. Por exem-
plo, o computador é um sistema que tem como objectivo processar dados
e armazenar dados e informação. Podemos considerar que existem sub-
sistemas que compõem o computador: o subsistema teclado, o subsistema
CPU, etc.
Para conhecer um sistema temos de estudar a razão fundamental da sua
existência (o objectivo), as partes dinamicamente inter-relacionadas (os
componentes), a relação entre os componentes e a fronteira entre o sis-
tema e o meio ambiente (a estrutura), a forma como o sistema reage às
mudanças externas do seu ambiente (comportamento) e o seu ciclo de
vida (que genericamente inclui evolução, desgaste, envelhecimento, subs-
tituição e morte).
I.1 OS SISTEMAS DE INFORMAÇÃO E AS ORGANIZAÇÕES 19

Qualquer sistema apresenta maior ou menor entropia, que é a tendência


que o sistema tem para o desgaste e a desintegração e que aumenta com
o decorrer do tempo. Por outro lado, um sistema possui também alguma
homeostasia, que é o equilíbrio dinâmico entre as partes do sistema, ou
seja, os sistemas têm uma tendência para se adaptarem, a fim de alcançar
um equilíbrio interno, em face das mudanças externas do meio ambiente.

1.2 A ORGANIZAÇÃO VISTA COMO UM SISTEMA

Uma organização é composta por pessoas ou grupos de pessoas, intera-


gindo entre si para atingir objectivos comuns. Com o surgir da Teoria dos
Sistemas tornou-se clara a natureza sistémica de qualquer organização e
em particular da empresa. O objectivo de qualquer empresa é obter lucro.
Os componentes das empresas são, por exemplo, os departamentos1 e a
sua estrutura, ou relação entre esses departamentos, pode ser expressa,
por exemplo, através de um organograma. O seu comportamento consiste
na forma como a empresa reage ao seu ambiente, por exemplo, o que
acontece quando recebe uma factura.
Uma organização pode ser identificada como um sistema aberto tal como é
definido por Chiavenato [Chiavenato, 1992]: “Os sistemas abertos trocam
matéria e energia regularmente com o meio ambiente e são fundamental-
mente adaptativos, pois para sobreviver precisam reajustar-se continua-
mente às condições mutáveis do meio. Essa adaptabilidade é um processo
contínuo de aprendizagem e auto-organização do sistema aberto.”

1.3 A INFORMAÇÃO

Diz-nos Chiavenato [Chiavenato, 1992] que “os recursos são meios que as
empresas possuem para realizar as suas tarefas e atingir os seus objecti-
vos: são bens ou serviços consumidos na realização das actividades
empresariais.” Os recursos empresariais assumem uma grande variedade
de formas, sendo geridos no sentido de alcançar objectivos de auto-sus-
tentação e lucratividade. Molnar [Molnar, 1978] identificou a Informação co-

1
Conforme o tipo de abordagem pretendido poderíamos considerar outros componentes:
pessoas, equipamentos, etc.
20 BASES DE DADOS COM MICROSOFT ACCESS 2007

mo um recurso e, assim sendo, ela deve ser gerida como o são os restan-
tes recursos de uma organização. Qualquer organização para sobreviver
necessita de informação. Esta permite que a organização possa alcançar
os objectivos que se propõe atingir.

1.3.1 Características da informação

Em 1979, Jean-Louis Le Moigne2 define informação como sendo um


objecto formatado (dotado de formas reconhecíveis), criado artificialmente
pelo homem a fim de representar um acontecimento percebido por ele no
mundo real. Os informáticos definem informação como sendo dados pro-
cessados.
É necessário que a informação seja clara, precisa, rápida e orientada. A
informação deverá estar disponível na organização de uma forma facil-
mente utilizável e compreensível, disponível em tempo útil e obtida a um
custo razoável. A utilização dos sistemas informáticos, nomeadamente os
sistemas de bases de dados, é cada vez mais fundamental para que a in-
formação seja obtida, pela organização, com estas características.

1.3.2 A Informação nas organizações

Rob e Coronel [Rob e Coronel, 2002] identificam em qualquer organização


um ciclo dados-informação-decisão, esquematizado na figura I.1.1. O utili-
zador aplica a sua inteligência sobre os dados, produzindo informação.
Esta é a base do conhecimento que é utilizado na tomada de decisões. As
decisões geram determinadas acções que produzem mais dados...

Utilizador Dados Informação

Acções Tomadas de Conhecimento


decisões

Figura I.1.1 Ciclo dados-informação-decisão

2
Citado em [Almeida, 1997]
I.1 OS SISTEMAS DE INFORMAÇÃO E AS ORGANIZAÇÕES 21

A informação flui numa organização de duas formas (figura I.1.2): entre os


níveis de gestão da organização e dentro de cada nível de gestão. Mais
uma vez referimos que os sistemas informáticos podem ser um auxiliar
precioso para que a informação flua na organização de forma eficiente.

Estratégico

Táctico

Operacional Figura I.1.2


Fluxo de
informação na
organização

1.3.3 Tipos de informação nas organizações

Numa organização podem ser identificados dois tipos de Informação:


• Operacional
Sendo utilizada diariamente, permite que a organização leve a cabo
as suas actividades de rotina, de forma eficiente;

• De Gestão
Serve de suporte à tomada de decisão nos três níveis da gestão.

Na figura I.1.3 é feito um resumo das características de cada um dos dois


tipos de informação, no que concerne a raio de acção, nível de detalhe,
síntese, idade, exactidão e fonte.
22 BASES DE DADOS COM MICROSOFT ACCESS 2007

Características Operacional Gestão

Raio de acção Reduzida Ampla

Detalhe Muito detalhada Geral

Síntese Geralmente em bruto Geralmente sumariada

Idade Tem de ser actual Pode ser antiga

Exactidão Precisa de ser exacta Podem bastar estimativas

Tipo Mais quantitativa Mais qualitativa

Fonte Principalmente interna Principalmente externa

Figura I.1.3 Características dos tipos de Informação nas organizações

1.4 OS SISTEMAS DE INFORMAÇÃO ORGANIZACIONAIS

As empresas actuais têm necessidade de desenvolver, implementar e gerir


toda uma infra-estrutura capaz de dar apoio aos processos de recolha,
armazenamento, criação e distribuição de informação. Essa infra-estrutura,
que constitui o Sistema de Informação da organização, deve ser composta
por recursos computacionais, humanos e organizacionais, que devem agir
de forma integrada, com o objectivo de suportar as funções operacionais e
de gestão da organização.
As modernas tecnologias de informação permitem, quando devidamente
integradas, que as organizações desenvolvam a qualidade dos seus servi-
ços e produtos. Como afirma Serrano, “existe a consciência de que o sis-
tema de Informação e as Tecnologias de Informação e Comunicação não
cumprem as suas funções sem a cumplicidade activa dos membros da
organização, quer ao nível dos utilizadores quer ao nível dos decisores. A
adopção da tecnologia pela tecnologia, por mais sofisticada que se apre-
sente, não resolve qualquer problema. A adesão das pessoas à inovação,
a cultura da partilha de conhecimento e a criação de memória organizacio-
nal são fundamentais para o funcionamento de um Sistema de Informação
Organizacional.”.
A United Kindgom Academy for Information Systems, na sua newsletter em
1995, considera o estudo de Sistemas de Informação como sendo uma
área multidisciplinar que abrange as actividades de nível estratégico, tác-
I.1 OS SISTEMAS DE INFORMAÇÃO E AS ORGANIZAÇÕES 23

tico e operacional, envolvendo a recolha, processamento, distribuição e


utilização da informação e as tecnologias que lhe estão associadas, na
sociedade e nas organizações.
Como todos os sistemas, o Sistema de Informação é constituído por vários
subsistemas e por outro lado faz parte integrante de um sistema maior que
constitui o seu ambiente. Ao longo deste livro iremos analisar um dos sub-
sistemas do Sistema de Informação: o Sistema de Bases de Dados.

1.4.1 Evolução histórica dos Sistemas de Informação

De uma forma geral, podemos sintetizar a evolução dos Sistemas de


Informação na empresa através de quatro fases ou eras (figura I.1.4). O
despontar de uma fase não implica o desaparecimento de outra, havendo
coexistência das eras 1, 2 e 3.

ERA 1 ERA 4
Aumentar a eficiência das operações internas Aumentar a
TPS, MIS, DBMS eficiência nas
trocas inter-
ERA 2
empresas.
Aumentar a eficácia da gestão
Redesenhar os
OIS, DSS
processos de
ERA 3 gestão
Alterar as bases da ERP, CRM,
concorrência SCM, KMS, BI
ES, EIS

▲ ▲ ▲ ▲ ▲
1960 1970 1980 1990 2000

Figura I.1.4 A evolução dos sistemas de informação na empresa

Numa primeira fase, pretendia-se que, com a implementação dos sistemas


de informação na empresa, houvesse um aumento da eficiência das suas
operações internas. Numa segunda fase, o objectivo era aumentar a eficá-
cia da gestão. Numa terceira fase, houve a intenção de alterar as bases de
concorrência. Na quarta fase, pretende-se aumentar a eficiência nas trocas
inter-empresas, redesenhar os processos de gestão e mudar a estrutura
dos próprios sectores industriais.
24 BASES DE DADOS COM MICROSOFT ACCESS 2007

Ao longo dos anos têm surgido vários tipos de sistemas de informação,


habitualmente conhecidos por siglas. Na figura I.1.4 apresenta-se cada um
deles de acordo com a época em que surgiu. Os Sistemas de Proces-
samento de Transacções (TSP – Transaction Processing Systems) surgi-
ram na década de 50 tendo como objectivo substituir o processamento
manual de tarefas morosas e repetitivas, lidando normalmente com gran-
des quantidades de informação. Vender um item de mercadoria, efectuar
um pagamento com cartão de crédito, fazer a devolução de uma mercado-
ria, são exemplos de transacções. Os sistemas de processamento de tran-
sacções actuais são o sustentáculo da grande maioria das empresas e
muitas delas não suportariam muito tempo (por vezes horas) sem o sis-
tema a operar.
Nos anos 60 surgem os Sistemas de Informação de Gestão (MIS – Mana-
gement Information Systems). Estes pretendiam servir de suporte às acti-
vidades e funções de gestão e tomada de decisão numa organização. Ini-
cialmente eram utilizados para diversas actividades práticas, tais como
obtenção da folha de pagamentos ou manter-se a par das contas a pagar
ou a receber. Na mesma época emergem os Sistemas de Gestão de
Bases de Dados (DBMS – DataBase Management Systems), que permi-
tem o acesso aos dados de uma base de dados e que serão alvo de maior
atenção no capítulo seguinte.
Refere-se também o aparecimento, na década de 70, dos Sistemas de
Informação de Escritório (OIS – Office Information Systems) e dos Siste-
mas de Apoio à Decisão (DSS – Decision Support Systems). Um Sistema
de Informação de Escritório é um sistema baseado em computadores que
modela as actividades de um escritório, permitindo a automação total ou
parcial das actividades rotineiras. Um Sistema de Apoio à Decisão é um
sistema de informação baseado em computadores que analisa e apresenta
os dados do negócio de forma a facilitar e apoiar a tomada de decisões.
São muitas vezes talhados à medida do utilizador.
Na década de 80 têm sucesso os Sistemas Periciais (ES – Expert Sys-
tems) e os Sistemas de Informação para Executivos (EIS – Executive
Information Systems). Um sistema pericial simula o comportamento de um
especialista humano com experiência e conhecimento numa determinada
área. Inclui uma base de conhecimento que contém a experiência acumu-
lada e um conjunto de regras que permitem aplicar a base de conheci-
mento a situações específicas. Um exemplo bastante conhecido é um sis-
I.1 OS SISTEMAS DE INFORMAÇÃO E AS ORGANIZAÇÕES 25

tema que joga xadrez. Um sistema de informação para executivos fornece


informação actual e apropriada a gestores de topo, através de um ambien-
te amigável. Fornece acesso a informação quer interna quer externa, que
vai de encontro aos objectivos estratégicos da organização.
Em finais do século XX surgiram os chamados sistemas ERP – Enterprise
Resource Planning. Um ERP consiste em vários módulos independentes
que integram os vários processos de uma organização e de uma base de
dados que guarda todos os dados necessários aos diversos módulos. Sur-
giram também os sistemas designados por CRM, SCM e KMS. CRM –
Customer Relationship Management – é um termo utilizado pelas organi-
zações para referir metodologias e aplicações informáticas, que habitual-
mente utilizam a Internet, e que apoiam a organização na gestão das suas
relações com os clientes. Um SCM – Supply Chain Management – é um
sistema integrado de planeamento da produção e distribuição. Engloba o
planeamento e a gestão das operações da cadeia de fornecimentos. Inclui
também a coordenação e a colaboração com fornecedores, intermediários,
fornecedores de serviços e clientes. Um KMS – Knowledge Management
System – permite gerir conhecimento numa organização. Pode guardar e
gerir informação não estruturada numa grande variedade de formatos
electrónicos. Não é apenas uma solução tecnológica, mas o software pode
auxiliar a captura, categorização, uso eficaz, pesquisa, descoberta ou
comunicação de conhecimento. Nos últimos anos tem vindo a aumentar a
utilização do termo Business Intelligence – BI. Pode-se dizer que o BI pro-
cura a definição de contextos para os dados e, a partir daí, atribuir-lhes
significado, de forma a que possam ser utilizados como ajuda a uma
melhor gestão dos negócios, através da decisão. Neste processo estão
envolvidas uma grande diversidade de tecnologias, aplicações e práticas
de negócio.

1.4.2 Planeamento e desenvolvimento de Sistemas de


Informação

“Entende-se por Planeamento de Sistemas de Informação a actividade de


identificação de políticas, definição de objectivos e construção de planos e
orçamentos em que sejam contemplados os objectivos de gestão da orga-
nização e do Sistema de Informação.” [Carvalho e Amaral, 1993]. O Pla-
neamento de Sistemas de Informação deve ser conjugado com o desen-
volvimento de Sistemas de Informação. “Por desenvolvimento de Sistemas
26 BASES DE DADOS COM MICROSOFT ACCESS 2007

de Informação deverá entender-se um processo de mudança que visa


melhorar o desempenho de um (sub-)sistema de Informação.” [Carvalho e
Amaral, 1993].
O Desenvolvimento de um Sistema de Informação pode ser dividido em
várias fases. Podemos considerar como fases típicas as apresentadas na
figura I.1.5. As fases não são obrigatoriamente sequenciais, existindo a
possibilidade de retroceder às fases anteriores sempre que necessário.

Estudo preliminar

Identificação de
requisitos

Análise detalhada

Desenho

Codificação

Testes e implantação

Manutenção

Figura I.1.5 Fases de desenvolvimento de um Sistema de Informação

• Estudo Preliminar
Nesta primeira fase definem-se os objectivos (quais são os proble-
mas, o que irá melhorar) e verifica-se a viabilidade quer técnica,
quer operacional, quer económica.

• Identificação de requisitos
Nesta fase, indicam-se todos os requisitos necessários ao Sistema
I.1 OS SISTEMAS DE INFORMAÇÃO E AS ORGANIZAÇÕES 27

de Informação, utilizando técnicas de recolha de informação tais


como entrevistas e observação directa. É importante analisar os
diferentes tipos de utilizadores do Sistema de Informação. Estes
são: utilizadores directos que, como a própria designação indica,
utilizam directamente o Sistema de Informação, utilizadores indi-
rectos, que usam mapas produzidos pelos sistemas e utilizadores
administrativos, que controlam as actividades desenvolvidas.

• Análise detalhada
Durante a análise detalhada organizam-se regras e procedimentos,
através dos dados recolhidos, em modelos coerentes para o sis-
tema em causa. Na parte I deste livro iremos estudar alguns mode-
los utilizados na análise de Sistemas de Bases de Dados.

• Desenho
Durante a fase de desenho, o modelo lógico, obtido na fase ante-
rior, é complementado com o desenho dos processos, incluindo to-
das as especificações técnicas necessárias.
• Codificação
Este fase consiste na construção da aplicação através de lingua-
gens de programação (por exemplo, Visual Basic, C, ...) ou de Sis-
temas de Gestão de Bases de Dados (por exemplo, Access, Ora-
cle, ...).

• Testes e Implantação
Através de testes e antes de introduzir o novo sistema, deve-se
garantir que o sistema satisfaz os objectivos, funcionalidades e
requisitos especificados. É necessário formar os diferentes utiliza-
dores na utilização do sistema.
• Manutenção
Nesta última fase estabelecem-se os tipos de manutenção. Esta
pode ser correctiva, respondendo a erros do sistema, perfectiva,
melhorando o sistema e adaptativa, havendo a necessidade de
alterar a funcionalidade do sistema, devido a alterações do ambien-
te de negócio.
Existem vários métodos, técnicas e ferramentas disponíveis que apoiam no
desenvolvimento de sistemas de informação. No entanto, citando Whitten e
Bentley [Whitten e Bentley, 1998], “o desenvolvimento não é uma activi-
28 BASES DE DADOS COM MICROSOFT ACCESS 2007

dade mecânica. Não existem segredos mágicos para o sucesso, não exis-
tem ferramentas, técnicas ou métodos perfeitos”.

1.4.3 A introdução dos Sistemas de Informação nas


organizações

O processo de adopção de novas tecnologias/sistemas de informação


numa organização pode ser sintetizado através do modelo dos seis está-
dios de crescimento de Nolan (1979), apresentados na figura I.1.6. Este é
um dos modelos mais conhecidos de evolução dos Sistemas e Tecnolo-
gias de Informação (SI/TI).

I Iniciação
II Expansão
Crescimento

III Controlo
IV Integração
V Administração de dados
VI Maturidade

I II III IV V VI

Era do Computador Ponto de Era da Informação


Mudança

Figura I.1.6 Estádios de crescimento de Nolan

Numa primeira fase é feita a instalação do computador na empresa e intro-


duzioa a automatização (Iniciação). A instalação é seguida de uma rápida
proliferação e crescimento dos sistemas informáticos (Expansão). Este
crescimento rápido leva a um grande aumento dos custos na empresa pró-
vocando a necessidade de intervenção por parte da gestão (Controlo).
Numa próxima fase é sentida a necessidade de, além de controlar o cresci-
mento, integrar as diversas aplicações em sistemas coerentes (Integração)
I.1 OS SISTEMAS DE INFORMAÇÃO E AS ORGANIZAÇÕES 29

– passamos para a gestão de informação. Seguidamente é feita a


conclusão do desenvolvimento e implantação de um sistema integrado de
Bases de Dados (Administração de Dados) e por fim uma fase em que o
sistema está integrado no sistema produtivo da empresa (Maturidade).
30 BASES DE DADOS COM MICROSOFT ACCESS 2007

TERMOS CHAVE

Sistema SIS
Informação EIS
Sistema de Informação ERP
TPS CRM
MIS SCM
DBMS KMS
OIS Planeamento de Sistemas de Informação
DSS Desenvolvimento de Sistemas de Informação
ES Estádios de crescimento de Nolan
I.1 OS SISTEMAS DE INFORMAÇÃO E AS ORGANIZAÇÕES 31

PARA REVER …

1. Explique sucintamente o que entende por:


a. Sistema
b. Informação
c. Sistema de Informação
d. Planeamento de Sistemas de Informação
e. Desenvolvimento de Sistemas de Informação.

2. Explique o ciclo dados-informação-decisão que pode ser identifi-


cado em qualquer organização.

3. De que duas formas a informação flui numa organização?

4. Identifique os tipos de informação numa organização e apresente


as suas características.

5. Defina Sistema de Informação Organizacional.

6. Sintetize a evolução histórica dos sistemas de informação.

7. Distinga “Planeamento de Sistemas de Informação” de “Desenvolvi-


mento de Sistemas de Informação”.

8. Explique o modelo dos seis estádios de crescimento de Nolan. Qual


a sua importância na gestão dos sistemas de informação de uma
organização?

PARA INVESTIGAR …

1. Depois de explicar o que entende por ERP, procure descrever quais


os módulos que tipicamente o constituem. Apresente exemplos dos
principais ERP’s existentes no mercado e descreva sumariamente
as principais tendências de evolução.

2. Os Sistemas de Informação de Apoio à Decisão têm assumido uma


importância crescente no panorama dos SI/TI nas organizações.
32 BASES DE DADOS COM MICROSOFT ACCESS 2007

Apresente as principais razões de negócio e tecnológicas que con-


tribuíram para tal desenvolvimento e investigue sobre a sua evolu-
ção histórica.

3. O ciclo de vida do desenvolvimento de sistemas de informação (em


inglês, Systems Development Life Cycle – SDLC) é um modelo
conceptual que descreve as etapas envolvidas num projecto de
desenvolvimento de sistemas de informação. Investigue e descreva
as principais metodologias que têm vindo a ser desenvolvidas para
guiar os processos envolvidos (por exemplo, o modelo da cascata).

4. Refere-se em 1.4.3 que o modelo dos seis estádios de Nolan é um


dos mais conhecidos modelos de evolução dos SI/TI numa organi-
zação. Apresente e descreva outros, apresentando as fraquezas e
as forças de cada um deles.
I.2

As Bases de Dados

De uma forma genérica podemos dizer que uma base de dados é um con-
junto de dados relacionados, acessíveis a uma comunidade de utilizado-
res. Desde tempos imemoriais o homem guardou em armários, gavetas
(...) os dados importantes relativos às suas diversas actividades – as pri-
meiras bases de dados.
A partir de meados do século XX verificou-se um grande crescimento das
organizações o que provocou um grande aumento no volume dos dados
nelas utilizados. Ao mesmo tempo verificou-se um grande desenvolvimento
dos computadores, que se tornaram mais acessíveis. Surge assim, de
forma natural, a introdução dos computadores nas organizações com o
objectivo de servir de suporte às bases de dados nelas existentes. Numa
primeira fase surgem os chamados Sistemas de Ficheiros e só posterior-
mente são desenvolvidos os Sistemas de Bases de Dados. Com ambos se
pretende obter acesso rápido aos dados gerando a informação necessária
às diversas actividades. Os dados são guardados em ficheiros e a partir
deles são gerados relatórios com a informação pretendida. Actualmente,
quando nos referimos a bases de dados, queremos referir-nos às bases de
dados em suporte informático.
Embora se possa considerar que os Sistemas de Ficheiros estão desac-
tualizados e que não fará sentido abordá-los, pensamos que só se poderão
compreender as potencialidades de um Sistema de Bases de Dados se
houver a compreensão dos Sistemas de Ficheiros, que os antecederam.
Neste capítulo iremos começar por abordar, em 2.1, as raízes históricas
das bases de dados, nomeadamente os Sistemas de Ficheiros. Em 2.2
veremos as características de um Sistema de Bases de Dados e os seus
intervenientes. Abordaremos ainda alguns aspectos importantes de um
Sistemas de Gestão de Bases de Dados. Os modelos de Bases de Dados
34 BASES DE DADOS COM MICROSOFT ACCESS 2007

serão abordados em 2.3. Por fim, em 2.4, abordaremos outras aplicações


das bases de dados.

2.1 AS RAÍZES HISTÓRICAS: FICHEIROS E SISTEMAS DE


FICHEIROS

Num Sistema de Ficheiros guardam-se diversos registos, de forma perma-


nente3, em vários ficheiros. Existem também diversas aplicações ou
programas que permitem efectuar uma variedade de operações com esses
ficheiros: inserir dados, recuperar dados, alterar dados e apagar dados.
Na figura I.2.1 apresenta-se um exemplo de um Sistema de Ficheiros para
gestão de encomendas.

APLICAÇÕES
FICHEIROS DE DADOS

Aplicação 1
Efectuar encomenda
Clientes

Aplicação 2
Inserir novo produto Encomendas

Aplicação 3
Inserir novo cliente Produtos

Aplicação 4
Imprimir notas de
encomenda

Figura I.2.1 Um Sistema de Ficheiros

3
Por permanente entende-se que, depois de um registo ser colocado numa base de dados,
através de uma operação de inserção de dados, só pode ser eliminado através de uma
operação de eliminação de dados.
I.2 AS BASES DE DADOS 35

Neste exemplo, utilizam-se três ficheiros:

• Um ficheiro Clientes, no qual se armazena informação genérica


sobre os cliente (nome, morada, contactos,…);
• Um ficheiro Produtos, no qual se armazena informação genérica
sobre os diversos produtos existentes (descrição, preço, existên-
cias,…);

• Um ficheiro Encomendas, que contém informação sobre as enco-


mendas realizadas. Esta informação inclui, além da informação
genérica sobre a encomenda (número, data, valor total, …), infor-
mação sobre o cliente que faz a encomenda e sobre os vários pro-
dutos que foram encomendados.

No exemplo, apresentam-se quatro aplicações, nomeadamente:

• Aplicação1: Efectuar encomenda, que permite a realização de


novas encomendas; esta aplicação efectua operações nos três fi-
cheiros existentes;
• Aplicação 2: Inserir novo produto, que permite a inserção de
novos produtos e que realiza operações apenas no ficheiro Produ-
tos;

• Aplicação 3: Inserir novo cliente, que permite a introdução de


novos clientes e que realiza operações apenas no ficheiro Clientes;
• Aplicação 4: Imprimir notas de encomenda, que permite imprimir
notas de encomenda e que realiza operações apenas no ficheiro
Encomendas.

Evidentemente este conjunto de aplicações não é suficiente para que o


sistema funcione, como veremos já de seguida.

2.1.1 Gestão de dados nos Sistemas de Ficheiros

Os ficheiros de um Sistema de Ficheiros possuem uma determinada


estrutura física que tem de ser conhecida para que cada uma das aplica-
ções do sistema possa ser elaborada. Na figura I.2.2 apresentamos um
36 BASES DE DADOS COM MICROSOFT ACCESS 2007

exemplo do ficheiro Clientes, pertencente ao sistema de ficheiros apre-


sentado na figura I.2.1.

CLI-COD CLI-NOME CLI-MORADA CLI-TELEF


campo 1 a n a p o r t o 1 2 3 4 5 6 7 8 9
2 m a r i a g a i a 4 4 4 5 5 5 6 6 6
3 j o s é l i s b o a 7 7 7 8 8 8 9 9 9
4 t i a g o s e t ú b a l 9 9 9 8 8 8 9 9 9
5 p e d r o c o i m b r a 6 6 6 5 5 5 4 4 4
registo
6 j o a q u i m m a i a 3 3 3 2 2 2 1 1 1

Figura I.2.2 Exemplo do ficheiro Clientes

Antes de avançarmos, vamos definir alguma terminologia básica sobre


ficheiros:

• Campo
um caracter ou conjunto de caracteres com um significado especí-
fico, como por exemplo um nome;

• Registo
um conjunto de um ou mais campos relacionados que descrevem
uma pessoa, um lugar ou um objecto (concreto ou abstracto);

• Ficheiro
conjunto de registos relacionados.

Cada ficheiro presente no sistema de gestão de ficheiros precisa, pelo


menos, de cinco aplicações que permitam:
• Criar a estrutura do ficheiro;
• Introduzir dados no ficheiro;

• Eliminar dados do ficheiro;


• Modificar dados contidos no ficheiro;
• Listar o conteúdo do ficheiro.
I.2 AS BASES DE DADOS 37

Cada uma dessas aplicações envolve várias operações, mais ou menos


complexas. Por exemplo, para eliminar o cliente Ana, do ficheiro de clien-
tes do exemplo apresentado, será necessário:

• Abrir o ficheiro de clientes;

• Procurar o registo relativo ao cliente Ana;


• Eliminar o registo encontrado;
• Fechar o ficheiro Clientes.

Se pretendemos inserir novos registos, a situação torna-se ainda mais


complicada, dado que é necessário ter ainda em atenção o tamanho de
cada um dos campos. Suponhamos que, no exemplo considerado, preten-
demos inserir um novo cliente de nome Ana Isabel. Repare-se que a
estrutura física do ficheiro apenas permite a inserção de oito caracteres e o
nome a introduzir precisa de dez. Este aspecto tem de ser tido em conta
na introdução e também na modificação dos dados de um ficheiro.
Podemos, através deste exemplo simples, reconhecer a dificuldade e
morosidade existentes na implementação de um sistema de ficheiros,
ainda mais se pensarmos que todo este trabalho terá de ser multiplicado
pelo número de ficheiros existentes no sistema.
Por outro lado, a sua manutenção também é difícil. Consideremos nova-
mente o exemplo da figura I.2.1. Depois de implementado o sistema, os
gestores da empresa onde ele foi implementado consideram importante
obter relatórios mensais, contendo informações sobre os valores das
encomendas realizadas por cada um dos clientes. Passa a haver a neces-
sidade de, em cada mês, elaborar uma aplicação que possa produzir esse
relatório. Conforme se conseguem satisfazer algumas necessidades sur-
gem imediatamente novas necessidades, o que implica a escrita de novas
aplicações. Muitas vezes torna-se incomportável fazer uma gestão efi-
ciente do sistema, devido ao elevado número de aplicações necessárias à
sua manutenção.
Outro aspecto a ter em conta na gestão dos dados num sistema de fichei-
ros prende-se com a integridade dos dados, isto é, os valores guardados
nos ficheiros devem satisfazer determinadas regras – as restrições de
integridade. No exemplo já apresentado, considerando o ficheiro enco-
38 BASES DE DADOS COM MICROSOFT ACCESS 2007

mendas, “só pode existir uma encomenda se contiver algum produto” ou


“só são aceites encomendas de valor superior a 5 €”, são exemplos de
duas restrições de integridade. Estas restrições são introduzidas no sis-
tema adicionando código (programação) apropriado em várias aplicações,
implicando um grande esforço adicional.
Todas estas considerações têm a ver com sistemas utilizados por um só
utilizador. Imagine-se o esforço necessário para implementar e manter um
sistema no qual exista a possibilidade de vários utilizadores (não simultâ-
neos). Neste caso, seria preciso definir para, cada utilizador, se ele poderia
ou não aceder aos dados, se poderia acedê-los apenas para consulta ou
se poderia alterar os dados, etc.

2.1.2 Dependência dados-aplicações

Como já verificámos, num sistema de ficheiros as aplicações estão direc-


tamente relacionadas com os ficheiros, isto é, quando uma aplicação
acede a um ficheiro, deve “dizer” ao computador não só “a que aceder”
mas também “como acedê-lo”. Diz-se que existe dependência entre os
dados e as aplicações. Assim sendo, qualquer alteração na estrutura dos
ficheiros provocará alterações em todas as aplicações que com elas se re-
lacionam, com todos os inconvenientes daí resultantes.

2.1.3 Redundâncias nos dados

Nos sistemas de ficheiros é difícil evitar que existam dados repetidos des-
necessariamente em diversos ficheiros. Quando isto acontece, diz-se que
existem redundâncias nos dados. No exemplo da figura I.2.1 os dados
relativos a cada cliente no ficheiro clientes surgem repetidos no ficheiro
encomendas. Estas redundâncias conduzem a custos mais elevados ao
gravar e ao aceder aos dados, além de outros aspectos.
Um aspecto importante a considerar é o facto de estas redundâncias pode-
rem gerar inconsistências nos dados, isto é, várias cópias do mesmo dado
não serem coincidentes. Consideremos, no exemplo da figura I.2.1, a
situação de, ao realizar uma encomenda se verificar que a morada do
cliente que fez essa encomenda foi alterada. Como o utilizador está a
efectuar o pedido de encomenda com a aplicação destinada para esse
efeito, inclui a nova morada apenas no ficheiro encomendas. Nesse
I.2 AS BASES DE DADOS 39

momento surge um pedido de encomenda de um outro cliente. Como, para


efectuar a alteração da morada do cliente anterior, é necessário recorrer a
outra aplicação, o utilizador aproveita o facto de estar a utilizar a aplicação
destinada ao pedido de encomendas para efectuar a nova encomenda.
Entretanto esqueceu-se da alteração que deveria ter sido realizada! Desta
forma os dados relativos à morada do referido cliente não são coinciden-
tes, isto é, são inconsistentes.

2.2 SISTEMAS DE BASES DE DADOS

UTILIZADORES

APLICAÇÕES

SISTEMA DE GESTÃO DE BASES


DE DADOS (SGBD)

DADOS

Figura I.2.3 Imagem simplificada de um Sistema de Bases de Dados

Os Sistemas de Bases de Dados surgiram como resposta aos problemas


apresentados pelos sistemas de ficheiros. Um Sistema de Bases de Dados
(SBD) é um sistema baseado em computador(es) que tem como principal
objectivo armazenar dados de modo a permitir aos utilizadores consulta-
rem e actualizarem a informação solicitada. Caracterizam-se por terem um
repositório de dados que é acedido pelos diversos utilizadores através de
40 BASES DE DADOS COM MICROSOFT ACCESS 2007

um sistema – o Sistema de Gestão de Bases de Dados (SGBD)4 (figura


I.2.3). Pela sua importância, o Sistema de Gestão de Bases de Dados será
estudado de forma mais pormenorizada em 2.2.3 a 2.2.6.

2.2.1 Características de um Sistema de Bases de Dados

Várias características distinguem os Sistemas de Bases de Dados dos


Sistemas de Ficheiros. Seguidamente apontamos algumas que conside-
ramos importantes:

• Catálogo do sistema
Uma das características fundamentais dos Sistemas de Bases de
Dados é que contém, não só a base de dados, mas também a defi-
nição completa ou descrição da base de dados – o catálogo do sis-
tema ou dicionário de dados5.
A informação contida no catálogo é chamada de metadados (dados
sobre dados). O catálogo do sistema está acessível ao Sistema de
Gestão de Bases de Dados e aos utilizadores e é automaticamente
criado pelo sistema. A existência do catálogo do sistema permite
que um só SGBD possa ser eficientemente utilizado com diversas
bases de dados.

• Independência Dados-Aplicações
Outra característica importante dos Sistemas de Bases de Dados é
a independência entre os dados e as aplicações: a estrutura dos
ficheiros de dados está gravada no catálogo do SGBD, separada
das aplicações que lhe acedem.

• Abstracção dos dados


O Sistema de Base de Dados deve fornecer ao utilizador uma
representação abstracta dos dados, isto é, o sistema deve escon-
der detalhes sobre a forma como os dados são fisicamente arma-
zenados e mantidos – abstracção dos dados.

4
Existe, por vezes, alguma confusão entre o Sistema de Bases de Dados (SBD) e o Sis-
tema de Gestão de Bases de Dados (SGBD). Isto prende-se, talvez, com o facto de as
empresas de software venderem o SGBD, como sendo o SBD. No entanto, o SBD é mais
abrangente que o SGBD.
5
Alguns autores distinguem catálogo do sistema de dicionário de dados. Por exemplo, em
[Rob e Coronel, 2002] o catálogo do sistema é interpretado como um dicionário de dados
muito detalhado.
I.2 AS BASES DE DADOS 41

• Vistas múltiplas dos dados


Normalmente, uma base de dados tem vários utilizadores. Cada
utilizador necessita de ter acesso a perspectivas diferentes da base
de dados – vistas da base de dados (figura I.2.4). Uma vista pode
ser um subconjunto da base de dados, como por exemplo, a área
de produção, do marketing, etc. Na vista incluem-se também as
permissões relativas ao tipo de acessos que cada utilizador pode
ter: só leitura, escrita ou ambos.

Utilizadores Base de Dados

S
G
B
D

Figura I.2.4 Vistas da Base de Dados

2.2.2 Intervenientes num Sistema de Bases de Dados

Podemos classificar as pessoas intervenientes num Sistema de Bases de


Dados em quatro categorias (que por vezes se sobrepõem):

• Administrador de dados e Administrador da Base de Dados


O Administrador de Dados é o gestor responsável pela administra-
ção dos recursos da base de dados, passando pela planificação,
pelo estabelecimento de políticas e procedimentos.
O Administrador da Base de Dados tem o controlo centralizado dos
dados e dos programas que acedem a esses dados. É o responsá-
vel técnico que assegura que todo o sistema funciona de forma
42 BASES DE DADOS COM MICROSOFT ACCESS 2007

conveniente. Em algumas organizações não existe distinção entre


estes dois papéis.

• Analistas da base de dados


São as pessoas que fazem o desenho da base de dados. São os
responsáveis pela identificação dos dados a serem armazenados
na base de dados e pela definição das estruturas físicas neces-
sárias para armazenar esses dados. Para que a sua função seja
cumprida de forma efectiva, os analistas devem estar envolvidos
com as regras do negócio e com os utilizadores finais.

• Programadores de aplicações
Implementam as funcionalidades pretendidas pelos utilizadores
finais, obtidas a partir de especificações fornecidas pelo analista de
sistemas. Além disso, testam, corrigem erros, documentam e man-
têm os programas escritos. Podem utilizar diversas linguagens de
programação.

• Utilizadores finais
São as pessoas que acedem ao sistema para obter a informação
necessária às suas actividades na organização. Alguns desses uti-
lizadores acedem à base de dados a partir de programas e interfa-
ces já definidos, que pretendem simplificar o mais possível o
acesso. Existem outros utilizadores mais sofisticados, familiarizados
com as facilidades fornecidas pelo SGBD, que podem eles próprios
escrever algumas das suas aplicações.

2.2.3 As funções do Sistema de Gestão de Bases de Dados

O Sistema de Gestão de Bases de Dados (SGBD) é uma aplicação infor-


mática que faz a gestão de toda a base de dados fornecendo, aos seus
utilizadores, acessos controlados. Vamos, de seguida, apresentar algumas
das funções de um SGBD que consideramos mais importantes:

• Gestão do armazenamento dos dados


O SGBD cria as estruturas necessárias ao armazenamento, e utili-
zação dos dados, libertando o utilizador da difícil tarefa de definir e
programar as suas características físicas. É criado o dicionário de
dados que facilita este processo.
I.2 AS BASES DE DADOS 43

• Gestão da Interface
O SGBD formata os dados consultados de modo a que tenham um
aspecto facilmente perceptível pelo utilizador. São disponibilizadas
determinadas linguagens de programação que permitem essa
interface (secção 2.2.5). Os SGBD’s mais recentes apresentam
interfaces amigáveis que facilitam grandemente o acesso à base de
dados por parte de utilizadores não especializados. Fornecem tam-
bém capacidades para comunicar em ambiente de redes de com-
putadores, nomeadamente através da Internet.

• Gestão da Segurança
O SGBD cria um sistema de segurança que protege a base de
dados de acessos não autorizados. São impostas regras que defi-
nem quais os utilizadores que podem ter acesso à base de dados e,
para os utilizadores autorizados, a forma como pode ser feito esse
acesso, isto é, quais os ficheiros que podem ser acedidos e as ope-
rações permitidas (ler, adicionar, apagar ou modificar). Deverão
existir procedimentos que efectuem cópias de segurança e recupe-
ração dos dados em caso de falhas, de modo a assegurar a segu-
rança e a integridade dos dados.

• Manutenção da Integridade dos dados


O SGBD assegura a verificação de restrições de integridade de
modo a que a base de dados contenha sempre dados válidos,
minimizando a redundância nos dados e maximizando a sua con-
sistência. Existem restrições de integridade intrínsecas ao SGBD6 e
outras definidas pelos utilizadores do sistema.
Outro aspecto a considerar é a gestão das transacções7. Uma tran-
sacção é uma série de acções levada a cabo por um utilizador ou
por uma aplicação, como por exemplo, inserir um novo cliente na
base de dados. Se uma transacção é interrompida antes do seu fim
(devido, por exemplo, a uma falha de energia ou um sector danifi-
cado no disco), a base de dados estará num estado de inconsistên-
cia, isto é, algumas alterações foram efectuadas e outras não. O

6
Cada um dos modelos de bases de dados que abordaremos em 2.3 possui restrições de
integridade inerentes ao próprio modelo, incluídas no SGBD.
7
O estudo aprofundado destes assuntos sai fora do âmbito deste livro. Para uma aborda-
gem mais aprofundada poderá consultar, por exemplo, [Elmasri e Navathe, 2004] (Part 5)
ou [Date, 2004] (Part IV).
44 BASES DE DADOS COM MICROSOFT ACCESS 2007

SGBD deverá ser capaz de desfazer o que foi feito até essa altura,
de modo a devolver a base de dados a um estado de consistência.

• Controlo de acessos por vários utilizadores em simultâneo


Em bases de dados multi-utilizador (secção 2.2.6), pode acontecer
que tentem aceder aos mesmos dados vários utilizadores em
simultâneo. O SGBD deve fornecer mecanismos que assegurem
que a base de dados é actualizada correctamente quando isso
acontece – controlo da concorrência8.

2.2.4 Arquitectura do Sistema de Gestão de Bases de Dados e


Independência dos Dados

Utilizadores
Finais

Nível externo Vista Vista Vista


externa 1 externa 2 externa 3

Correspondência entre nível


conceptual e nível externo

Nível conceptual Esquema Conceptual

Correspondência entre nível


conceptual e nível interno

Nível interno Esquema Interno

Base de Dados

Figura I.2.5 A arquitectura ANSI/SPARC

8
IDEM.
I.2 AS BASES DE DADOS 45

Um dos objectivos de um Sistema de Base de Dados é o de fornecer aos


utilizadores uma visão abstracta dos dados, isto é, o sistema esconde, aos
utilizadores, detalhes sobre a forma como os dados são armazenados e
mantidos fisicamente. Para atingir esse objectivo foi apresentada, em
1975, a chamada arquitectura ANSI/SPARC9 na qual são propostos três ní-
veis de abstracção, que podemos observar na figura I.2.510.
Vejamos um pouco mais em pormenor cada um dos três níveis referidos:

• Nível Interno
É o nível mais baixo de abstracção. Existe um esquema interno, o
qual descreve a forma como os dados são fisicamente armazena-
dos. Neste nível as estruturas de baixo nível dos dados são descri-
tas em pormenor.

• Nível conceptual
No nível seguinte existe um esquema conceptual que descreve a
estrutura dos dados para uma comunidade de utilizadores: quais os
dados que estão armazenados e quais as relações existentes entre
esses dados. No esquema conceptual escondem-se os detalhes
das estruturas físicas que estão armazenadas na base de dados.

• Nível externo
O nível mais elevado de abstracção inclui um número de vistas
externas, ou vistas do utilizador, que descrevem apenas uma parte
da base de dados.

Além destes três níveis a arquitectura envolve ainda correspondências en-


tre eles:

• Correspondência entre nível conceptual e nível externo;


• Correspondência entre nível conceptual e nível interno.

9 American National Standards Institute/Standards Planning And Requirement Commitee


10 Uma proposta anterior para uma arquitectura geral de bases de dados surgiu em 1971
pelo DBTG (DataBase Task Group) indicado pela CODASYL, 1971 (Conference On DAta
SYstems and Languages). O grupo reconheceu a necessidade da existência de dois níveis:
um do sistema e outro do utilizador.
46 BASES DE DADOS COM MICROSOFT ACCESS 2007

Esta arquitectura de três níveis pode ser utilizada para explicar o conceito
de independência dos dados, a qual pode ser definida como a capacidade
de alterar o esquema de um determinado nível do sistema de base de
dados sem alterar o esquema do próximo nível [Elmasri e Navathe, 2004].
Podemos definir dois tipos de independência dos dados que são a inde-
pendência lógica e a independência física.

• Independência lógica
é a capacidade de alterar o esquema conceptual sem ter de alterar
os esquemas externos ou as aplicações. Podemos alterar o
esquema conceptual para expandir a base de dados, para alterar
restrições ou para reduzir a base de dados. Neste caso, os esque-
mas externos, relativamente aos dados que se mantêm inalterados,
não devem ser afectados. Num SGBD que suporta independência
lógica, apenas é preciso alterar as definições de vistas e a corres-
pondência entre o nível externo e o nível conceptual [Elmasri e
Navathe, 2004].

• Independência física
é a capacidade de alterar o esquema interno sem alterar o
esquema conceptual (ou o externo) [Elmasri e Navathe, 2004]. As
alterações no esquema interno podem ser feitas por ser necessário
reorganizar fisicamente os ficheiros, para melhorar o desempenho
do sistema. Se a base de dados continuar a ter os mesmos dados,
não deverão haver alterações no esquema conceptual. É mais fácil
conseguir a independência física do que a independência lógica,
porque aquela tem apenas a ver com o isolamento das aplicações e
das estruturas físicas armazenadas.

Apesar de esta arquitectura de três níveis não se ter tornado uma norma11,
pois muitos dos SGBD’s existentes não separam completamente os três
níveis, fornece uma boa base para o entendimento de algumas das funcio-
nalidades de um SGBD.

2.2.5 Linguagens fornecidas pelo SGBD

O SGBD coloca ao dispor de cada utilizador várias linguagens que permi-


11
Do inglês “standard”.
I.2 AS BASES DE DADOS 47

tem a definição dos três esquemas e das respectivas correspondências.


Podem ser considerados vários tipos de linguagens. As mais comuns são:

• uma linguagem de definição de dados – DDL12;


• uma linguagem para manipulação de dados – DML13.

Uma DDL é utilizada para definir um esquema ou para modificar um


esquema já existente. Uma DML é utilizada para efectuar todas as opera-
ções básicas de manipulação de dados, tais como, inserir novos dados,
modificar os dados armazenados ou apagar dados da base de dados.
Estando claramente definidos os três níveis da arquitectura ANSI/SPARC,
alguns autores falam ainda de:
• linguagens de definição do armazenamento – SDL14;
• linguagens de definição de vistas – VDL15.

A SDL é utilizada para especificar o esquema interno. A VDL é utilizada


para especificar as vistas de cada um dos utilizadores.
Nos SGBD’s correntes as linguagens não são consideradas em separado.
Existe uma única linguagem que as inclui. Uma das linguagens mais utili-
zadas nos SGBD’s relacionais é a SQL16, que iremos abordar em 3.5. Mui-
tos SGBD’s apresentam ainda interfaces amigáveis tais como QBE17,
geradores de formulários e geradores de relatórios (na parte II veremos
exemplos para o SGBD Access).
Alguns SGBD’s permitem que as sublinguagens sejam embutidas numa
linguagem de alto nível como, por exemplo, Java, C++ ou VBA18.

12
Data Definition Language
13
Data Manipulation Language
14
Storage Definition Language
15
View Definition Language
16
Structured Query Language
17
Query By Example
18
No caso do Microsoft Access
48 BASES DE DADOS COM MICROSOFT ACCESS 2007

2.2.6 Classificação dos SGBD’s

A classificação de um SGBD pode ser feita atendendo a vários critérios,


nomeadamente:

• o modelo no qual o SGBD se baseia;


• o número de utilizadores;

• o número de locais pelos quais a base de dados está distribuída.

Atendendo ao modelo, os SGBD’s classificam-se em relacionais, em rede,


hierárquicos ou outros. Em 2.3 abordaremos mais em pormenor cada um
destes modelos.
Quanto ao número de utilizadores, podemos classificar os SGBD’s em
SGBD’s mono-utilizador, se suportam apenas um utilizador de cada vez,
ou multi-utilizador, se suportam a utilização simultânea de vários utilizado-
res. Os SGBD’s mono-utilizador estão normalmente ligados à utilização
dos computadores pessoais. Exemplos de SGBD’s multi-utilizador encon-
tram-se em sistemas para reservas de viagens de avião ou sistemas para
gestão de contas correntes em bancos, etc. Um SGBD multi-utilizador
deverá possuir capacidades de controlo da concorrência, isto é, possibilitar
o acesso simultâneo de vários utilizadores mantendo a base de dados num
estado de integridade.
Quanto à distribuição, os SGBD’s podem-se classificar em centralizados,
se os dados estiverem armazenados apenas num local, ou SGBD’s distri-
buídos se a base de dados e as suas aplicações estiverem distribuídas por
diversos locais, ligados através de uma rede. Os SGBD’s distribuídos19
apresentam características internas específicas e uma maior complexidade
que os SGBD’s centralizados. No entanto, isso não deve ser visível para
os utilizadores.

2.3 MODELOS DE BASES DE DADOS

Diz-nos Chiavenato que “para se estudar ou analisar um sistema, utilizam-


-se modelos” e que “modelo é a representação de um sistema”. Ao longo

19 O estudo aprofundado destes assuntos sai fora do âmbito deste livro. Para uma aborda-
gem mais aprofundada poderá consultar [Elmasri e Navathe, 2004] (chapter 25) ou [Rob e
Coronel, 2004] (chapter 21).
I.2 AS BASES DE DADOS 49

dos anos têm vindo a ser delineados vários modelos para representar um
Sistema de Bases de Dados. Um modelo de bases de dados é uma colec-
ção de estruturas lógicas utilizadas para representar a estrutura dos dados
e as relações existentes entre eles na base de dados.
Podemos distinguir entre dois tipos de modelos, os modelos conceptuais
ou de alto nível e os modelos de implementação ou físicos. Os modelos
conceptuais são utilizados para se obter uma descrição lógica do sistema e
preocupam-se com o que está representado na base de dados. Um dos
mais populares é o modelo Entidade-Relacionamento (E-R), que abordare-
mos no capítulo 4. Os modelos de implementação descrevem a forma co-
mo os dados estão representados na base de dados e preocupam-se com
“o como” as estruturas de dados são representadas e implementadas.
Podemos dividir estes modelos em três gerações. Na primeira geração
colocam-se o modelo hierárquico, que abordaremos em 2.3.1, e o modelo
em rede, que será abordado em 2.3.2. Na segunda geração temos o mo-
delo relacional, que será abordado em 2.3.3 e que será estudado mais em
pormenor no capítulo 3. No ponto 2.4 abordaremos os chamados modelos
de 3ª geração.

2.3.1 Modelo Hierárquico

As duas estruturas básicas do modelo hierárquico são os registos e os


relacionamentos pai-filho. Como o próprio nome do modelo indica, existem
vários registos relacionados através de uma estrutura hierárquica do tipo
pai-filhos, com vários níveis. Um registo é uma colecção de valores de
campos que fornece informação sobre uma entidade ou instância de um
relacionamento. Um relacionamento do tipo pai-filho é um relacionamento
de 1:M20, entre dois registos. O primeiro registo é o registo pai e os regis-
tos que com ele estão relacionados são os registos filhos.
O esquema de uma base de dados hierárquica pode ser representado por
uma estrutura como a apresentada na figura I.2.6, que representa uma
parte da base de dados de uma empresa.
Neste diagrama, cada registo é representado por um rectângulo e o rela-
cionamento, por uma linha que liga o registo pai ao registo filho. Ao registo

20
Lê-se um para muitos e significa que, cada registo pai pode estar relacionado com vários
registos filho, mas cada registo filho só está relacionado com um registo pai.
50 BASES DE DADOS COM MICROSOFT ACCESS 2007

que se encontra no nível 0 chama-se raiz, no exemplo apresentado,


Departamento (D). O computador não “vê” a estrutura lógica que consiste
numa árvore. A estrutura deve ser representada através de um caminho. O
acesso a qualquer um dos registos deve ser feito a partir da raiz e cor-
rendo cada um dos nós da árvore da esquerda para a direita e de cima
para baixo. No exemplo considerado, para aceder ao registo projecto (P),
teriam de se percorrer os registos D, E, S, F, R e P.
Existem algumas restrições inerentes ao modelo hierárquico, como por
exemplo:

• apenas o registo raiz pode ocorrer sem estar relacionado com um


registo pai;

• se um registo filho tem dois ou mais registos pai, então o filho deve
ser duplicado para cada um dos pais.

D Departamento
Nível 0
Dnome Dnumero NomeChefe DataInicioChe

E Empregado P Projecto
Nível 1
Nome BI DataNasc Pnome Pnumero PLocal

F Dependente S Supervisor T Trabalhador

Nível 2
nome sexo DataNasc nome BI nome BI Horas

Figura I.2.6 Uma estrutura hierárquica21

As bases de dados hierárquicas apresentam alguns problemas, tais como:

• dificuldades de representação de relacionamentos do tipo M:N22;

21
Adaptado de [Elmasri e Navathe, 2004].
I.2 AS BASES DE DADOS 51

• existem redundâncias nos dados, inerentes ao próprio modelo, pois


quando um registo filho tem mais do que um pai deve ser repetido
para cada um dos pais;

• falta de independência lógica;


• a utilização e a programação nos Sistemas de Bases de Dados hie-
rárquicos é muito exigente, diz-se mesmo que é um sistema de pró-
gramadores para programadores;

• a não existência de padrões, o que dificulta a portabilidade.

Um dos mais difundidos SGBD’s, comercialmente disponível, concebidos


segundo o modelo hierárquico foi desenvolvido pela IBM na década de 60
e ficou conhecido como MIS (Management Information System).

2.3.2 Modelo em Rede

O modelo em rede surgiu tendo por base o modelo hierárquico; assim


sendo, apresenta com ele algumas semelhanças. Neste modelo um rela-
cionamento chama-se set e é-lhe atribuído um nome. O registo pai chama-
-se owner e o registo filho chama-se member. Ao contrário do que acon-
tece no modelo hierárquico, no qual um registo filho só pode ter um pai, um
member pode ter mais do que um owner. O acesso aos dados é feito de
forma semelhante à do modelo hierárquico. O esquema de dados em rede
pode ser representado por uma estrutura como a representada na figura
I.2.7.
Existem algumas restrições que devem ser impostas aos membros de um
set e que devem ser definidas no momento do desenho da base de dados,
dependendo da forma como queremos que eles se comportem. Existem
opções chamadas de inserção (manuais e automáticas) e opções chama-
das de retenção (opcionais, mandatórias ou fixas).
Apesar de apresentar várias vantagens, nomeadamente facilitar a repre-
sentação de relacionamentos de M:N e do acesso aos dados ser mais fle-
xível do que no modelo hierárquico, o modelo em rede apresenta também

22
Lê-se ‘muitos para muitos’. Por exemplo, numa escola do ensino superior, uma disciplina
pode ser frequentada por muitos alunos e um aluno pode frequentar muitas disciplinas. Diz-
-se que existe um relacionamento de muitos para muitos entre disciplina e alunos.
52 BASES DE DADOS COM MICROSOFT ACCESS 2007

algumas desvantagens. Uma das grandes desvantagens tem a ver com o


facto de o sistema ser muito complexo, exigindo um conhecimento pro-
fundo por parte dos programadores, para que a sua utilização seja feita de
forma eficiente, e um grande esforço na sua manutenção, devido ao facto
de não existir verdadeiramente independência dados-aplicações. Além dis-
so, o ambiente é pouco amigável para os utilizadores finais.

Empregado

Nome BI DataNasc Morada Sexo Salário Nome_Dept

Supervisiona Trabalha-para
Gere
É-um-supervisor

Departamento
Supervisor

Nome Número Local DataIniChe


S-BI
E-Trabalha-em
Controla

Trabalha-Em

E-BI P-Número Horas


P-Trabalha-em

Depende-de Projecto

Nome Número Localização

Dependente

E-BI Nome Sexo DataNasc Relação

23
Figura I.2.7 Uma estrutura em rede

Ao contrário daquilo que acontecia no modelo hierárquico, para o qual não


existiam normas definidas, o modelo em rede surgiu a partir das normas
23
Adaptado de [Elmasri e Navathe, 2004].
I.2 AS BASES DE DADOS 53

estabelecidas pelo DBTG, indicado pela CODASYL em 1971. Um dos mais


conhecidos SGBD’s concebidos segundo este modelo é o IDMS (Integra-
ted Database Management System), desenvolvido pela Computer Asso-
ciates Internacional, Inc.

2.3.3 O Modelo Relacional

O modelo relacional de bases de dados, apresentado por Edgar F. Codd


em 1970, num artigo intitulado “A relational Model of Data for Large Shared
Data Banks”, representa uma quebra com os modelos anteriores e uma
verdadeira revolução.
A estrutura básica do modelo relacional é a tabela, também chamada rela-
ção24. Uma base de dados relacional é formada por um conjunto de tabe-
las que se relacionam através da partilha de atributos comuns (figura I.2.8).
Apesar da tabela do modelo parecer um ficheiro, existe uma diferença fun-
damental entre eles: uma tabela fornece total independência quer dos
dados quer funcional, pois é uma estrutura puramente lógica.

Empregado
Cod- Nome- Proj-
Empregado Empregado num
1 José 1
2 Manuel 2
3 Tiago 1 Projecto
4 Pedro 3 Proj- Proj-descr Local
num
1 Colocar Tapete Porto
2 Pintar parede Gaia
3 Colocar portas Maia

Figura I.2.8 Tabelas do Modelo Relacional

24 Em [Codd, 1982] afirma-se que as tabelas estão num nível de abstracção mais baixo do
que as relações, visto que dão a impressão de que a ordem das colunas e das linhas da
tabela é importante, o que não acontece, pois a relação é independente da ordem. Ainda
assim, as tabelas continuam a ser a representação conceptual mais importante das rela-
ções, pois são universalmente compreendidas.
54 BASES DE DADOS COM MICROSOFT ACCESS 2007

As primeiras implementações comerciais de SGBD’s concebidos segundo


este modelo surgiram na década de 1980. Referimos o SQL/OS da IBM ou
o SGBD Oracle. Actualmente, algumas das aplicações mais populares são
o DB2 e o Informix (da IBM), o Oracle e Rdb (da Oracle), o Ingress (da
Computer Associates International, Inc), o SQL Server e o Access (da
Microsoft).
Um dos motivos que levaram ao grande sucesso do modelo relacional é a
facilidade que possui para responder a questões ad-hoc, através de uma
linguagem própria – SQL (Structured Query Language). Abordaremos mais
em pormenor este modelo no próximo capítulo.
Apesar de todas as vantagens apresentadas, o modelo relacional apre-
senta também algumas desvantagens. Uma delas tem a ver com o facto
de o SGBD relacional ser muito exigente quer a nível do hardware, quer a
nível do sistema operativo, devido à sua complexidade. Este aspecto tem
vindo a ser ultrapassado devido à crescente capacidade dos computado-
res. Outro aspecto a considerar é o facto de, devido ao seu ambiente ami-
gável, os SGBD’s relacionais serem utilizados sem ter em linha de conta o
desenho cuidado das estruturas necessárias, gerando muitas vezes pro-
blemas semelhantes aos dos sistemas de ficheiros. Nos capítulos 4 e 5
serão abordadas técnicas que permitem fazer o desenho de uma base de
dados apropriada.

2.3.4 Novos modelos: Modelos Orientados a Objectos e


Extensões ao Modelo Relacional

As bases de dados relacionais têm tido grande aceitação em aplicações


clássicas nas organizações, nomeadamente no processamento de ordens
de encomendas, no controlo de inventários, marcação de reservas e mui-
tas outras. Nos últimos anos, as bases de dados têm aumentado quer em
tamanho quer em complexidade nas suas aplicações, colocando exigên-
cias com as quais é difícil lidar com a utilização de tecnologias relacionais
clássicas. Nestas aplicações, incluem-se os Sistemas de Informação Geo-
gráfica (SIG), aplicações médicas e científicas, os sistemas CAD e CAM,
os sistemas multimédia, entre outras. Em qualquer destes casos, o volume
de informação a tratar é grande e o tipo de objectos a guardar na base de
dados é complexo. Desta forma, surgiram novos modelos de representa-
I.2 AS BASES DE DADOS 55

ção de dados, nomeadamente os modelos orientados a objectos25, que


têm origem nas linguagens de programação orientadas a objectos. Como
resposta surgiram também extensões ao modelo relacional, de modo a
suportarem características dos modelos orientados a objectos.
Um objecto é uma representação conceptual de uma entidade do mundo
real (por exemplo, factura) contendo os atributos que o descrevem (por
exemplo, número, data, valor total…) e o seu comportamento, ou seja, as
acções que lhe estão associadas (por exemplo, criar ou imprimir). Isto sig-
nifica que um objecto contém quer a estrutura dos dados quer o conjunto
de acções que podemos definir – encapsulamento. Estas acções cha-
mam-se métodos. Um atributo pode ser uma referência a outro objecto.
Cada objecto contém um identificador único que é independente dos seus
atributos e invisível para o utilizador. O estado de um objecto é o conjunto
de valores que os atributos do objecto têm num dado momento. Os meto-
dos podem ser utilizados para alterar o estado dos objectos. Os objectos
comunicam entre si através de mensagens. Uma mensagem é um pedido
de um objecto a outro (pode ser o mesmo objecto) solicitando-lhe que exe-
cute um dos seus métodos.
Uma classe é uma colecção de objectos semelhantes que partilham a
estrutura e o comportamento (por exemplo, a classe documentos), permi-
tindo que os atributos e os métodos associados possam ser definidos uma
vez para a classe em vez de separadamente para cada objecto. As classes
estão organizadas através de uma estrutura hierárquica, na qual os objec-
tos de uma classe herdam os atributos e métodos das suas super-classes
– herança – além de possuírem atributos e métodos próprios. A herança
permite que uma classe seja definida como caso especial de uma classe
mais geral. Os casos especiais são conhecidos como sub-classes e os
casos mais gerais são conhecidos como super-classes (por exemplo, fac-
tura e nota de encomenda são sub-classes da super-classe documentos).
Podemos falar de herança simples, sendo que neste caso um objecto pode
ter apenas uma super-classe pai e de herança múltipla, sendo que neste
caso um objecto pode ter duas ou mais super-classes pai.
O polimorfismo é uma característica importante dos sistemas orientados
a objectos. Significa que a mesma mensagem enviada a objectos perten-
centes a classes diferentes, origina a resposta correcta em cada caso, ou

25
Do inglês Object-Oriented.
56 BASES DE DADOS COM MICROSOFT ACCESS 2007

seja, podemos utilizar o mesmo nome para métodos em classes diferentes,


pois o seu comportamento será adequadamente diferente em resposta à
mesma mensagem. O processo de seleccionar o método apropriado
baseado num tipo de objecto chama-se binding. Quando este tem lugar
ao executar o programa, diz-se que existe binding dinâmico.
Um SGBD orientado a objectos resulta da combinação das características
tradicionais de um SGBD (tais como gestão do armazenamento dos dados,
gestão da segurança, manutenção da integridade dos dados) e das
características de sistemas orientados a objectos, tais como, herança,
encapsulamento e polimorfismo.
O “Manifesto dos sistemas de bases de dados orientados a objectos” apre-
sentado por Atkinson, et al em 198926, apresenta treze regras que descre-
vem todas as características desejáveis de um SGBD orientado a objectos.
O manifesto contém dois conjuntos de regras, apresentadas na figura I.2.9.
Já na década de 90 foi formado por vários vendedores de SGBD’s um
grupo de trabalho com o qual se pretendia a definição de normas no que
concerne a este assunto – o Object Database Management Group
(ODMG). Este grupo concluiu o seu trabalho em 2001, apresentando-se as
conclusões sob a forma de um livro: “The object Data Standard ODMG
3.0”. Propõe-se um modelo de dados orientado a objectos que consiste de
três partes:

• um modelo de objectos;
• uma linguagem de definição de objectos (equivalente a uma lingua-
gem de definição de dados de um SGBD convencional);

• uma linguagem para questões (queries), em ambientes orientados


a objectos, com sintaxe semelhante à do SQL.

Actualmente, o grupo está a trabalhar no desenvolvimento daquilo a


que chamam 4ª geração de padrões para bases de dados orientadas a
objectos.

26
Este manifesto foi escrito em 1989 por Malcolm Atkison, François Bancilhon, David
st
DeWitt, Klaus Dittrick, David Maier e Stanley Zdonik na 1 International Conference in De-
ductive and Object-Oriented Database em Kioto, Japão.
(http://www.cs.cmu.edu/People/clamen/OODBMS/Manifesto/htManifesto/Manifesto.html)
I.2 AS BASES DE DADOS 57

Deve ser um sistema orientado a Deve ser um SGBD


objectos

1. O sistema deve suportar objectos 9. Os dados devem ser permanentes


complexos

2. O sistema deve suportar a identi- 10. O SGBD deve ser capaz de lidar com
dade de um objecto bases de dados muito grandes

3. O sistema deve suportar 11. O SGBD deve suportar utilizadores


encapsulamento concorrentes

4. Devem ser suportados tipos ou 12. O SGBD deve ser capaz de recuperar
classes de falhas de hardware e software

5. O sistema deve suportar herança na 13. As questões a colocar sobre os dados


estrutura hierárquica de classes devem poder ser efectuadas de forma
simples

6. O sistema deve suportar binding


dinâmico

7. A linguagem de manipulação de
dados deve ser completa

8. O conjunto de tipos de dados deve


ser extensível

Figura I.2.9 Regras do “Manifesto dos Sistemas de Bases de Dados Orientados a


Objectos”

Como exemplos, disponíveis comercialmente, de sistemas de bases de


dados orientados a objectos apresentamos os seguintes: GEMSTONE/
OPAL, ONTOS, Objectivity, Versant, ObjectStore, ARDENT e POET. Um
exemplo de um sistema open source é o db4o.
As rápidas mudanças que se têm vindo a verificar no ambiente das bases
de dados forçaram os defensores das bases de dados relacionais a uma
resposta ao desafio colocado pelos ambientes orientados a objectos, atra-
vés da criação de extensões ao modelo relacional. Não existe um modelo
relacional estendido único. Existem sim várias propostas que diferem na
forma como as extensões são feitas. Em comum existem as tabelas do
modelo relacional, a linguagem para questões e a incorporação de alguns
conceitos de modelos orientados a objectos.
58 BASES DE DADOS COM MICROSOFT ACCESS 2007

Alguns exemplos comerciais incluem o DB2 Universal Database, Oracle


Universal Server, Postgre SQL, TITANIUM, GigaBase, entre outros.
Stonebraker’s27 propôs uma visualização do mundo das bases de dados
classificando-as segundo quatro quadrantes, como apresentado na figura
I.2.10.

Relacionais Extensões de Relacional


Capacidade de procura/pesquisa
Suporte multi-utilizador

Sistemas de Ficheiros Orientados a objectos

Complexidade / Extensibilidade

Figura I.2.10 Os quatro quadrantes de Stonebraker

Apesar de esta classificação ser interessante, existem muitas aplicações


de bases de dados que não se revêem facilmente num dos quadrantes.
Além disso, com o trabalho realizado pelo grupo ODMG a distinção entre
extensão ao modelo relacional e modelo orientando a objectos é cada vez
menos clara. Actualmente existem debates entre os proponentes dos dois
modelos. Ambos estão de acordo em que o modelo relacional é insufi-
ciente para certos tipos de aplicações, diferindo, no entanto, na sua opinião
quanto à melhor solução. C. J. Date defende que as chamadas extensões
ao modelo relacional não são mais do que o modelo relacional propria-
mente dito, dado que este, através do conceito de domínio, contém todas

27
Citado em [Connoly e Begg,1998].
I.2 AS BASES DE DADOS 59

as propriedades desejadas. Afirma ele que o problema reside no facto de


estas características não terem sido implementadas pelos fabricantes de
SGBD’s relacionais. A evolução dos sistemas de bases de dados parece
indicar que as extensões ao modelo relacional se tornarão dominantes em
aplicações complexas de negócios, enquanto que os modelos orientados a
objectos ocuparão um nicho de mercado que consistirá de aplicações que
requeiram grandes quantidades de dados com relações complexas e tipos
de dados especializados.

2.4 OUTRAS APLICAÇÕES DAS BASE DE DADOS

No final do século XX surgiram novos desenvolvimentos na área das bases


de dados. As data warehouses, as ferramentas OLAP, as ferramentas de
data mining e a integração das bases de dados com a Web são realidades
cada vez mais presentes nos sistemas de informação das organizações.

2.4.1 Data Warehouses

Uma Data Warehouse28 é uma base de dados que agrupa um grande


volume de dados. Esses dados são optimizados para futuras análises, ser-
vindo de base à tomada de decisões nas organizações. O chamado “pai
das Data Warehouses”, Bill Inmon, define-as como uma colecção de dados
integrados, orientada para determinados assuntos, variável no tempo e
não volátil, que fornece apoio na tomada de decisão.
Os dados dizem-se integrados pois, numa Data Warehouse, consolidam-
-se os dados provenientes de diversas fontes, muitas vezes com formatos
distintos. A integração dos dados implica um esforço bem organizado para
os definir e padronizar, de modo a torná-los consistentes, para que possam
ser apresentados aos utilizadores de forma centralizada.
A colecção de dados diz-se orientada para determinados assuntos, visto
estar organizada de modo a fornecer respostas a questões provenientes
de diversas áreas funcionais de uma companhia (tais como, clientes, pro-
dutos, vendas,...).

28
Numa tradução directa de Data Warehouse, obtemos Armazém de Dados.
60 BASES DE DADOS COM MICROSOFT ACCESS 2007

Na medida em que os dados, na Data Warehouse, representam o fluxo de


dados ao longo de um determinado período (a última semana, o último
mês, o último ano,...) diz-se que são variáveis no tempo. Além disso, a
variabilidade no tempo também está presente na medida em que os dados
são periodicamente actualizados, provocando que todas as agregações
que dependem da variável tempo sejam novamente calculadas.
Visto que os dados, na Data Warehouse, não são actualizados em tempo
real, mas sim regularmente recolhidos a partir dos sistemas operacionais
(OLTP’s29 ou sistemas de processamento de transacções) e visto que os
dados existentes não são nunca removidos sendo os novos dados adicio-
nados continuamente, diz-se que os dados são não voláteis.
Pela breve descrição apresentada, podemos verificar que estas bases de
dados têm características diferentes das bases de dados dos chamados
sistemas de processamento de transacções, que apresentámos ao longo
das secções 2.1 a 2.3. Estas são concebidas de modo a maximizar a
capacidade de processamento de um grande número de transacções que
são previsíveis, repetitivas e utilizadas muitas vezes, enquanto que aque-
las são concebidas de modo a maximizar a capacidade de resposta a um
número relativamente baixo de transacções, que são de natureza imprevi-
sível e requerem respostas a questões ad-hoc, não estruturadas e heurís-
ticas. Naturalmente, sendo de naturezas distintas, apresentam característi-
cas distintas. Na figura I.2.11 apresentamos uma comparação entre as
bases de dados utilizadas nos sistemas OLTP e as Data Warehouses, uti-
lizadas pelos sistemas de apoio à decisão (DSS – Decision Support Sys-
tems).
Dado que a criação das Data Warehouses envolve custos elevados, muito
tempo despendido e um esforço considerável por parte da gestão, muitas
empresas iniciam a sua incursão no mundo das Data Warehouses por um
conjunto de dados mais manejáveis, orientados para pequenos grupos
dentro da organização – as Data Marts30. Podemos definir uma Data Mart
como um subconjunto de uma Data Warehouse que suporta as exigências
de um dado departamento ou de uma função do negócio. Uma Data Mart
pode estar isolada ou pode estar ligada a uma Data Warehouse central.

29
On Line Transaction Processing.
30
Numa tradução directa de Mart, obtemos mercado, centro de comércio, empório comer-
cial.
I.2 AS BASES DE DADOS 61

Bases de dados utilizadas em Data Warehouses


OLTP’s

Mantêm dados actuais Mantêm dados históricos

Guardam dados detalhados Guardam dados detalhados e


grandemente resumidos

Os dados são dinâmicos Os dados são maioritariamente estáticos

Processamentos repetitivos Processamentos ad hoc, não


estruturados e heurísticos

Grande número de transacções Médio a baixo nível de transacções

Padrão de utilizações previsível Padrão de utilizações não previsível

Orientadas para transacções Orientadas para análise

Orientadas para aplicações Orientadas para determinados assuntos

Suportam decisões do dia-a-dia Suportam decisões estratégicas

Servem um grande número de Servem um número relativamente baixo


utilizadores de nível operacional de utilizadores de nível administrativo

Figura I.2.11 Comparação entre bases de dados utilizadas em OLTP’s e Data


31
Warehouses

Os dados armazenados numa Data Warehouse servirão para responder a


questões sobre determinados factos analisados de várias formas – pers-
pectiva multi-dimensional. O star schema é uma técnica de modelação de
dados que gera um modelo facilmente utilizável numa perspectiva de aná-
lise multi-dimensional dos dados, preservando, ainda assim, as estruturas
relacionais.
Até há muito pouco tempo, as ferramentas disponíveis para aceder a gran-
des volumes de dados forneciam apenas uma análise limitada e relativa-
mente simplista desses dados. O nascimento das Data Warehouses tem
sido acompanhado por uma exigência crescente por parte dos seus utiliza-
dores no que concerne a ferramentas de acesso mais poderosas. Como
resposta, têm vindo a ser desenvolvidas ferramentas tais como On-Line

31
Adaptado de [Connoly e Begg, 1998].
62 BASES DE DADOS COM MICROSOFT ACCESS 2007

Analytical Processing (OLAP’s) e Data Mining, que fornecem capacidades


analíticas avançadas.

2.4.2 OLAP’s

OLAP, do inglês On-Line Analytical Processing, são ferramentas que pro-


porcionam ambientes para análise avançada de dados, fazendo a síntese,
análise e consolidação de grandes volumes de dados, armazenados numa
perspectiva multi-dimensional. A perspectiva multi-dimensional dos dados
permite que a análise dos dados do negócio seja feita sob várias perspec-
tivas (dimensões): vendas por cliente, vendas por região, vendas por ven-
dedor, etc. As técnicas de análise de dados numa perspectiva multi-dimen-
sional podem ser ampliadas através das seguintes funções:

• funções de representação de dados tais como gráficos 3-D;


• funções para agregação, consolidação e classificação de dados
que permitem ao analista dos dados do negócio a criação de níveis
de agregação múltiplos, a visualização dos dados sob diferentes
perspectivas e a apresentação dos dados pormenorizados, conti-
dos nos dados consolidados;
• funções de cálculo, tais como variáveis de negócio (margens de
venda, cotas de mercado, etc.), rácios financeiros e contabilísticos
(lucro, retorno, etc.), funções estatísticas, etc.;
• funções de modelação de dados tais como cenários do tipo
Se-Então e programação linear.

As características dos OLAP’s tornam-se muito mais úteis se o acesso a


elas for simples. Assim sendo, é importante a existência de interfaces ami-
gáveis.
Um dos objectivos do processamento de dados é processar os dados con-
tidos em bases de dados com uma complexidade crescente, sem sacrificar
os tempos de resposta. As arquitecturas cliente/servidor permitem dividir o
sistema OLAP em vários componentes que podem ser colocados no mes-
mo computador ou podem ser distribuídos por vários computadores.
As ferramentas OLAP podem ser organizadas segundo duas categorias
principais:
I.2 AS BASES DE DADOS 63

• MOLAP (Multidimensional OLAP)


As ferramentas MOLAP utilizam estruturas de dados apropriadas e
SGBD’s multi-dimensionais para organizar, navegar e analisar os
dados. Os dados são organizados na forma de matrizes multidi-
mensionais. O utilizador final visualiza os dados como um cubo a
três dimensões – o cubo de dados. O número de dimensões pode
crescer até n dimensões – temos o chamado hipercubo.

• ROLAP (Relational OLAP)


As ferramentas ROLAP são a categoria de OLAP’s que se tem
desenvolvido mais rapidamente. As ferramentas ROLAP utilizam
SGBD’s relacionais, através da utilização de camadas de metada-
dos, evitando assim a criação de estruturas de dados multi-dimen-
sionais estáticos.

A tendência actual é que as ferramentas MOLAP e ROLAP convirjam, pro-


duzindo um novo tipo de SGBD’s que utilizem as melhores capacidades de
cada uma das ferramentas.

2.4.3 Data Mining

Só conseguimos perceber o verdadeiro valor de uma Data Warehouse se


formos capazes de extrair características dos dados, relações, dependên-
cias ou tendências (padrões) previamente desconhecidos. As ferramentas
de data mining são uma das melhores formas de o conseguir. As ferra-
mentas de data mining são pró-activas, isto é, em vez de ser o utilizador a
definir o problema e seleccionar os dados e as ferramentas que vão ana-
lisá-los, as ferramentas de data mining pesquisam os dados de forma
automática, à procura de anomalias e relações, identificando problemas
não identificados previamente pelo utilizador final.
Segundo [Fayad et al, 1996], os dois principais objectivos de alto nível do
data mining tendem a ser, na prática, a previsão e a descrição. A previsão
envolve a utilização de algumas variáveis da base de dados para prever
valores desconhecidos ou futuros ou outras variáveis de interesse. A des-
crição concentra-se em encontrar padrões que descrevem os dados de
forma compreensível para as pessoas.
64 BASES DE DADOS COM MICROSOFT ACCESS 2007

O Gartner Group descreve data mining como sendo o processo de desco-


brir novas correlações, padrões e tendências úteis, examinando minucio-
samente grandes volumes de dados guardados em repositórios, utilizando
tecnologias de reconhecimento de padrões, bem como técnicas da mate-
mática e em particular da estatística.
O data mining é também apresentado como uma das fases do processo de
descoberta de conhecimento em bases de dados, processo este que é
composto por seis fases [Larose, 2005]:

• Selecção de dados;
• Limpeza de dados;
• Enriquecimento;
• Transformação de dados ou codificação;
• Data mining;
• Interpretação, avaliação e apresentação dos resultados.

As tecnologias de data mining são recentes pelo que, por vezes, é difícil
identificar metodologias padrão. No entanto, existe já algum trabalho
desenvolvido nesse sentido:

• A metodologia CRISP-DM (http://www.crisp-dm.org);


• A metodologia SEMMA
(http://www.sas.com/technologies/analytics/datamining/miner/semma.html).

A metodologia CRISP-DM (Cross-Industry Standard Process for Data


Mining) foi desenvolvida a partir de 1996 por um consórcio que inicialmente
era formado por três empresas, nomeadamente a Daimler Chrysler, a
SPSS e a NCR. Actualmente, a OHRA integra também o consórcio. Esta
metodologia fornece um processo padrão que ajusta o data mining à
estratégia geral de resolução de problemas de uma unidade de negócio ou
de uma unidade de investigação. De acordo com a CRISP-DM um projecto
de data mining tem um ciclo de vida de seis fases:
• Estudo do negócio

• Estudo dos dados


I.2 AS BASES DE DADOS 65

• Preparação dos dados

• Modelação
• Avaliação
• Implementação

A SEMMA (Sample, Explore, Modify, Model, Assessment) foi desenvolvida


pelo Instituto SAS, Inc. Segundo a SEMMA temos um ciclo de vida de
cinco etapas:

• Amostragem (Sample);
• Exploração (Explore);
• Modificação (Modify);
• Modelação (Model);
• Avaliação (Assessment).

Um exemplo de um resultado obtido por ferramentas de Data Mining pode


ser que 90% dos clientes que compraram uma televisão têm uma apetên-
cia de 88% para comprar um vídeo nas 4 semanas seguintes. Este resul-
tado pode ser utilizado na tomada de decisão relativa a uma campanha de
marketing de vídeos. Exemplos de ferramentas de Data Mining incluem
Clementine da SPSS, Itelligent Miner da SAS , MineSet da Purple Insight, etc.

2.4.4 Integração com a Web

A World Wide Web32 ou de forma abreviada a Web ou WWW, é para mui-


tas pessoas sinónimo de Internet. O pai da Web é Tim Berners-Lee, do
CERN33, que teve a ideia de criar uma teia electrónica de informação sobre
investigação. Cada uma das páginas Web é um documento em hipertexto.
O conceito de Hipertexto foi inventado nos anos 50, por Ted Nelson, e sig-
nifica que uma porção de texto num documento pode remeter para outros
pedaços de texto dentro do mesmo documento ou de outros documentos.
Inicialmente as páginas da Web eram baseadas apenas em texto mas
32
Teia espalhada pelo mundo.
33
O laboratório Europeu de Física das Partículas.
66 BASES DE DADOS COM MICROSOFT ACCESS 2007

actualmente apresentam características de multimédia. Hoje encontramos


na Web informação sobre quase tudo.
Foi desenvolvida uma linguagem chamada HTML – Hyper Text Mark-up
Language – que consiste num conjunto de instruções, inseridas pelo pro-
gramador em texto simples. Os navegadores34 da Internet apresentam as
páginas de forma compreensível ao utilizador final. Existem páginas Web
cujo conteúdo não se altera a não ser que o próprio ficheiro (em HTML)
seja alterado – páginas estáticas. É cada vez mais comum a existência de
páginas Web que são geradas de cada vez que são acedidas – páginas
dinâmicas. As bases de dados, pelas suas características eminentemente
dinâmicas, prestam-se a uma integração na Web através da criação de
páginas dinâmicas. Nesta situação, o hipertexto deve ser automaticamente
gerado pelos servidores, através da utilização de plug-ins e outras exten-
sões que são incluídas no lado cliente, ou servidor (com PHP, por exem-
plo). Estas extensões adicionam algumas funcionalidades ao navegador da
Internet. As extensões mais comuns são plug-ins, linguagem Java e Java
Scripts, ActiveX e VBScript, embora existam outras. O Microsoft Access
2007 inclui algumas funcionalidades para a Web, que poderá consultar nas
partes II e III deste livro.
Nos últimos tempos tem-se verificado um grande desenvolvimento de tec-
nologias que permitem a integração de sistemas de gestão de bases de
dados com a Web, através da utilização de arquitecturas adequadas. Um
exemplo são os sistemas de comércio electrónico. Os documentos HTML
podem ser formatados de forma a que as pessoas os possam efectiva-
mente compreender. No entanto, é difícil interpretá-los automaticamente
através da utilização de aplicações informáticas. À medida que as aplica-
ções de comércio electrónico e outras aplicações da Web se vão tornando
cada vez mais automatizadas, é crucial que a troca de documentos entre
computadores e a interpretação dos seus conteúdos seja feita de forma
automática. Neste contexto, surgiu uma nova linguagem de programação,
a linguagem XML. XML (Extensible Markup Language) é uma metalingua-
gem utilizada para representar e manipular elementos de dados. Foi con-
cebida de forma a facilitar a troca de documentos estruturados (tais como
notas de encomenda e facturas), através da Web. Esta linguagem tem
vindo a tornar-se o padrão na troca de dados em aplicações de comércio
electrónico.
34
Do inglês browser.
I.2 AS BASES DE DADOS 67

TERMOS CHAVE

Base de dados Funções de um SGBD


Sistema de Ficheiros Arquitectura ANSI/SPARC
Sistema de Bases de Dados Independência Lógica
Redundâncias nos dados Independência Física
Independência Linguagem de Definição de Dados
Dados-Aplicações
Linguagem de Manipulação de Dados
Sistema de Gestão de Bases de
Modelo Hierárquico
Dados
Modelo em Rede
Catálogo do Sistema
Modelo Relacional
Abstracção dos dados
Modelos Orientados a Objectos
Vistas dos dados
Extensões ao modelo relacional
Administrador de Dados
Data Warehouses
Administrador da Base de
Dados OLAP

Analista da base de dados Data Mining

Programador de Aplicações Integração das Bases de Dados com


a Web
Utilizador Final
68 BASES DE DADOS COM MICROSOFT ACCESS 2007

PARA REVER …

9. Explique sucintamente o que entende por:


a. Base de dados;
b. Sistema de ficheiros;
c. Sistema de base de dados;
d. Sistema de gestão de base de dados;
e. Desenvolvimento de sistemas de informação;
f. Linguagem de definição de dados;
g. Linguagem de manipulação de dados;
h. Linguagem de definição do armazenamento;
i. Linguagem de definição de vistas;
j. Data Warehouses;
k. OLAP;
l. Data Mining;
m. XML.

10. Explique o funcionamento de um Sistema de Ficheiros. Poderá utili-


zar um exemplo.

11. Explane os dois principais problemas na utilização de um Sistema


de Ficheiros.

12. Neste capítulo explica-se o conceito de Sistema de Base de Dados.


a. O que é um Sistema de Base de Dados e quais as suas
principais características?
b. Quais são as vantagens e desvantagens de um SBD?

13. Apresente os possíveis intervenientes num Sistema de Bases de


Dados.

14. Apresente três das principais funções de um Sistema de Gestão de


Bases de Dados.

15. A partir da explicação da arquitectura ANSI/SPARC, explique os


conceitos de independência lógica e independência física.

16. Um Sistema de Gestão de Bases de Dados coloca ao dispor de ca-


da utilizador diversos tipos de linguagens. Apresente e explique ca-
da uma delas.
I.2 AS BASES DE DADOS 69

17. A classificação de um Sistema de Gestão de Bases de Dados pode


ser feita atendendo a diversos critérios. Apresente os diversos crité-
rios e respectivas classificações.

18. Apresente as principais características de cada um dos seguintes


modelos de bases de dados:
a. Modelo hierárquico
b. Modelo em rede
c. Modelo relacional
d. Modelo orientado a objectos
e. Extensões ao modelo relacional

19. Apresente as principais diferenças entre uma base de dados opera-


cional e uma data warehouse.

20. Quais as principais diferenças entre ROLAP e MOLAP.

21. Apresente um exemplo de aplicação de ferramentas de data


mining.

22. Distinga páginas Web estáticas de páginas Web dinâmicas.

PARA INVESTIGAR …

5. Durante este capítulo foi abordada a arquitectura ANSI/SPARC,


para sistemas de bases de dados. Anteriormente a esta arquitec-
tura tinha sido apresentada uma outra arquitectura de apenas dois
níveis, proposta em 1971 pelo DBTG (DataBase Task Group) indi-
cado pela CODASYL, 1971 (Conference On DAta SYstems and
Languages). Apresente as principais características dessa arqui-
tectura.

6. Além dos modelos de bases de dados apresentados neste capítulo,


alguns autores apresentam bases de dados concebidas segundo
outros modelos. Um exemplo são as bases de dados baseadas na
70 BASES DE DADOS COM MICROSOFT ACCESS 2007

lógica, mais concretamente o modelo lógico-dedutivo. Investigue e


apresente uma descrição deste modelo de bases de dados.

7. Uma das áreas emergentes de aplicação das data warehouses, das


ferramentas OLAP e do data mining é a área do Business Intelli-
gence. Caracterize o conceito de Business Intelligence e apresente
alguns exemplos de aplicações.

8. As metodologias CRISP-DM e SEMMA são duas metodologias utili-


zadas em projectos de data mining. Descreva as várias fases da
cada uma dessas metodologias e efectue um estudo comparativo.

9. No final deste capítulo referem-se algumas extensões aplicadas à


meta-linguagem HTML, tais como plug-ins, linguagem Java e Java
Scripts, ActiveX e VBScript. Refere-se também que existem outras.
Descreva as extensões aqui referidas e apresente mais alguns
exemplos.
I.3

O Modelo Relacional de Bases de


Dados

O Modelo Relacional de Bases de Dados é actualmente o modelo mais


popular, devido ao facto de apresentar grande simplicidade e ainda assim
possuir grande capacidade de resposta às necessidades dos utilizadores.
O Modelo Relacional foi apresentado por Edgar F. Codd em 1970 num
artigo publicado na Communications of the ACM, intitulado “A Relational
Model of Data for Large Shared Data Banks” e representou, à época, uma
verdadeira revolução. A sua implantação foi difícil e havia bastante cepti-
cismo em relação ao modelo apresentado, como é referido pelo próprio
Codd, em 1982, no artigo “Relational Database: “A practical Foundation for
Productivity”, no ponto 6, “Septicism about relational systems”.
Pensamos que a afirmação do modelo relacional teve lugar por assentar
numa base teórica forte, que lhe confere mais firmeza. Codd, que possuía
uma forte formação matemática, baseou-se nas teorias matemáticas de
conjuntos e de lógica de predicados para a concepção do modelo relacio-
nal de bases de dados.
Ao longo deste capítulo iremos abordar vários aspectos importantes do
modelo relacional. Em 3.1 veremos alguma terminologia básica sobre o
modelo relacional e em 3.2 abordaremos um aspecto fundamental do
modelo: os atributos chave. Em 3.3 estudaremos as regras de integridade
inerentes ao modelo relacional. Os operadores da Álgebra Relacional
serão apresentados em 3.4. Uma importante linguagem de bases de dados
relacionais – a SQL – será abordada em 3.5. Finalmente, em 3.6, apre-
sentamos as chamadas regras de Codd, que permitiriam saber se um
SGBD é ou não relacional.
72 BASES DE DADOS COM MICROSOFT ACCESS 2007

3.1 TERMINOLOGIA BÁSICA

No modelo relacional os dados são representados como um conjunto de


relações. Uma relação é uma estrutura lógica representada por uma
tabela com linhas e colunas. É importante não confundir esta estrutura
lógica com a estrutura física que contém os dados.
No modelo relacional as relações são utilizadas para guardar informação
sobre os objectos que queremos representar na base de dados. Na figura
I.3.1 é apresentado um exemplo de uma relação que guarda informação
sobre os empregados de uma determinada empresa. Um atributo é uma
coluna de uma relação à qual atribuímos um nome. Um tuplo é uma linha
de uma relação. A ordem pela qual os tuplos aparecem na relação não é
importante, sendo que os tuplos poderão aparecer em qualquer ordem e
continuaremos a ter a mesma relação e o mesmo significado. De forma
idêntica, a ordem dos atributos não é importante, desde que a correspon-
dência seja mantida nos tuplos. O grau de uma relação é o número de
atributos que ela contém. A cardinalidade de uma relação é o número de
tuplos que ela contém. Enquanto que o grau de uma relação é fixo, a não
ser que o significado da relação seja intencionalmente modificado para
incluir novos atributos, a cardinalidade da relação muda frequentemente à
medida que novos tuplos são adicionadas ou removidos.

atributos
EMPREGADO

Cod-Empre Nome-Empre Morada-Empre Cidade Telef-Empre Cod-Proj

1 Ana Rua Nova Porto 123456789 1


Cardinalidade = 6

2 José Rua Moderno Gaia 987654321 2


tuplos

3 Pedro Rua Antiga Matosinhos 456456456 1

4 Tiago Rua Inclinada Ovar 789789789 3

5 João Rua Direita Porto 123123123 2

6 António Rua Torta Gaia 147258369 3

Grau = 6

Figura I.3.1 Exemplo de uma relação


I.3 O MODELO RELACIONAL DE BASES DE DADOS 73

Cada atributo no modelo relacional está definido num domínio. Um domí-


nio é o conjunto de valores permitidos para um ou mais atributos. O con-
ceito de domínio é importante, pois permite que sejam definidos o signifi-
cado e a fonte dos valores para cada um dos atributos, podendo assim
evitar operações semanticamente incorrectas.
Uma base de dados relacional consiste num conjunto de relações apro-
priadamente estruturadas, ou seja, um conjunto de relações normaliza-
das35. As relações interligam-se através da existência de atributos comuns.
Existem terminologias alternativas para o modelo relacional. Na tabela da
figura I.3.2 apresentamos a correspondência entre duas das terminologias
alternativas mais utilizadas. Ao longo da primeira parte deste livro optamos
por utilizar os termos formais.

Termos Formais Alternativa


Relação Tabela
Tuplo Linha
Atributo Coluna

Figura I.3.2 Terminologia Alternativa

Mais formalmente, definimos o esquema de uma relação, cuja notação é


R(A1, A2, ... , An), como sendo um conjunto de atributos:
R = {A1, A2, ... , An}
Cada atributo A1, A2, ... , An tem domínios D1, D2, ... , Dn. Tomando como
exemplo o apresentado na figura I.3.1, temos como esquema da relação
EMPREGADO:

EMPREGADO(cod-empregado, nome-empregado, morada-empregado,


cidade-empregado, telefone-empregado, cod-projecto)

Uma relação (ou instância da relação) r, do esquema R(A1, A2, ... , An),
também representada por r(R), é um conjunto de n-tuplos r = {t1, t2, ... ,
tm}. Cada um dos n-tuplos t é uma lista ordenada de n valores t(v1, v2, ... ,

35
A normalização será discutida no capítulo 5.
74 BASES DE DADOS COM MICROSOFT ACCESS 2007

vn), onde cada valor vi (1 ≤ i ≤ n) é um elemento de Di, ou é o valor espe-


cial nulo. Nulo é um valor especial que significa ausência de um valor,
valor desconhecido ou não aplicável. Não é o mesmo que o valor zero ou
espaço. Retomando o exemplo da figura I.3.1 temos
r(EMPREGADO) = {(1,Ana,Rua Nova,Porto,123456789,1),
(2,José,Rua Moderna, Gaia, 987654321,2),
(3,Pedro,Rua Antiga, Matosinhos, 456456456,1),
(4,Tiago,Rua Inclinada, Ovar, 789789789,3),
(5,João,Rua Direita, Porto, 123123123,2),
(6,António,Rua Torta, Gaia, 147258369,3)}

A definição apresentada pode ser reformulada da seguinte forma: uma


relação r(R) é um subconjunto do produto cartesiano dos domínios que
definem R:

r(R) ⊆ D1 × D2 × ... × Dn

O produto cartesiano dos conjuntos D1, D2, ... ,Dn , representado por D1 ×
D2 × ... × Dn especifica todas as combinações possíveis de valores desses
conjuntos. Formalmente,

D1 × D2 × ... × Dn = {(d1, d2, ... , dn):d1 ∈ D1, d2 ∈ D2, ... , dn∈ Dn}

Uma relação apresenta diversas características que é importante realçar:

• Uma determinada relação tem um nome que é diferente dos nomes


de todas as outras relações, de uma base de dados;

• Cada célula (intersecção de uma linha com uma coluna ou equiva-


lentemente um elemento de um tuplo) contém um valor atómico;

• Cada atributo tem um nome distinto;

• Os valores de um atributo pertencem a um mesmo domínio;


• Não existem tuplos duplicados, isto é, cada tuplo é distinto;
I.3 O MODELO RELACIONAL DE BASES DE DADOS 75

• A ordem dos tuplos numa relação não tem significado, pois uma
relação é definida como um conjunto de tuplos e, como tal, a sua
ordem não tem significado;

• A ordem dos atributos não é importante desde que a correspondên-


cia entre atributos e valores seja mantida.

3.2 ATRIBUTOS CHAVE

Um conceito importante no modelo relacional é o conceito de chave. Uma


chave é constituída por um atributo ou conjunto de atributos. Uma chave
constituída por mais do que um atributo diz-se composta. Existem vários
tipos de chave, que apresentaremos de seguida.

3.2.1 Super-Chave

Como cada tuplo numa relação é distinto, é necessário que possamos


identificá-lo de forma única pelos valores dos seus atributos. Um atributo
ou conjunto de atributos que identificam de forma única um tuplo numa
relação diz-se uma super-chave. No exemplo da figura I.3.1 podemos
indicar como super-chaves, por exemplo, os atributos ou conjuntos de atri-
butos seguintes:

• cod-empregado;
• nome-empregado36;
• cod-empregado + nome-empregado + morada-empregado;

• cod-empregado + nome-empregado + morada-empregado +


cidade-empregado + telefone-empregado + cod-projecto.

3.2.2 Chave Candidata

Uma super-chave pode ter atributos que não são necessários para a iden-
tificação dos tuplos de forma única. Interessa-nos identificar aquelas que
contêm apenas os atributos necessários a essa identificação. Dessa forma
obtemos uma super-chave tal que nenhum subconjunto próprio dessa

36
considerando que não existem duas pessoas com o mesmo nome.
76 BASES DE DADOS COM MICROSOFT ACCESS 2007

super-chave é uma super-chave – temos uma chave candidata. De entre


as super-chaves apresentadas para o exemplo da figura I.3.1, são chaves
candidatas as duas seguintes:

• cod-empregado

• nome-empregado

Para identificar uma chave candidata é necessário conhecer o significado


dos atributos em contexto real de forma a podermos decidir se existem ou
não duplicados.

3.2.3 Chave Primária

De entre as chaves candidatas escolhemos uma para identificar de forma


única cada tuplo da relação. Esta chave chama-se chave primária. Os atri-
butos que formam a chave primária surgem sublinhados no esquema da
relação. Retomando o exemplo da relação EMPREGADO, escolhemos cod-
empregado como chave primária e temos:
EMPREGADO (cod-empregado, nome-empregado, morada-empregado,
cidade-empregado, telefone-empregado, cod-projecto)

3.2.4 Chave Estrangeira

Um atributo ou conjunto de atributos de uma relação que existe também


como a chave primária de outra relação diz-se uma chave estrangeira (ver
figura I.3.3). O atributo Proj-Num é chave primária da relação PROJECTO,
mas também existe na relação EMPREGADO. Dizemos que o atributo Proj-
Num é chave estrangeira na relação EMPREGADO37.

37
No exemplo apresentado, o atributo que é chave estrangeira tem o mesmo nome que a
chave primária correspondente. O Access admite nomes distintos. A chave estrangeira tem
de ser claramente identificada através da definição das chamadas relações. (Ver na parte II
a secção 5.5.1).
I.3 O MODELO RELACIONAL DE BASES DE DADOS 77

EMPREGADO
Cod-Empre Nome-Empre Morada-Empre Cidade Telef-Empre Proj-Num
1 Ana Rua Nova Porto 123456789 1
2 José Rua Moderno Gaia 987654321 2
3 Pedro Rua Antiga Matosinhos 456456456 1
4 Tiago Rua Inclinada Ovar 789789789 3
5 João Rua Direita Porto 123123123 2
6 António Rua Torta Gaia 147258369 3

PROJECTO
Chave Estrangeira
Proj-Num Descr-Proj Local
1 Colocar Tapetes Porto
2 Pintar Parede Gaia
3 Colocar Portas Maia
Chaves Primárias

Figura I.3.3 Exemplo de uma base de dados relacional, simples

3.2.5 Um exemplo

Suponhamos que pretendemos guardar numa base de dados a informação


relativa aos empregados e aos projectos em que eles trabalham. De uma
forma muito simplificada podemos utilizar o esquema seguinte:
EMPREGADO (cod-empre, nome-empre, morada-empre, cidade,
telefone-empre, cod-proj)
PROJECTO (Proj-Num, Descr-Proj, Local)

Na figura I.3.3 apresenta-se uma instância deste esquema.


No exemplo apresentado, supõe-se que cada empregado apenas participa
num projecto. Suponhamos agora que um empregado pode participar em
mais do que um projecto. Nesta situação, há a necessidade de criar uma
78 BASES DE DADOS COM MICROSOFT ACCESS 2007

relação que contenha a informação sobre os empregados que trabalham


em cada projecto38. Podemos utilizar o esquema seguinte, do qual
apresentamos uma instância na figura I.3.4:
EMPREGADO (cod-empre, nome-empre, morada-empre, cidade,telef-empre)
PROJECTO (Proj-Num, Descr-Proj, Local)
EMPREGADOnoPROJECTO(cod-empre, Proj-Num,Nhoras)

EMPREGADO
Cod-Empre Nome-Empre Morada-Empre Cidade Telef-Empre
1 Ana Rua Nova Porto 123456789
2 José Rua Moderno Gaia 987654321
3 Pedro Rua Antiga Matosinhos 456456456
4 Tiago Rua Inclinada Ovar 789789789
5 João Rua Direita Porto 123123123
6 António Rua Torta Gaia 147258369

PROJECTO EMPREGADOnoPROJECTO
Proj-Num Descr-Proj Local Cod-Empre Proj-Num Nhoras
1 Colocar Tapetes Porto 1 1 10
2 Pintar Parede Gaia 2 2 20
3 1 15
3 Colocar Portas Maia
4 3 13
5 2 12
6 3 16
1 2 19
4 1 23

Figura I.3.4 Exemplo de uma base de dados relacional

Verifique que a chave primária da relação EMPREGADOnoPROJECTO, com-


posta pelos atributos Cod-Empre e Proj-Num, permite identificar de forma
única cada tuplo da tabela.

38
Nos capítulos 4 e 5 veremos como podemos obter as tabelas adequadas do modelo
relacional, para um determinado problema.
I.3 O MODELO RELACIONAL DE BASES DE DADOS 79

Na relação EMPREGADOnoPROJECTO o atributo Cod-Empr é uma chave


estrangeira, visto que é chave primária na relação EMPREGADO. De forma
análoga, o atributo Proj-Num é uma chave estrangeira na relação EMPREGA
DOnoPROJECTO, visto que é chave primária na relação EMPREGADO.

3.3 REGRAS DE INTEGRIDADE

Em qualquer modelo de bases de dados é importante definir um conjunto


de regras que garantam a adequação dos dados – regras de integridade.
Além das regras de integridade que podem ser definidas pelo utilizador da
base de dados (como, por exemplo, “o salário de um funcionário não pode
ser inferior ao salário mínimo nacional” ou “a idade de um cliente tem de
ser um número positivo”), existem regras de integridade inerentes ao pró-
prio modelo relacional. Existem duas regras de integridade inerentes ao
modelo relacional que são a regra de Integridade de Entidade e a regra
de Integridade Referencial.

3.3.1 Integridade de Entidade

Esta regra diz-nos que, numa relação, nenhum dos valores da chave pri-
mária pode ser nulo, isto é, terá de lhe ser atribuído algum valor. Conside-
rando o exemplo da figura I.3.3, e aplicando esta regra de integridade, a
informação de um empregado só poderá ser inserida na relação se lhe for
atribuído um número como código.

3.3.2 Integridade Referencial

Esta regra diz-nos que, existindo uma chave estrangeira numa relação, ou
o seu valor existe num tuplo da relação onde é chave primária, ou o(s) atri-
buto(s) que a constitui(em) é(são) nulo(s). Tomando o exemplo da figura
I.3.3, e considerando esta regra de integridade, um empregado não pode
estar afecto ao projecto 4 (isto é, não pode ter Cod-Proj=4), dado esse
projecto não existir na relação PROJECTO. No entanto, poderá existir um
empregado sem que lhe tenha sido atribuído qualquer projecto – nesse
caso o valor do atributo Proj-Num será nulo.
80 BASES DE DADOS COM MICROSOFT ACCESS 2007

3.4 OPERADORES DA ÁLGEBRA RELACIONAL

Product
Select Project
a x a x
b y a y
c b x
b y
c x
c y
Union
Intersection Difference

Divide
Join

a x x
a y y a
a1 b1 b1 c1 a1 b1 b1 c1
b x
a2 b2 b2 c2 a2 b2 b2 c2
b y
a3 b3 b3 c3 a3 b3 b3 c3
c x
c y

Figura I.3.5 Visão gráfica dos oito operadores da Álgebra Relacional39

A Álgebra Relacional define um conjunto de operações utilizadas para


definir novas relações sem alterar as relações originais. O estudo da Álge-
bra Relacional é importante pois serve de base à definição de qualquer
DML. A primeira versão da Álgebra Relacional foi definida por Codd no

39
Adaptado de [Date, 2004].
I.3 O MODELO RELACIONAL DE BASES DE DADOS 81

artigo “Relational Completeness of Data Base Sublanguages” em 1972. Os


operadores originais da Álgebra Relacional são oito: SELECT, PROJECT,
PRODUCT, UNION, DIFFERENCE, JOIN, INTERSECT e DIVIDE. Na figura I.3.5
apresenta-se uma visão informal de como funcionam estes operadores.
Iremos de seguida abordar sucintamente cada um deles, utilizando como
exemplo a base de dados da figura I.3.3.

3.4.1 O Operador SELECT

A operação SELECT é utilizada para seleccionar um subconjunto dos tuplos


de uma relação que satisfazem uma determinada condição. Este operador
representa-se por

σcondição(R)
onde σ é o símbolo utilizado para representar o operador SELECT e condi-
ção é uma expressão booleana, especificada sobre os atributos da relação
considerada, R, podendo ser utilizados os operadores lógicos ∧(E) ou
∨(OU). Por exemplo, podemos pretender seleccionar os empregados que
trabalham no projecto 2. Para isso utilizamos o operador SELECT:

σcod-projecto=2(EMPREGADO)

EMPREGADO
Cod-Empre Nome-Empre Morada-Empre Cidade Telef-Empre Proj-Num
2 José Rua Moderno Gaia 987654321 2
5 João Rua Direita Porto 123123123 2

Figura I.3.6 Resultado do Operador SELECT

3.4.2 O operador PROJECT

Se estamos interessados apenas em determinados atributos de uma rela-


ção, utilizamos a operação PROJECT, sendo eliminados, da relação assim
obtida, possíveis tuplos duplicados. Este operador representa-se por

∏lista(R)
82 BASES DE DADOS COM MICROSOFT ACCESS 2007

onde ∏ é o símbolo utilizado para representar o operador PROJECT e lista


é a lista dos atributos que queremos seleccionar na relação R.
Suponhamos que pretendemos seleccionar o nome e o telefone dos
empregados. Para o conseguir utilizamos o operador PROJECT:

∏nome-empregado,telefone-empregado(EMPREGADO)

Obtemos o resultado apresentado na figura:


EMPREGADO

Nome-Empre Telef-Empre
Ana 123456789
José 987654321
Pedro 456456456
Tiago 789789789
João 123123123
António 147258369

Figura I.3.7 Resultado do operador PROJECT

3.4.3 O operador PRODUCT

Os dois operadores anteriores apenas extraem informações de uma rela-


ção. Obviamente, há situações em que interessa combinar informação de
várias relações. O operador PRODUCT define uma relação que é a concate-
nação de todos os tuplos de uma relação R com todos os tuplos de uma
relação S e representa-se por

R×S

Por exemplo, aplicando o operador PRODUCT às relações EMPREGADO e


PROJECTO (EMPREGADO × PROJECTO) obtemos a relação representada na
figura I.3.8.
I.3 O MODELO RELACIONAL DE BASES DE DADOS 83

Cod- Nome- Morada- E.Proj- P.Proj- Descr-Proj Local


Cidade Telef-Empre
Empre Empre Empre Num Num
Colocar
1 Ana Rua Nova Porto 123456789 1 1 Porto
Tapetes
Pintar
1 Ana Rua Nova Porto 123456789 1 2 Gaia
Parede
Colocar
1 Ana Rua Nova Porto 123456789 1 3 Maia
Portas
Colocar
2 José Rua Moderno Gaia 987654321 2 1 Porto
Tapetes
Pintar
2 José Rua Moderno Gaia 987654321 2 2 Gaia
Parede
Colocar
2 José Rua Moderno Gaia 987654321 2 3 Maia
Portas
Colocar
3 Pedro Rua Antiga Matosinhos 456456456 1 1 Porto
Tapetes
Pintar
3 Pedro Rua Antiga Matosinhos 456456456 1 2 Gaia
Parede
Colocar
3 Pedro Rua Antiga Matosinhos 456456456 1 3 Maia
Portas
Colocar
4 Tiago Rua Inclinada Ovar 789789789 3 1 Porto
Tapetes
Pintar
4 Tiago Rua Inclinada Ovar 789789789 3 2 Gaia
Parede
Colocar
4 Tiago Rua Inclinada Ovar 789789789 3 3 Maia
Portas
Colocar
5 João Rua Direita Porto 123123123 2 1 Porto
Tapetes
Pintar
5 João Rua Direita Porto 123123123 2 2 Gaia
Parede
Colocar
5 João Rua Direita Porto 123123123 2 3 Maia
Portas
Colocar
6 António Rua Torta Gaia 147258369 3 1 Porto
Tapetes
Pintar
6 António Rua Torta Gaia 147258369 3 2 Gaia
Parede
Colocar
6 António Rua Torta Gaia 147258369 3 3 Maia
Portas

Figura I.3.8 Resultado do operador PRODUCT40

Podemos combinar os operadores. Suponhamos, por exemplo, que pre-


tendemos obter os nomes e os telefones dos empregados afectos aos

40
Dado que existem dois atributos com o mesmo nome, Proj-Num, um da relação
EMPREGADO e outro da relação PROJECTO, atribuímos os nomes E.Proj-Num e
P.Proj-Num, respectivamente.
84 BASES DE DADOS COM MICROSOFT ACCESS 2007

projectos 1 e 3 bem como o local onde se realizam esses projectos. Para


isso utilizamos os operadores da seguinte forma:

σ (e.proj-num=1 ∨ e.proj-num=3) ∧ e.pro-numj=p.proj-num (∏nome-empre,telef-empre,

e.proj-num(EMPREGADO) × ∏p.proj-num, local (PROJECTO))

Obtemos a relação apresentada na figura:

Nome- E.Proj- P.Proj- Local


Telef-Empre
Empre Num Num
Ana 123456789 1 1 Porto

Pedro 456456456 1 1 Porto

Tiago 789789789 3 3 Maia

António 147258369 3 3 Maia

Figura I.3.9 Resultado do operador PRODUCT

3.4.4 O operador UNION

O resultado da operação UNION, aplicada a duas relações R e S, e repre-


sentada por

R∪S
é uma relação que inclui todos os tuplos pertencentes a R ou a S ou a
ambas as relações. Os possíveis tuplos duplicados, resultantes da relação
assim obtida, são eliminados. As relações devem ser compatíveis para ser
feita a união, isto é, devem ter o mesmo número de atributos com os
domínios correspondentes iguais. Podemos utilizar o operador PROJECT
para obter relações compatíveis.
Obtenhamos todas as cidades onde os empregados vivem ou trabalham:

∏cidade(EMPREGADO) ∪ ∏local(PROJECTO)

O resultado obtido encontra-se na figura I.3.10.


I.3 O MODELO RELACIONAL DE BASES DE DADOS 85

R∪S
Porto
Gaia
Matosinhos
Ovar
Maia

Figura I.3.10 Resultado do operador UNION

3.4.5 O Operador DIFFERENCE

O resultado da operação DIFFERENCE, aplicada a duas relações R e S e


representada por
R–S
é uma relação que inclui todos os tuplos que estão em R mas não em S. R
e S devem ser compatíveis.
Obtenhamos todas as cidades onde os empregados vivem, mas onde não
está a ser desenvolvido nenhum dos projectos:

∏cidade(EMPREGADO) - ∏local(PROJECTO)
O resultado obtido encontra-se na figura:

R-S
Matosinhos
Ovar

Figura I.3.11 Resultado do operador DIFFERENCE

3.4.6 O Operador INTERSECT

O resultado da operação INTERSECTION, aplicada a duas relações R e S e


representada por

R∩S
é uma relação que inclui todos os tuplos pertencentes a ambas as rela-
ções. R e S devem ser compatíveis.
86 BASES DE DADOS COM MICROSOFT ACCESS 2007

Como exemplo, obtenhamos as cidades onde vive algum dos empregados


e também onde estão a ser desenvolvidos projectos:

∏cidade(EMPREGADO) ∩ ∏local(PROJECTO)
Obtemos o resultado apresentado na figura:

R∩S
Porto
Gaia

Figura I.3.12 Resultado do operador INTERSECT

3.4.7 O operador JOIN

A operação JOIN permite-nos combinar tuplos relacionados, pertencentes a


duas (ou mais) relações. Esta operação é uma das mais importantes da
Álgebra Relacional. Deriva do operador PRODUCT e é equivalente a aplicar
uma selecção ao produto cartesiano de duas relações. De uma forma geral,
a operação JOIN aplicada a duas relações R e S pode ser definida como:

R <condição> S = σ<condição>(R × S)
Como exemplo, listemos os nomes e o trabalho desenvolvido pelos operá-
rios que trabalham na mesma cidade onde vivem. Conseguí-lo-emos da
seguinte forma:

∏nome-empre,cidade,e.proj-num(EMPREGADO) cidade=local∧ e.proj-num=p.proj-num

∏ p.proj-num,descr-proj,local(PROJECTO)

O resultado é apresentado na figura:


Nome- E.Proj- P.Proj- Descr-Proj Local
Cidade
Empre Num Num
Colocar
Ana Porto 1 1 Porto
Tapetes
Pintar
José Gaia 2 2 Gaia
Parede

Figura I.3.13 Resultado do operador JOIN


I.3 O MODELO RELACIONAL DE BASES DE DADOS 87

As operações JOIN mais comuns envolvem condições com comparações


de igualdade. Neste caso temos uma operação que se chama EQUI-JOIN,
como é o caso do exemplo apresentado. Ao efectuar uma operação deste
tipo temos sempre um ou mais pares de atributos que têm o mesmo valor
para todos os tuplos (no nosso exemplo temos e.proj-num vs p.proj-num e
cidade vs local). Visto que um desses atributos é supérfluo surge uma
nova operação, por forma a que o segundo desses atributos, obtidos por
um EQUIJOIN, não surja na relação obtida. Essa operação chama-se NATU-
RAL JOIN. Quando os atributos que se correspondem têm o mesmo nome,
não necessitamos da condição e esta operação representa-se por
RÂS

3.4.8 O operador DIVIDE

Consideremos uma relação R definida por um conjunto de atributos A, e a


relação S definida por um conjunto de atributos B, tal que B ⊆ A. Seja C =
A – B, isto é, C é o conjunto de atributos de R que não são atributos de S.
O resultado da operação DIVISION é uma relação T, definida apenas em C,
que inclui os tuplos de R, tais que os valores dos restantes atributos de A41
nesse tuplo, são iguais aos valores dos tuplos correspondentes de S. O
operador DIVIDE representa-se por:
R:S

A operação DIVIDE é útil para responder a questões do tipo: Obter os


nomes de todos os empregados que trabalham no projecto 1. Para isso
utilizamos a expressão da álgebra relacional seguinte:

∏nome-empre,e.proj-num(EMPREGADO) : σp.proj-num=1(∏proj-num(PROJECTO))

O resultado é apresentado na figura I.3.14.

41 Estes tuplos são aqueles que são comuns a R e a S.


88 BASES DE DADOS COM MICROSOFT ACCESS 2007

Nome-Empre E.Proj-NUm
Ana 1
José 2
Nome-Empre
Pedro 1 Proj-Num
Ana
Tiago 3 1
Pedro
João 2
António 3

∏nome-empre,cod-proj(EMPREGADO) : σnum-proj=1(∏num-proj(PROJECTO))

Figura I.3.14 Resultado do operador DIVIDE

Considerando A o conjunto dos atributos de R, B o conjunto dos atributos


de S e C = A – B, a operação DIVISION pode ser expressa como uma
sequência dos três operadores ∏, × e – da seguinte forma:

T1 = ∏c(R)

T2 = ∏c((S × T1) - R)
T = T1 – T2
sendo T = R : S

3.5 SQL – UMA LINGUAGEM DE BASES DE DADOS RELACIONAIS


Geralmente classifica-se a Álgebra Relacional como uma linguagem de
alto nível. No entanto, existem muito poucos SGBD’s baseados directa-
mente na Álgebra Relacional. A maioria dos SGBD’s comerciais fornece
uma linguagem declarativa de alto nível. A mais conhecida é a SQL, do
inglês Structured Query Language. A linguagem SQL é a linguagem
padrão do modelo relacional. Em 1974, D. Chamberlin definiu uma lingua-
gem chamada Structured English Query Language ou SEQUEL, sendo
depois produzida uma versão revista chamada SEQUEL2. Posteriormente,
a IBM produziu um protótipo de um SGBD, chamado SystemR, baseado
na SEQUEL2. O projecto deu origem à SQL. Em 1982 a ANSI iniciou tra-
balhos para a definição de normas para a SQL. As normas iniciais foram
I.3 O MODELO RELACIONAL DE BASES DE DADOS 89

publicadas em 1987 tendo recebido algumas críticas. Em 1992 foram


publicadas as normas revistas que são conhecidas como SQL2 ou SQL-
92. Visto que as normas são limitadas, os produtos comercialmente dispo-
níveis apresentam melhorias que os tornam distintos, dificultando a porta-
bilidade de aplicações baseadas na SQL. A partir de 1992 o comité ANSI
H2 iniciou o desenvolvimento de extensões ao padrão SQL/92 – o SQL:99.
A maior mudança é que o novo padrão já não está ligado ao modelo rela-
cional de 1970, suportando características de modelos orientados a
objectos, tais como, herança e polimorfismo. Permite também a existência
de tipos e de rotinas definidas pelo utilizador e de grandes objectos:
BLOB’s (Binary Large Objects) e CLOB’s (Character Large Objects). Outra
grande mudança é que a SQL:1999 consiste de partes individuais, que
formam o seu núcleo, e vários pacotes independentes de entre os seguin-
tes: Enhanced Datetime Facilities, Enhanced Integrity Management,
PSM42, CLI43, Basic Object Support, Enhanced Object Support, Active Da-
tabase, SQL/MM44 e OLAP. Em 2003 foi apresentada a revisão SQL:2003,
que introduz capacidades relacionadas com a linguagem XML. No sítio da
ANSI (http://www.ansi.org) pode-se aceder (e comprar) as últimas actuali-
zações feitas em 2006 e 2007.
Seguidamente iremos fazer uma apresentação resumida de alguns dos
comandos45 da SQL, começando pelos comandos de definição de dados
passando depois para os comandos de inserção e actualização de dados e
por fim veremos queries em SQL. As normas da SQL não utilizam os ter-
mos formais, relações, atributos e tuplos. Em vez disso utilizam-se os ter-
mos tabelas, colunas e linhas.

3.5.1 Definição de dados

A SQL disponibiliza um conjunto de comandos para criar, alterar e apagar


tabelas e outras estruturas. Os comandos são CREATE, ALTER e DROP,
respectivamente.

42
Persistent Stored Models
43
Call Lever Interface
44
Multi Media
45
Os comandos referidos são geralmente mais complexos do que aqui apresentamos e
variam de implementação para implementação. Deverá sempre ser feita a consulta do
manual de referência do sistema com que se está a trabalhar. Na parte II deste livro, na
secção 3.12, encontram-se exemplos para o Access.
90 BASES DE DADOS COM MICROSOFT ACCESS 2007

CREATE
Para definir a estrutura da base de dados que irá conter as tabelas utiliza-
mos o comando
CREATE DATABASE <nome-base-dados>
Depois de definida a estrutura da base de dados estamos prontos para
definir a estrutura das tabelas na base de dados. A sintaxe básica do co-
mando é46:
CREATE TABLE <nome-tabela>(
<atributo1> características,
<atributo2> características,
..............................
<atributoN> características,
[PRIMARY KEY (<nomes dos atributos>)]
[FOREING KEY (<nomes dos atributos>)
REFERENCES <nome-tabela> (<nome atributos>)]);

Na tabela da figura I.3.15 apresentamos os tipos de dados definidos nas


normas, para a linguagem SQL.
Tipos de dados Declarações

Caracter CHAR, VARCHAR


Bit BIT, BIT VARYING
Número exacto NUMERIC, DECIMAL, INTEGER, SMALLINT
Número aproximado FLOAT, REAL, DOUBLE PRECISION
Data/Hora DATE, TIME, TIMESTAMP
Intervalo INTERVAL

Figura I.3.15 Tipos de dados na SQL

46
Os nomes entre <...> serão substituídos pelos nomes respectivos. Aquilo que se encontra
entre parênteses recto é opcional. O símbolo “|” indica que apenas uma das opções é utili-
zada.
I.3 O MODELO RELACIONAL DE BASES DE DADOS 91

Implementemos, em SQL, a estrutura das tabelas EMPREGADO e PRO-


JECTO, da figura I.3.3. Devemos criar a tabela PROJECTO em primeiro lugar
devido à existência de uma chave estrangeira na tabela EMPREGADO.
CREATE TABLE PROJECTO(
PROJ-NUM INTEGER NOT NULL UNIQUE,
DESCR-PROJ CHAR(50) NOT NULL,
LOCAL CHAR(20) NOT NULL,
PRECO-HORA FLOAT,
PRIMARY KEY (PROJ-NUM));

CREATE TABLE EMPREGADO(


COD-EMPRE INTEGER NOT NULL UNIQUE,
NOME-EMPRE CHAR(20) NOT NULL,
MORADA-EMPRE CHAR(50),
CIDADE CHAR(15),
MORADA-EMPRE CHAR(50),
TELEF-EMPRE CHAR(9),
PROJ-NUM INTEGER NOT NULL,
PRIMARY KEY (COD-EMPRE),
FOREING KEY (PROJ-NUM)
REFERENCES PROJECTO (PROJ-NUM)
ON DELETE RESTRICT
ON UPDATE CASCADE;

ALTER
O comando ALTER TABLE permite efectuar alterações na estrutura da
tabela, de três formas possíveis: adicionando uma nova coluna, alterando
as características de uma coluna já existente ou eliminando uma coluna. A
sintaxe básica é a seguinte:
92 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Adicionar:
ALTER TABLE <nome-tabela> ADD <atributo> características
• Alterar:
ALTER TABLE <nome-tabela> MODIFY <atributo> características

• Eliminar:
ALTER TABLE <nome-tabela> DROP <atributo> características

DROP
O comando DROP DATABASE permite remover uma determinada base de
dados, eliminando todas as tabelas e estruturas associadas. A sua sintaxe
básica é a seguinte:
DROP DATABASE <nome-base-dados>

Existe também o comando DROP TABLE que permite eliminar uma deter-
minada tabela. A sua sintaxe é:
DROP TABLE <nome-tabela>

3.5.2 Inserção e actualização de dados

Nesta secção veremos alguns comandos SQL para inserção e actualiza-


ção de dados. São eles INSERT, UPDATE e DELETE.

INSERT
O comando INSERT permite inserir dados numa tabela, uma linha de cada
vez. É utilizado para realizar a primeira entrada de dados numa nova
tabela ou para adicionar dados a uma tabela que já existe. A sintaxe bási-
ca é:
INSERT INTO <nome-tabela> [(<lista atributos>)]
VALUES (<lista-valores>);
I.3 O MODELO RELACIONAL DE BASES DE DADOS 93

Voltemos ao nosso exemplo das tabelas EMPREGADO e PROJECTO. Para


inserir dados na tabela PROJECTO, fornecendo dados para todas as colu-
nas, teremos:
INSERT INTO PROJECTO
VALUES (1,’Colocar Tapetes’,’Porto’,
2,’Pintar Parede’,’Gaia’,
3,’Colocar Portas’,’Maia’);

Para inserir dados na tabela, fornecendo dados apenas para algumas


colunas, teremos:
INSERT INTO EMPREGADO(cod-empre,nome-empre,proj-num)
VALUES (1,’Ana’,1,
2,’José’,2,
3,’Pedro’,1,
4,’Tiago’,3,
5,’João’,2,
6,’António’,3);

UPDATE
O comando UPDATE permite-nos efectuar alterações nos dados já exis-
tentes. A sua sintaxe básica é a seguinte:
UPDATE <nome-tabela>
SET <atributo1> = valor1[,<atributo2> = valor2,...]
[WHERE <condição>]

Suponhamos que pretendemos que o empregado Ana (cod-empr=1) passe


a estar afecto ao projecto 2. Para isso utilizaremos o comando:
UPDATE EMPREGADO
SET proj-num=2
WHERE cod-empre=1;
94 BASES DE DADOS COM MICROSOFT ACCESS 2007

Suponhamos agora que pretendemos efectuar um incremento de 5% no


preço por hora do projecto 1. Para isso efectuamos o seguinte comando:
UPDATE PROJECTO
SET preco-hora=preço-hora*1,05
WHERE proj-num=1;

DELETE
O comando DELETE permite-nos eliminar uma ou mais linhas de dados. A
sua sintaxe básica é a seguinte:
DELETE FROM <nome-tabela>
[WHERE<condição>]

Para exemplo, eliminaremos da tabela EMPREGADO todos os empregados


afectos ao projecto 3:
DELETE FROM EMPREGADO
WHERE proj-num=3;

A utilização do comando
DELETE FROM EMPREGADO
elimina todos os registos (tuplos ou linhas) da tabela EMPREGADO.

3.5.3 Queries com SQL

Podemos traduzir Query como questão ou consulta. Uma query é uma


questão que o utilizador coloca à base de dados, como por exemplo “Quais
os funcionários afectos ao projecto 3?” ou “Quais os funcionários que tra-
balham no mesmo local onde vivem?”. A SQL permite colocar questões à
base de dados apresentando os resultados pretendidos.
I.3 O MODELO RELACIONAL DE BASES DE DADOS 95

Todas as questões são baseadas no comando SELECT cuja sintaxe bási-


ca é:
SELECT [DISTINCT|ALL] <lista-atributos1>|*
FROM <nome-tabela>
[WHERE <condição1>]
[GROUP BY <lista-atributos2>] [HAVING <condição2>]
[ORDER BY <lista-atributos3>]
onde
SELECT especifica os atributos que irão surgir na resposta;
FROM especifica a tabela ou tabelas a serem utilizadas;
WHERE filtra as linhas que satisfazem a condição especifi-
cada;
GROUP BY forma grupos de linhas com os valores dos atributos
indicados iguais, permitindo a utilização de funções
de agregação: MAX (o valor máximo encontrado para
aquele atributo), MIN (o valor mínimo encontrado pa-
ra aquele atributo), COUNT (o número de linhas con-
tendo o atributo especificado), SUM (a soma de to-
dos os valores para um atributo) e AVG (a média arit-
mética de todos os valores de um atributo);
HAVING filtra os grupos que satisfazem a condição2;
ORDER BY especifica quais os atributos que irão funcionar como
chave de ordenação.

Se pretendermos eliminar as repetições existentes nas linhas resultantes


de um comando SELECT, utilizamos a cláusula DISTINCT. A cláusula ALL
mantém as características associadas por omissão ao comando SELECT,
mostrando todo o conjunto de registos. Utilizamos uma das duas cláusulas,
sendo que, por omissão, a cláusula ALL se encontra associada ao coman-
do SELECT.
Podemos utilizar o comando SELECT numa lista de atributos ou utilizar o
símbolo * quando pretendemos especificar todos os atributos.
96 BASES DE DADOS COM MICROSOFT ACCESS 2007

Veremos de seguida alguns exemplos de utilização do comando SELECT.


• Obter todas as linhas e colunas de EMPREGADO:
SELECT *
FROM EMPREGADO;

• Obter o código, o nome do empregado e o projecto a que está afec-


tado, para todos os empregados:
SELECT cod-empr, nome-empre, proj-num
FROM EMPREGADO;

• Obter os preços diários dos projectos, supondo que o dia de traba-


lho é de oito horas:
SELECT proj-num, descr-proj, 8*preco-hora
FROM PROJECTO;

• Obter todos os empregados do projecto 1, do Porto:


SELECT cod-empre, nome-empre, cidade, proj-num
FROM EMPREGADO
WHERE cidade=’Porto’ AND proj-num=1;

• Obter uma lista de todos os projectos, ordenada por preço-hora:


SELECT *
FROM PROJECTO
ORDER BY preco-hora;

• Obter o número de empregados em cada uma das cidades:


SELECT COUNT(cod-empre), cidade
FROM EMPREGADO
GROUP BY cidade;
I.3 O MODELO RELACIONAL DE BASES DE DADOS 97

A linguagem SQL permite-nos combinar resultados utilizando os operado-


res UNION, INTERSECT e EXCEPT (semelhantes aos operadores da
Álgebra Relacional UNION, INTERSECT e DIFFERENCE). Alguns dialectos de
SQL não suportam os operadores INTERSECT e EXCEPT e outros dia-
lectos utilizam MINUS em vez de EXCEPT. Obtenhamos, por exemplo, os
locais onde vivem ou trabalham empregados:
SELECT local
FROM EMPREGADO
UNION
SELECT cidade
FROM PROJECTO;

Outra possibilidade é a combinação de informação contida em diferentes


tabelas num só comando SELECT através do uso da operação JOIN.
Podemos fazê-lo indicando mais do que uma tabela na cláusula FROM,
separadas por uma vírgula, e utilizando a cláusula WHERE para especifi-
car a coluna relacionada para a junção. Por exemplo, se pretendermos
especificar o custo por hora de cada um dos empregados utilizaremos:
SELECT cod-empre, nome-empre, proj-num, preço-hora
FROM EMPREGADO, PROJECTO
WHERE empregado.proj-num = projecto.proj-num;

A SQL permite a utilização de outros tipos de operações JOIN o que pode


ser especificado na cláusula FROM, tais como CROSS JOIN, LEFT JOIN
ou FULL JOIN. Dado que uma abordagem mais aprofundada da linguagem
SQL sai fora do âmbito deste livro, não iremos detalhar mais este
assunto47.

47
Para uma abordagem mais aprofundada sugerimos [Connoly e Begg, 1998] ou [Damas,
1999].
98 BASES DE DADOS COM MICROSOFT ACCESS 2007

3.6 AS REGRAS DE CODD

Com o aparecimento do modelo relacional, muitos dos SGBD’s baseados


nos modelos hierárquico e em rede foram adaptados de modo a apresen-
tar algumas características do modelo relacional. Codd especificou, em
1985, algumas regras que poderiam servir para identificar um SGBD rela-
cional. As regras de Codd provocaram grande controvérsia, tendo Codd
sido acusado de as suas regras se tratarem de um exercício meramente
académico. Ainda assim, consideramos importante apresentar as regras
de Codd.
Regra 0: Regra inicial
Qualquer sistema anunciado como sendo um SGBD relacional, deve ter a
capacidade de gerir bases de dados baseado apenas nas suas capacida-
des relacionais.

Regra 1: Representação da Informação


Qualquer informação, numa base de dados relacional, é explicitamente
representada a nível lógico e de forma única pelos valores nas tabelas;

Regra 2: Acesso garantido


Qualquer valor atómico numa base de dados relacional é logicamente
acessível através da combinação do nome da tabela, do valor da chave
primária e do nome da coluna;

Regra 3: Tratamento de nulos


Os nulos são utilizados de forma sistemática, independentemente do tipo
de dados, para representar falta de dados ou informação não aplicável;

Regra 4: Catálogo dinâmico on-line, baseado no modelo relacional


A descrição da base de dados é representada a um nível lógico da mesma
forma que os dados ordinários, de forma a que os utilizadores possam
aplicar-lhe a mesma linguagem relacional que aplicam aos dados;
I.3 O MODELO RELACIONAL DE BASES DE DADOS 99

Regra 5: Sub-linguagem de dados completa


Um sistema relacional deve suportar várias linguagens sendo que, pelo
menos uma delas, deve permitir efectuar: definição de dados, definição de
vistas, manipulação de dados, restrições de integridade, autorizações e
limites de transacções;

Regra 6: Actualização de vistas


Todas as vistas são teoricamente actualizáveis e também actualizáveis pe-
lo sistema;

Regra 7: Inserção, actualização e eliminação de alto-nível


A capacidade de lidar com uma relação (incluindo vistas) implica não só a
recuperação dos dados mas também a sua inserção, actualização e elimi-
nação;

Regra 8: Independência física dos dados


As aplicações e actividades interactivas continuam logicamente intactas
quando são feitas alterações no armazenamento e acesso físico aos
dados;

Regra 9: Independência lógica dos dados


As aplicações e actividades interactivas continuam logicamente intactas
quando são feitas alterações na estrutura da base de dados, que não impli-
quem perda de informação;

Regra 10: Independência de Integridade


As restrições de integridade específicas de uma determinada base de
dados relacional devem ser definidas numa sublinguagem de dados, não
nas aplicações, devendo também ser armazenadas no catálogo;
100 BASES DE DADOS COM MICROSOFT ACCESS 2007

Regra 11: Independência da distribuição


A sublinguagem de manipulação de dados de um SGBD relacional deve
permitir que as aplicações e actividades interactivas se mantenham quer o
sistema seja fisicamente centralizado ou distribuído;

Regra 12: Regra da não-subversão


Se um sistema relacional tem uma linguagem de baixo nível, esta não
pode ser utilizada para subverter ou contornar as regras de integridade
expressas na linguagem relacional de mais alto nível.
I.3 O MODELO RELACIONAL DE BASES DE DADOS 101

TERMOS CHAVE

Relação Chave candidata


Atributo Chave primária
Tuplo Chave estrangeira
Grau de uma relação Regra de integridade
Cardinalidade de uma relação Integridade de entidade
Domínio Integridade referencial
Base de dados relacional Operadores da Álgebra Relacional
Esquema de uma relação SQL
Super-chave Regras de Codd
102 BASES DE DADOS COM MICROSOFT ACCESS 2007

PARA REVER …

23. Explique sucintamente o que entende por:


a. Relação
b. Atributo
c. Tuplo
d. Grau de uma relação
e. Cardinalidade de uma relação
f. Domínio
g. Base de dados relacional
h. Esquema de uma relação
i. Super-chave
j. Chave candidata
k. Chave primária
l. Chave estrangeira
m. Regra de integridade
n. Integridade de entidade
o. Integridade referencial

24. Refira e explique sucintamente os oito operadores originais da Ál-


gebra Relacional.

25. Para cada uma das tabelas seguintes identifique, a partir dos dados
fornecidos, as super-chaves, as chaves candidatas e a chave pri-
mária:
a.
I.3 O MODELO RELACIONAL DE BASES DE DADOS 103

b.

c.

d.
104 BASES DE DADOS COM MICROSOFT ACCESS 2007

26. Para cada um dos exemplos de bases de dados relacionais apre-


sentados, identifique as chaves primárias e as chaves estrangeiras.
a.
CURSO

FORMADOR

CURSO

FORMANDO
I.3 O MODELO RELACIONAL DE BASES DE DADOS 105

b.
ACTIVIDADES DEPARTAMENTOS

PROJECTOS

EMPREGADOS

c.
BANDA
106 BASES DE DADOS COM MICROSOFT ACCESS 2007

CATEGORIA

ALBUM

PISTA

27. São duas as regras de integridade inerentes ao modelo relacional:


integridade de entidade e integridade referencial. Alguns SGBD’s,
por exemplo o Access, não obrigam à satisfação destas regras. Fi-
ca ao critério do utilizador a sua definição (Parte II, secção 5.5.1).
I.3 O MODELO RELACIONAL DE BASES DE DADOS 107

Explique, para cada uma das regras, quais os problemas resultan-


tes do facto de não as definir.

28. Para cada uma das questões seguintes indique as afirmações ver-
dadeiras.
a. No modelo relacional:
i. Os atributos da chave primária não podem pertencer
a outra chave primária;
ii. Uma relação pode ter dois tuplos iguais;
iii. Nenhum atributo de uma chave estrangeira pode ser
NULL;
iv. Nenhuma das opções anteriores.

b. O modelo físico da base se dados:


i. É o conjunto das estruturas de dados criadas pelo
sistema de gestão de bases de dados para gerir a
informação nos discos;
ii. Corresponde à estrutura da informação tal como ela
é vista pelos utilizadores e pelas aplicações:
iii. É o mesmo, qualquer que seja o sistema de gestão
de bases de dados utilizados;
iv. Nenhuma das anteriores.

c. O princípio da integridade referencial estabelece o seguinte:


i. Não podem existir nulos na chave primária;
ii. Não podem ocorrer nulos numa coluna;
iii. Qualquer valor de uma chave externa tem de existir
na tabela referenciada;
iv. Nenhuma das anteriores.

d. Uma entidade:
i. É a representação abstracta de uma classe de objec-
tos do mundo real;
ii. Só pode ser utilizada para representar classes de
objectos que tenham existência material;
108 BASES DE DADOS COM MICROSOFT ACCESS 2007

iii. Pode possuir um conjunto infinito de atributos;


iv. Nenhuma das anteriores.

29. Considere a base de dados relacional do exercício 26.c). Especifi-


que as expressões da Álgebra Relacional que lhe permitem respon-
der às questões seguintes, apresentando, em cada caso, a relação
resultante.
a. Liste ordenadamente pelo nome, a informação referente a
cada álbum. Inclua o nome da banda e a categoria musical.
b. Quais os álbuns existentes de determinada categoria de
música. Deverá incluir o título do álbum, o nome da banda,
a editora, a data de lançamento.
c. Qual a informação referente a cada banda que foi criada na
década de 80. Contemple na listagem a informação dos
seus Álbuns.

30. Considere a base de dados relacional do exercício 4. b).


a. Escreva o código SQL que permite criar a estrutura.
b. Escreva o código SQL que lhe permite introduzir os dados
apresentados no exemplo.
c. Escreva o código SQL que permite responder às seguintes
questões:
i. Empregados do Departamento de Desenvolvimento
(‘DV’) com Salário Base inferior a 1500, ordenados
ascendentemente por Data de Admissão;
ii. Lista dos projectos que incluam funcionários do sexo
feminino.
iii. Projectos e Departamentos envolvidos nas suas Ac-
tividades (mostrar apenas Designações) com indica-
ção do Total de Horas Extraordinárias, por ordem
descendente do No. de Horas;
iv. Número total de horas extraordinárias dedicadas por
cada departamento aos diversos projectos;
v. Valor das horas extra pagas em cada projecto, consi-
derando que o valor de hora extra deve ser introdu-
zido pelo utilizador;
I.3 O MODELO RELACIONAL DE BASES DE DADOS 109

PARA INVESTIGAR …

10. Pode ser encontrada na Internet a versão integral do artigo de E. F.


Codd “A Relational Modelo of Data for Large Shared Data Banks”,
no qual foi apresentado o modelo relacional. Encontre, leia e ana-
lise o artigo referido.

11. Elabore uma pequena biografia de E. F. Codd que permita conhe-


cer o homem e o cientista responsável pelo modelo relacional de
bases de dados.

12. Além da Álgebra Relacional há uma outra linguagem formal do


modelo relacional. Essa linguagem é o cálculo relacional. Descreva
as principais características dessa linguagem e apresente exem-
plos de aplicação. (Nota: Pode utilizar o mesmo exemplo que foi
utilizado para apresentar a Álgebra Relacional ao longo deste
capítulo.)
I.4

Modelação de Dados

Diz-nos Chiavenato que “para se estudar ou analisar um sistema, utilizam-


-se modelos. Modelo é a representação de um sistema”. O dicionário de
Língua Portuguesa da Porto Editora diz-nos que um modelo é a “imagem
ou desenho que representa o objecto que se pretende reproduzir”. Sendo
uma representação da realidade, um modelo será sempre imperfeito ou
incompleto.
Efectuar o desenho de uma base de dados é, ao mesmo tempo, uma ciên-
cia e uma arte. Felizmente, existem ferramentas poderosas que apoiam no
desenho de bases de dados. Ao longo deste capítulo iremos apresentar
uma dessas ferramentas – o modelo Entidade-Relacionamento (E-R). Ini-
cialmente, em 4.1, iremos debruçar-nos sobre a importância da modelação
de dados. Seguidamente, em 4.2, iremos abordar o modelo E-R e em 4.3
iremos desenvolver um diagrama E-R a partir de um exemplo prático, apli-
cando alguns dos conceitos desenvolvidos em 4.2. Em 4.4 iremos estabe-
lecer a correspondência entre o modelo E-R e o modelo relacional de ba-
ses de dados.

4.1 A IMPORTÂNCIA DA MODELAÇÃO DE DADOS

A modelação de dados é uma técnica que permite fazer a organização e a


documentação de dados de um sistema e é crucial para um bom desem-
penho do sistema. Como vimos, no capítulo 1, os dados são utilizados por
um sistema, transformando-os em informação, sendo esta informação vital
para a empresa. Além disso, os dados são partilhados por diversos secto-
res de uma organização. Como resultado, os dados devem estar organiza-
dos de modo a serem flexíveis e de modo a que se possam adaptar para
responder a necessidades, à partida, imprevisíveis – obter dados com
112 BASES DE DADOS COM MICROSOFT ACCESS 2007

estas características é o principal objectivo da modelação de dados. Além


deste aspecto, um modelo de dados é importante, pois permite que os
analistas de um sistema cheguem rapidamente a um consenso com os
utilizadores, sobre a terminologia e as regras do negócio.
A utilização de um modelo de dados passa por um processo de abstrac-
ção. A abstracção é um processo de identificação dos aspectos importan-
tes de um sistema ignorando os outros. No desenho de bases de dados
significa que nos devemos concentrar primeiro nas entidades ou objectos e
nas suas características e relações, antes de decidirmos sobre a forma
como eles devem ser implementados. Assim, obtemos um modelo que é
independente do sistema no qual a base de dados vai ser implementada.
Um modelo de dados é uma representação de um sistema assim como
uma planta é uma representação de uma casa. Tal como é pouco provável
que possamos construir uma boa casa sem ter sido desenhada uma boa
planta, também é pouco provável que possamos implementar um bom
sistema de bases de dados sem realizar primeiro um bom modelo de
dados. Um bom modelo de dados deve ser simples, não redundante, flexí-
vel e adaptável a necessidades futuras. Nas próximas secções iremos
estudar o modelo E-R, que é uma ferramenta que permite a obtenção de
bons modelos de dados.
O modelo E-R tornou-se dominante como ferramenta para o desenho de
bases de dados, dado ser simples e ao mesmo tempo poderoso. No
entanto, sendo suficiente para o desenho da maioria dos sistemas de
bases de dados, apresenta algumas limitações quando utilizado no dese-
nho de sistemas mais complexos. Assim sendo têm vindo a ser desenvol-
vidos novos conceitos envolvendo aspectos semânticos, incorporados no
modelo E-R original com sucesso. Têm também sido propostos vários
modelos de dados diferentes. Alguns destes conceitos têm vindo a ser
desenvolvidos em áreas relacionadas tais como a área da representação
de conhecimento, da inteligência artificial, ou a área da modelação de
objectos, da engenharia de software.

4.2 O MODELO ENTIDADE-RELACIONAMENTO (E-R)

O modelo Entidade-Relacionamento (E-R) é um modelo de dados con-


ceptual, com um elevado nível de abstracção, desenvolvido por Peter
I.4 MODELAÇÃO DE DADOS 113

Chen. O modelo foi descrito pela primeira vez por Chen em 1976, num
artigo intitulado “The Entity-Relationship Model – toward a unified view of
data”. O modelo E-R permite que as diferentes perspectivas dos dados
apresentados pelos gestores, pelos utilizadores e pelos analistas se apro-
ximem, formando uma estrutura comum e é um auxiliar precioso na con-
cepção de bases de dados.
Os conceitos fundamentais do modelo E-R incluem entidades, atributos e
relacionamentos. Basicamente, o processo consiste na identificação de
entidades, das suas propriedades e dos relacionamentos entre essas enti-
dades, representados através de um diagrama chamado Diagrama E-R
(DER). Veremos seguidamente alguns desses conceitos de uma forma
mais pormenorizada.

4.2.1 Entidades e Atributos

Uma entidade é um conjunto de pessoas, lugares, objectos, acontecimen-


tos ou conceitos sobre o qual pretendemos guardar dados. Por exemplo,
numa Editora podemos identificar as seguintes entidades:

• autor – o conjunto de todos os autores,


• livro – o conjunto de todos os livros,

• colecção – o conjunto de todas as colecções,


• venda – o conjunto de todas as vendas,
• ...

Autor Livro

Venda Colecção

Figura I.4.1 Exemplos de entidades


114 BASES DE DADOS COM MICROSOFT ACCESS 2007

As entidades são representadas no diagrama E-R por um rectângulo no


qual escrevemos o seu nome. Na figura I.4.1 apresentamos exemplos de
representação das entidades referidas.
Uma instância ou ocorrência de uma entidade é um elemento desse
conjunto. Por exemplo, Software Obrigatório ou Tecnologias são ocorrên-
cias da entidade Colecção.
Um atributo de uma entidade é uma característica específica dessa enti-
dade. Por exemplo, a entidade Autor terá como atributos: código do autor,
nome do autor, data de nascimento, morada, idade, número de contri-
buinte, contacto telefónico.
Cada atributo tem um domínio que é o conjunto dos valores que podem
ser atribuídos a esse atributo. Os atributos podem partilhar domínios. Por
exemplo, a morada de um Autor e a morada de um Revendedor são atri-
butos com o mesmo domínio. Um atributo representa-se, no diagrama E-R,
através de uma elipse contendo o nome do atributo, ligada à entidade cor-
respondente.
Na figura I.4.2 representamos, num diagrama, a entidade Autor e os seus
atributos.
Um atributo pode ser simples ou composto. Um atributo composto pode
ser subdividido, gerando novos atributos. Por exemplo, o atributo morada
pode ser dividido em rua, porta, cidade e código postal. No diagrama
representam-se os novos atributos por uma elipse, ligada ao atributo cor-
respondente. Um atributo simples não pode ser subdividido.
Um atributo pode ter um só valor ou pode apresentar a possibilidade de ter
vários valores. Por exemplo, um autor pode ter mais do que um contacto
telefónico. No diagrama indicamos este facto através de uma elipse com
linha dupla.
Existem atributos cujos valores são derivados a partir dos valores de
outros atributos – atributos derivados. Por exemplo, a idade do Autor é
um atributo derivado, visto que pode ser calculada a partir da data de nas-
cimento do Autor. No diagrama E-R os atributos derivados representam-se
por uma elipse com linha tracejada.
I.4 MODELAÇÃO DE DADOS 115

Figura I.4.2 Representação de uma entidade e seus atributos

Existe a necessidade de identificar de forma única cada ocorrência de uma


entidade. Esta identificação faz-se através da chave primária48. Uma chave
primária é escolhida de entre as chaves candidatas. Uma chave candidata
é um atributo, ou conjunto de atributos, cujo valor permite identificar de
forma única cada ocorrência da entidade. Por exemplo, na entidade Autor,
podemos identificar duas chaves candidatas: código autor e nº contribuinte.
Escolhemos código autor como chave primária e identificamo-la subli-
nhando o nome no diagrama (ver figura I.4.2). Uma chave candidata que
consiste em um ou mais atributos, diz-se uma chave composta.

4.2.2 Relacionamentos

Um relacionamento é uma associação útil entre duas entidades. A cada


relacionamento é atribuído um nome que descreve a sua função. Por
exemplo, considerando as entidades apresentadas anteriormente, pode-
mos identificar os seguintes relacionamentos:

• Autor escreve Livro,


• Livro pertence a Colecção.

48
Ou atributo(s) identificador(es).
116 BASES DE DADOS COM MICROSOFT ACCESS 2007

No diagrama E-R, um relacionamento representa-se por um losango ligado


com as entidades associadas (figura I.4.3).

Autor escreve Livro

Figura I.4.3 Representação de um relacionamento

Um relacionamento é um conjunto de ligações entre duas (ou mais) ocor-


rências de uma entidade. Cada uma dessas ligações chama-se uma ocor-
rência do relacionamento.

Participantes e grau
As entidades envolvidas num determinado relacionamento chamam-se
participantes nesse relacionamento.
Ao número de participantes num relacionamento chama-se grau do rela-
cionamento. A um relacionamento de grau dois chama-se relacionamento
binário. Um exemplo é o relacionamento escreve apresentado na figura
I.4.3.
Um relacionamento de grau três chama-se relacionamento ternário. Con-
sideremos o exemplo de uma empresa têxtil que satisfaz encomendas.
Uma encomenda contém vários produtos (seda, poliéster, lã, ...) de várias
categorias (calças, saias, casacos, ...). É necessário conhecer as enco-
mendas de cada categoria de produto e quais as categorias de cada pro-
duto que são produzidas (saias de seda, casacos de lã, calças de poliés-
ter,...). Existem três entidades: encomenda, produto e categoria. Este
relacionamento está representado na figura I.4.4. Podem-se definir relacio-
namentos de grau superior a três, sendo no entanto uma situação pouco
frequente.
I.4 MODELAÇÃO DE DADOS 117

Produto contém Categoria

Encomenda

Figura I.4.4 Um relacionamento ternário – Produto, Categoria, Encomenda

Consideremos ainda o exemplo de uma pizzaria na qual existem estafetas


que fazem a entrega de encomendas numa determinada mota. É impor-
tante conhecer em que mota o estafeta efectuou determinada encomenda.
Identificamos três entidades – estafeta, mota e encomenda – e identifica-
mos também um relacionamento ternário: um estafeta entrega uma enco-
menda numa determinada mota.

estafeta entrega mota

Encomenda

Figura I.4.5 Um relacionamento ternário – estafeta, mota, encomenda

Por vezes uma entidade participa mais do que uma vez num relaciona-
mento com papéis diferentes. Neste caso o relacionamento diz-se recur-
sivo ou unário. Consideremos uma empresa na qual um funcionário faz a
supervisão de outros funcionários. Estamos perante um relacionamento
118 BASES DE DADOS COM MICROSOFT ACCESS 2007

recursivo da entidade funcionário cujo nome é supervisionar e que repre-


sentamos na figura I.4.6.

Supervisiona

Empregado

Figura I.4.6 Um relacionamento Recursivo

Podem existir situações em que exista mais do que um relacionamento


entre entidades. Consideremos o exemplo de uma empresa que comercia-
liza vários produtos através de vendedores. Os clientes são angariados
pelos vendedores, ficando afectos a esse vendedor até que ele deixe a
empresa ou até que a direcção deseje substituí-lo. Os vendedores visitam
regularmente os seus clientes. É importante para a empresa conhecer o
vendedor que angariou cada cliente, bem como as visitas efectuadas.
Nesta situação podemos identificar as entidades vendedor e cliente e dois
relacionamentos entre vendedor e cliente. A um dos relacionamentos cha-
mamos angaria e ao outro chamamos faz visita. Na figura I.4.7 podemos
visualizar a representação destes relacionamentos.

Figura I.4.7 Duas entidades / dois relacionamentos


I.4 MODELAÇÃO DE DADOS 119

Um aspecto que consideramos importante referir é que um relacionamento


ternário não pode ser substituído por três relacionamentos binários,
podendo aliás coexistir, pois representam coisas distintas. Voltemos ao
exemplo, já referido, da empresa têxtil. Além do relacionamento ternário
entre as três entidades de nome contém (encomenda contém produto de
categoria), identificamos também um relacionamento entre produto e cate-
goria de nome subdivide-se que nos permite conhecer quais as categorias
existentes para cada um dos produtos e vice-versa.

encomenda

contém

produto subdivide-se categoria

Figura I.4.8 Relacionamento ternário vs Relacionamento binário

O relacionamento ternário permite-nos conhecer quais os produtos de


cada categoria presentes em cada encomenda. Por exemplo, na enco-
menda 1, existem calças de poliéster e blusas de seda.
Se substituíssemos este relacionamento ternário por três relacionamentos
binários, conheceríamos outros aspectos, nomeadamente:
• através do relacionamento entre a entidade produto e a entidade
encomenda, os produtos presentes em cada encomenda, por
exemplo, na encomenda 1 existem lãs e sedas;

• através do relacionamento entre a entidade categoria e a entidade


encomenda, as categorias presentes em cada encomenda, por
exemplo, na encomenda existem calças e saias;
120 BASES DE DADOS COM MICROSOFT ACCESS 2007

• através do relacionamento entre a entidade produto e a entidade


categoria, as categorias existentes para cada produto, por exemplo,
existem calças de poliéster, saias de seda, poliéster e lã, casacos
de poliéster e lã (mas não quais os encomendados).

Verificamos assim que os três relacionamentos binários não poderão


substituir o relacionamento ternário, pois não fornecem a mesma informa-
ção.

Cardinalidade
A cardinalidade é o número de instâncias de uma entidade associadas
com uma ocorrência das entidades que com ela se relacionam. A cardina-
lidade pode ser de três tipos:
• um para um (1:1)

• um para muitos (1:M)


• muitos para muitos (M:N)

Consideremos uma empresa com vários departamentos, em que cada


departamento é gerido por um dos seus empregados, sendo que um
empregado não pode gerir mais do que um departamento e cada departa-
mento só pode ter um gestor. Identificamos as entidades departamento e
empregado e um relacionamento entre as duas entidades, a que chama-
mos gere. Para concluirmos sobre a cardinalidade deste relacionamento
verifiquemos que cada empregado pode gerir um departamento e cada
departamento é gerido por um empregado. Nesta situação dizemos que
existe um relacionamento de 1:1 e indicamo-lo no diagrama colocando o
número apropriado junto de cada entidade (figura I.4.9). Podemos “ler” o
diagrama da seguinte forma: cada empregado gere um departamento e
cada departamento é gerido por um empregado.
I.4 MODELAÇÃO DE DADOS 121

1 1
empregado gere departamento

Figura I.4.9 Um relacionamento com cardinalidade 1:1

Consideremos agora o relacionamento angaria entre as entidades cliente e


vendedor, apresentado na figura I.4.7. Vejamos qual a cardinalidade desse
relacionamento. Nesta situação cada cliente é angariado por um vendedor,
mas cada vendedor pode angariar vários clientes. A cardinalidade deste
relacionamento é de 1:M. No diagrama colocamos M, junto da entidade
cliente e 1, junto da entidade vendedor (figura I.4.10). Podemos “ler” o dia-
grama da seguinte forma: cada vendedor angaria vários clientes, sendo
que cada cliente é angariado por um vendedor.

Figura I.4.10 Um relacionamento com cardinalidade 1:M

Por fim, consideremos o relacionamento visita entre as entidades cliente e


vendedor, da figura I.4.7. Determinemos a cardinalidade do relaciona-
mento. Nesta situação verificamos que cada vendedor faz visita a vários
clientes e, por seu lado, cada cliente pode ser visitado por vários vendedo-
res. No diagrama colocamos em M junto de uma das entidades e um N
junto da outra entidade (figura I.4.11). Podemos “ler” o diagrama da
seguinte forma: cada vendedor visita vários clientes e cada cliente é visi-
tado por vários vendedores.
Na figura I.4.12 apresentamos as cardinalidades dos relacionamentos
apresentados nos exemplos das figuras I.4.3 a I.4.8.
122 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura I.4.11 Um relacionamento de cardinalidade M:N

Figura I.4.12 Cardinalidade de vários relacionamentos


I.4 MODELAÇÃO DE DADOS 123

Participação
A participação de uma ocorrência de uma entidade num relacionamento é
opcional ou obrigatória. Consideremos o exemplo do relacionamento
gere, apresentado na figura I.4.9. Um departamento obrigatoriamente deve
ser gerido por algum empregado – participação obrigatória. No entanto,
existem empregados que não gerem qualquer departamento, isto é, exis-
tem empregados que não participam no relacionamento – participação
opcional. No diagrama, indicamos a participação obrigatória, colocando
uma linha dupla no lado da entidade cuja participação é obrigatória (figura
I.4.13).

1 1
empregado gere departamento

Figura I.4.13 Participação opcional num relacionamento

4.2.3 Entidades fracas

Uma entidade fraca é uma entidade cuja existência depende de outra enti-
dade e que herda, no todo ou em parte, a sua chave primária. No diagrama
E-R representa-se uma entidade fraca através de um rectângulo com linha
dupla. Consideremos a situação em que se pretendemos realizar um
seguro dos dependentes de um empregado de determinada empresa. A
entidade dependente não pode existir sem a entidade empregado, isto é,
não pode ser feito um seguro como dependente a não ser que seja a um
dependente de um funcionário da empresa. Este relacionamento entre as
entidades funcionário e empregado está representado na figura I.4.14. A
entidade dependente é uma entidade fraca.
124 BASES DE DADOS COM MICROSOFT ACCESS 2007

nom e
n u m -d e p
nom e dep
em pr
d a ta n a s c d a ta n a s c
c o d -e m p r c o d -e m p r dep
em pr

1 N
e m p re g a d o depende de d e p e n d e n te

Figura I.4.14 Relacionamento com uma entidade fraca – empregado e dependente

Consideremos ainda um outro exemplo. Suponhamos que se pretende


guardar informação sobre uma colecção de música, constituída por vários
álbuns49. Cada álbum contém várias pistas (01, 02, 03, …) sendo que cada
pista só existe num determinado álbum e herda a sua chave primária.
Identificamos duas entidades: a entidade álbum e a entidade pista. A enti-
dade pista diz-se dependente da entidade álbum e representa-se este
relacionamento na figura I.4.15.

n u m -p is ta
cod- ... ...
a lb u m
c o d -a lb u m ...
1 N
á lb u m c o n té m p is ta

Figura I.4.15 Relacionamento com uma entidade fraca – Álbum e pista

4.2.4 Entidades compostas

No modelo E-R inicialmente apresentado por Chen, os relacionamentos


não podiam ter atributos. No entanto, existem situações, nos relaciona-
mentos de M:N, em que esta situação causa alguns problemas, dado que

49
Com diversos formatos, tais como CD, DVD, Vinil, …
I.4 MODELAÇÃO DE DADOS 125

existe a necessidade de conhecer algumas características que não são


específicas das entidades que estão relacionadas, mas sim do próprio
relacionamento. Alguns autores permitem a existência de atributos nos
relacionamentos, como forma de resolver este problema. No entanto, um
relacionamento de M:N apresenta outros tipos de implicações se tivermos
em mente o modelo relacional. No modelo relacional podem apenas existir
relacionamentos de 1:1 e de 1:M (presentes através do conceito de chave
estrangeira), existindo a necessidade de criar uma “ponte” entre as entida-
des para os relacionamentos de N:M. Essa ponte é uma entidade com-
posta que se representa no diagrama através de um rectângulo circuns-
crito ao losango e que pode ter o mesmo nome do relacionamento ou outro
nome. A entidade composta tem como atributos as chaves primárias das
entidades que estão relacionadas, bem como outros que forem neces-
sários. A chave primária é composta, pelo menos, pelos atributos que são
chave primária das entidades que estão relacionadas, podendo ainda exis-
tir atributos adicionais. Passam também a existir relacionamentos 1:M, en-
tre a entidade composta e as entidades relacionadas.
Comecemos pelo relacionamento da figura I.4.11. Neste relacionamento
existe a necessidade de conhecer a data da visita. Poderíamos considerar
a data como atributo da entidade vendedor, mas isso implicaria que o ven-
dedor visitasse todos os seus clientes na mesma data. Algo idêntico se
passaria se considerássemos a data como atributo do cliente. Transfor-
mamos então o relacionamento em dois relacionamentos de 1:M, através
da criação de uma entidade composta a que chamamos visita. A nova situ-
ação está representada na figura I.4.16.

cod
cod vendedor cod
........
cliente cod vendedor ........
data
cliente

1 M M 1
cliente visita vendedor

Figura I.4.16 Uma entidade composta


126 BASES DE DADOS COM MICROSOFT ACCESS 2007

A entidade visita tem atributos cod cliente e cod vendedor, que obrigato-
riamente farão parte da chave primária. O atributo data faz também parte
da chave primária, pois se assim não fosse um determinado cliente só
poderia ser visitado uma vez por um determinado vendedor50, dado que,
por definição, um valor da chave primária de uma entidade deverá identifi-
car de forma única uma ocorrência dessa entidade.
Com a criação da entidade composta obtemos dois relacionamentos do
tipo 1:M, pois:
• um cliente pode ter várias visitas de um vendedor, em datas
diferentes, sendo que cada visita de um vendedor é efectuada a um
cliente;
• um vendedor efectua várias visitas a um cliente, sendo que cada
visita a um cliente é efectuada por um vendedor.
Um outro exemplo que poderemos apresentar é o do relacionamento apre-
sentado na figura I.4.17, entre a entidade encomenda e a entidade pro-
duto: uma encomenda contém vários produtos sendo que cada produto
pode estar contido em várias encomendas.

M N
encomenda contém produto

cod
nº produto cod
........
encomenda nº produto ........
quantidade
encomenda

1 M linha M 1
encomenda produto
encomenda

Figura I.4.17 Relacionamento entre a entidade encomenda e a entidade produto

Criámos a entidade composta linha-encomenda, sendo que cada enco-


menda contém várias linhas-encomenda, cada uma com um produto, e
cada produto está presente numa linha-encomenda, que pertence a uma

50
Na situação apresentada aqui, considera-se que cada cliente só é visitado uma vez num
dia, pois caso contrário este conjunto de atributos não seria chave primária.
I.4 MODELAÇÃO DE DADOS 127

encomenda. A chave primária é constituída pelos atributos nº encomenda


e cod produto. O atributo quantidade, da entidade composta linha-enco-
menda, existe pois é necessário conhecer a quantidade de produto em
cada linha-encomenda, de uma encomenda.

4.2.5 Uma comparação de notações

A notação que aqui temos vindo a apresentar é típica do modelo desenvol-


vido por Chen. É importante referir que outros estilos de diagramas têm
vindo a ser apresentados. Os mais comuns são:
• pé-de-galinha, desenvolvido por C. W. Bachman,
• Rein85, desenvolvido por D. Reiner em 1985,
• IDEF1X, derivado de estudos do ICAM51, conduzidos no final de
1970.
Chen Pé-de-galinha Rein85 IDEFIX

Entidade

Linha relacionamento

Relacionamento

Símbolo de opcional

1 |
Símbolo “para 1”

M
Símbolo “para muitos”

Entidade composta

Entidade fraca

Figura I.4.18 Uma comparação de notações

51
Integrated Computer-Aided Manufacturing
128 BASES DE DADOS COM MICROSOFT ACCESS 2007

Apesar destes modelos serem baseados nos mesmos conceitos de


modelação, foram desenvolvidos porque são mais fáceis de utilizar com
ferramentas de modelação baseadas em computador, do que o modelo
original de Chen. Na figura I.4.18 apresentamos uma comparação destas
notações.

4.3 DESENVOLVENDO UM DIAGRAMA E-R

O processo de desenhar uma base de dados é iterativo, isto é, baseia-se


numa repetição de processos e procedimentos. Por exemplo, a elaboração
de um diagrama E-R começa, geralmente, com uma narrativa das opera-
ções e procedimentos da organização em estudo. O processo repete-se
até que os utilizadores finais e os analistas do sistema concordem que o
diagrama E-R representa o sistema real de uma forma adequada52.
De seguida, iremos desenvolver uma proposta de diagrama E-R, para uma
determinada organização, da qual apresentamos a seguinte descrição:
Uma editora deseja informatizar os registos das vendas dos livros que
publica. Para cada livro guardam-se as seguintes informações: ISBN,
título, colecção a que pertence, data da edição, imagem da capa, número
de unidades editadas e os seus autores. Além disso, é necessário conhe-
cer os autores que escrevem o livro, bem como os royalties usufruídos.
Para cada autor é necessário conhecer o seu nome, telefone, número de
contribuinte, a sua nacionalidade e os vários livros que escreveu. Para
cada venda, deverá ser conhecida a data da sua realização bem como o
revendedor que a efectuou. Deverá ainda ser conhecida a lista dos livros
vendidos, a sua quantidade e o seu preço unitário. Para os revendedores é
necessário guardar informação sobre o seu nome, número de contribuinte,
bem como a região a que pertence.
Da leitura atenta da descrição do sistema em causa, identificamos as se-
guintes entidades:
• Livro
• Autor
• Nacionalidade
52
Para um mesmo sistema podem ser apresentados diversos diagramas E-R adequados.
I.4 MODELAÇÃO DE DADOS 129

• Colecção

• Venda
• Revendedor.

Passamos agora à identificação de relacionamentos entre estas entidades:

• Relacionamento entre as entidades venda e livro


Identificamos um relacionamento de muitos para muitos (M:N), entre as
entidades venda e livro, visto que cada venda pode conter vários livros e
cada livro pode estar contido em várias vendas. Este relacionamento é
representado na figura I.4.19.

Figura I.4.19 Relacionamento entre as entidades venda e livro

• Relacionamento entre as entidades colecção e livro


Identificamos um relacionamento de 1:M entre as entidades colecção e
livro, dado que uma colecção pode conter vários livros e cada livro per-
tence a uma determinada colecção. Representa-se este relacionamento na
figura I.4.20.

1 N
colecção pertence livro

Figura I.4.20 Relacionamento entre as entidades livro e colecção


130 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Relacionamento entre as entidades livro e autor


Identificamos um relacionamento M:N entre as entidades livro e autor,
dado que um livro pode ser escrito por vários autores e um autor pode, por
seu lado, escrever vários livros. O relacionamento é representado na figura
I.4.21.

Figura I.4.21 Relacionamento entre as entidades paciente e aparelho

• Relacionamento entre as entidades autor e nacionalidade


Identificamos um relacionamento 1:M entre as entidades nacionalidade e
autor, visto que cada autor tem uma nacionalidade (principal), sendo que
cada nacionalidade pode ser comum a vários autores. O relacionamento é
representado na figura I.4.22.

Figura I.4.22 Relacionamento entre as entidades paciente e aparelho

• Relacionamento entre as entidades revendedor e venda


Identificamos um relacionamento 1:N entre as entidades revendedor e
venda, dado que um revendedor pode efectuar várias vendas e cada
venda é feita por um revendedor. Na figura I.4.23 representa-se este rela-
cionamento.
I.4 MODELAÇÃO DE DADOS 131

Figura I.4.23 Relacionamento entre as entidades paciente e aparelho

Podemos agora apresentar o diagrama E-R resultante. Fazemo-lo na


figura I.4.24.

Figura I.4.24 Diagrama E-R para o exemplo apresentado

Passemos agora aos atributos. Quanto ao autor, será necessário guardar


os seus dados pessoais: nome do autor, telefone e número de contribuinte.
Além disso, é necessária e existência de uma chave primária. Assim
sendo, podemos considerar os atributos seguintes para a entidade autor:
CodAutor, Nome, Telefone, Contribuinte, sendo CodAutor a chave primá-
ria. De forma análoga podemos identificar os atributos das restantes enti-
dades. A entidade livro apresenta os atributos ISBN, Título, Data edição,
Capa, e NºUnidadesEd, sendo ISBN a chave primária. Para a entidade
venda temos os atributos NVenda e data, sendo NVenda a chave primária.
Para a entidade revendedor consideramos os atributos CodRevendedor,
Nome, Contribuinte, e Região, sendo CodRevendedor a chave primária.
132 BASES DE DADOS COM MICROSOFT ACCESS 2007

Para a entidade colecção identificamos os atributos CodColecção e Desig-


nação, sendo CodColecção a chave primária. A entidade nacionalidade
tem os atributos CodNacionalidade e Nacionalidade, sendo CodNacionali-
dade a chave primária.

Figura I.4.25 Diagrama E-R com atributos

É também necessário transformar os relacionamentos escreve e contém


em entidades compostas. Optámos por alterar os nomes para autorDOlivro
e vendaDOlivro, respectivamente. Como já vimos, fazem obrigatoriamente
parte da chave primária os atributos que são chaves primárias das entida-
des que se relacionam. Além destes, fazem também parte da lista de atri-
I.4 MODELAÇÃO DE DADOS 133

butos da entidade composta autorDOlivro o atributo royalties e da entidade


composta vendaDOlivro os atributos quantidade e preço unitário. Obtemos
assim o diagrama E-R apresentado na figura I.4.2553.

4.4 CORRESPONDÊNCIA ENTRE O MODELO E-R E O MODELO


RELACIONAL

O esquema relacional, de que falámos no capítulo 3, pode ser derivado a


partir do diagrama E-R. Existe um conjunto de procedimentos que nos
permitem fazê-lo e que passamos a descrever.
1. Para cada entidade (simples) no diagrama E-R, criamos uma relação
que inclui todos os atributos simples dessa entidade, incluindo como
chave primária dessa relação a chave primária identificada no dia-
grama E-R. No caso de atributos compostos incluímos cada um dos
atributos simples que o constituem. Para o diagrama apresentado na
figura I.4.2 obtemos a relação seguinte54:
Autor (cod autor, nome, rua, porta, cidade, código postal, data nasci-
mento, nº contribuinte)

2. Para uma entidade fraca no diagrama E-R, os seus atributos são incluí-
dos na relação obtida a partir da entidade, da qual essa entidade fraca
é dependente. À chave primária dessa relação deve(m) ser adicio-
nado(s) o(s) atributo(s) que formam a chave primária da entidade fraca.
Tomando como exemplo o da figura I.4.14, obtemos a relação:
Empregado (cod-empre, num-dep, nome-empr, data-nasc-empr, nome-
dep, data-nasc-dep)

3. Para cada relacionamento de 1:1, escolhemos uma das relações obti-


das a partir de uma das entidades e incluímos a(s) chave(s) primária(s)
da(s) outra(s) como chave(s) estrangeira(s). É melhor escolher uma re-

53
Como o diagrama E-R fica muito sobrecarregado com as elipses dos atributos, muitas
vezes opta-se por colocar a lista dos atributos junto das entidades, sem as elipses, ou
mesmo fora do diagrama E-R.
54 O caso do atributo telefone, que tem mais do que um valor, será tratado no ponto 6.
134 BASES DE DADOS COM MICROSOFT ACCESS 2007

lação cuja entidade tenha participação total no relacionamento. Para o


exemplo da figura I.4.13, obtemos o seguinte esquema relacional:
Empregado (cod empregado, ...)
Departamento (cod departamento, ..., cod empregado)

4. Para cada relacionamento de 1:M, identificamos a entidade que, no


diagrama, se encontra “do lado 1” e incluímos a chave primária desta
entidade como chave estrangeira da entidade que se encontra “do lado
N”. A partir do exemplo da figura I.4.10 obtemos as seguintes relações:
Cliente (cod cliente, ..., cod vendedor)
Vendedor (cod vendedor, ....)

5. Cada relacionamento de M:N foi previamente transformado numa enti-


dade composta. Cada uma dessas entidades compostas dá lugar a
uma nova relação no esquema relacional, com os atributos identifica-
dos, incluindo a chave primária. Por exemplo, a partir do diagrama
apresentado na figura I.4.16 obtemos as relações seguintes:
Cliente (cod cliente, ...)
Vendedor (cod vendedor, ...)
Visita (cod cliente, cod vendedor, data)

6. Para os atributos com mais do que um valor, criamos uma nova relação
que inclui o próprio atributo composto e a chave primária da entidade
de que ele é atributo. A chave primária desta nova relação é formada
por esses dois atributos. No exemplo da figura I.4.2, obtemos o
seguinte esquema relacional:
Autor (cod autor, nome, rua, porta, cidade, código postal, data nasci-
mento, nº contribuinte)
Telefone-autor (cod autor, telefone)
I.4 MODELAÇÃO DE DADOS 135

Aplicando estas regras ao diagrama E-R apresentado na figura I.4.25,


obtemos o esquema relacional seguinte:
Livro (ISBN, Título, CodColecção, DataEdição, Capa, NºUnidadesEd)
Autor (CodAutor, Nome, Telefone, Contribuinte, CodNacionalidae)
Nacionalidade (CodNacionalidade, Nacionalidade)
Colecção (CodColecção, Designação)
Venda (NVenda, Data, CodRevendedor)
Revendedor (CodRevendedor, Nome, Contribuinte, Região)
autorDolivro (CodAutor, ISBN, Royalties)
vendaDolivro (Nvenda, ISBN, Quantidade, PreçoUnitário)

Este esquema relacional irá ser utilizado nas partes II e III deste livro,
como exercício guiado, sendo que cada relação deste esquema relacional
é uma tabela do Microsoft Access.
136 BASES DE DADOS COM MICROSOFT ACCESS 2007

TERMOS CHAVE

Modelo ER Grau de um relacionamento


Diagrama ER Relacionamento recursivo
Entidade Relacionamento binário
Atributo Relacionamento ternário
Atributo simples Cardinalidade de um relaciona-
mento
Atributo composto
Participação obrigatória
Atributo derivado
Participação opcional
Relacionamento
Entidade fraca
Participante de um relacionamento
Entidade composta
I.4 MODELAÇÃO DE DADOS 137

PARA REVER …

31. Explique por palavras suas cada um dos termos chave apresentados.

32. Em que medida é importante a modelação de dados?

33. Considere o seguinte esquema no modelo Entidade Relacionamento:


comprimento

1 N Rio
Montanha origina

altitude nome
nome
localização

Apresente as tabelas do modelo relacional associadas a este esquema.

34. Considere o diagrama E-R seguinte:

Curso

divide

Professor ensino Turma Contém Aluno


1 M M N
M

requere

Sala

a. Com base no diagrama, apresente uma descrição do sistema real.


b. Transforme o diagrama de modo a conter apenas relacionamentos com
cardinalidade 1:M.
138 BASES DE DADOS COM MICROSOFT ACCESS 2007

c. A partir deste diagrama, obtenha as tabelas do modelo relacional, con-


siderando atributos convenientes.

35. Para cada um dos DER’s apresentados na figura I.4.12 estude o tipo
de participação (obrigatória ou não) e actualize os diagramas com a
indicação adequada.

36. Desenvolva um DER para cada um dos exemplos seguintes:


a. A família Silva chegou de umas férias e apesar de estarem todos
de acordo de que as mesmas foram excelentes, não se entendem
quanto aos gastos. O Sr. Silva tinha frequentado um curso de base
de dados em Access e resolveu criar uma base de dados com as
despesas que tinham feito. Antes de iniciar o trabalho analisou os
dados de que dispunha para tratar e concluiu que tinha o seguinte:
• Durante a viagem todos os elementos da família efectuaram despe-
sas;
• A viagem durou vários dias e visitaram diferentes países;
• Alguns dos elementos da família tinham um ou mais cartões de cré-
dito;
• As despesas foram pagas em dinheiro ou com o cartão de crédito;
• A família guardou todos os talões de despesa, o que facilita a cria-
ção da base de dados;
• Todos os valores de que dispunha já estavam na moeda do país
em que foram efectuados;
• Tinha uma tabela fornecida pelo banco com as cotações das moe-
das para os diferentes dias.

Com base na informação disponível, o Sr. Silva pretende criar as


seguintes listagens para a totalidade da viagem e por cada país
visitado:
• Mapa com os gastos efectuados por cada um dos elementos da
família;
• Mapa com os gastos efectuados por cada cartão de crédito;
• Mapa com os gastos por tipo de despesa (exemplo: alimentação,
dormida, gasolina, etc.).
I.4 MODELAÇÃO DE DADOS 139

b. A PIZZARIA, empresa de entrega ao domicílio de pizzas, encomendou-


-lhe uma aplicação em Access para fazer o controlo das entregas das
encomendas recebidas telefonicamente bem como das motorizadas
utilizadas nas mesmas. A empresa pretende que a aplicação contem-
ple os seguintes pontos:

• Os clientes são identificados pelo seu número de telefone;


• Os tempos e a quilometragem de cada entrega deverão ser armazena-
dos, bem como os valores diários de quilometragem e consumo de ca-
da mota;
• A informação relativa à carta de condução de cada estafeta deverá ser
armazenada para evitar a afectação do estafeta a um veículo para o
qual a sua carta não é válida;
• A empresa deverá poder, em qualquer altura, comunicar com o esta-
feta encarregado da entrega duma encomenda.

c. A SILVA & ABREU, uma empresa de comercialização de artigos


alimentares, tem vários vendedores que angariam clientes para a sua
carteira própria. Um cliente, depois de angariado por um vendedor, terá
todas as suas compras afectadas a esse vendedor até que este saia da
empresa ou a administração resolva realocar os clientes. Por várias
vezes têm surgido conflitos entre os vendedores pois todos reclamam a
angariação dos bons clientes para si. A administração tem dificuldade
em confirmar as versões dos vendedores pois não tem registos com o
angariador e as datas de angariação de um cliente. Para solucionar
este problema a administração da SILVA & ABREU resolveu contrata-
-lo para construir uma base de dados em Access que solucione este
problema e que já agora faça o lançamento automático das encomen-
das dos vendedores. A sua base de dados deverá contemplar os se-
guintes pontos:
• Registar as angariações dos novos clientes;
• Registar os diversos contactos (pessoas) dentro de cada empresa
cliente;
• Registar as visitas de cada vendedor aos seus clientes e as encomen-
das, caso existam;
140 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Visualizar ou imprimir listagem com os clientes visitados por cada


vendedor entre duas datas dadas;

• Visualizar ou imprimir listagem com as encomendas por cada vendedor


entre duas datas dadas;
• Visualizar ou imprimir listagem com as comissões a receber por vende-
dor.

d. Uma empresa que comercializa produtos têxteis deseja informatizar o


seu sistema de informação usando uma base de dados relacional do
tipo do Microsoft Access.

Os Produtos
Os produtos estão divididos em várias categorias (casacos, calças,
coletes, etc.). Para cada categoria existe um código e uma descrição.
Para cada produto existe a seguinte informação: código, nome e preço
unitário.

O Processo de Encomenda
Sempre que um cliente coloca uma encomenda verifica-se primeiro se
já existe ficha de cliente, caso não exista ficha é preenchida uma para
o cliente em questão. A informação que consta na ficha é a seguinte:
Código, Nome, Morada, Cidade, País, Código Postal, Telefone e Fax.
Preenchida a ficha de cliente procede-se ao registo da encomenda. A
informação a incluir na encomenda é a seguinte:
Por cada encomenda – Nº Enc., Código do vendedor, Nome do Ven-
dedor, Nome do Cliente, Morada do Cliente, Data da Encomenda, Data
de Entrega (solicitada pelo cliente);
Por cada produto a incluir numa encomenda – Código do Produto,
Quantidade Encomendada, Preço Unitário.
Quando uma encomenda se encontra pronta procede-se então à sua
entrega. Uma vez entregue a encomenda regista-se a data de entrega
real.
I.4 MODELAÇÃO DE DADOS 141

Relatórios
O sistema de informação deverá possibilitar a obtenção de relatórios
que apresentem a seguinte informação:
• Valor das vendas por produto e por mês.
• Valor das vendas por categoria e por mês.

• Atraso médio das entregas entre datas.


• Valor das vendas por mês e por vendedor.
• Peso total dos produtos contidos nas encomendas de cada mês.

Note que:
• Não existem produtos repetidos numa encomenda.
• Os preços unitários dos produtos podem ser actualizados todos os
meses.

e. O consultório dentário do Dr. Dentinho deseja informatizar os registos


dos tratamentos efectuados aos seus pacientes, aos quais se atribui
um código interno.
Para cada paciente guardam-se as seguintes informações pessoais:
nome do paciente, Caixa (ADSE, geral, PSP, ...), número de beneficiá-
rio, regime, data de validade do cartão, morada do paciente, telefone
do paciente, data da primeira consulta, ...
É necessário registar, para cada tratamento, o custo e a data em que
foi efectuado, dado que o mesmo tipo de tratamento pode ser efec-
tuado em datas distintas, ao mesmo paciente. Existem dois tipos de
tratamentos distintos: os tratamentos gerais (destartarização, gengi-
vectomia, ortopantomografia, teleradiografia) e os tratamentos aplica-
dos especificamente a um dente (restauração, endodontia, exodontia,
prótese acrílica, prótese esquelética, coroa, elemento de ponte).
A ficha de cada cliente apresenta os vários dentes e o tratamento
efectuado a cada um dos dentes, numa determinada data. Apresenta
também os tratamentos gerais e as datas em que foram efectuados.
Cada dente é representado por um código específico: 11 a 18, 21 a 28,
31 a 38 e 41 a 48.
142 BASES DE DADOS COM MICROSOFT ACCESS 2007

Existe a possibilidade de colocar aparelhos na boca. Existem quatro


tipos de aparelhos distintos (aparelho fixo superior, aparelho fixo infe-
rior, aparelho removível superior e aparelho removível inferior). Os apa-
relhos necessitam de controlos periódicos, dos quais é importante re-
gistar a data.
Mensalmente é preciso obter relatórios dos tratamentos e controlos
efectuados nesse mês, para cada um dos pacientes.

f. Pretende-se conceber uma base de dados que permita efectuar a ges-


tão da informação inerente a uma colecção de música. Considere toda
a informação associada a um conjunto de discos de vinil, CD’s e
DVD’s, nomeadamente as Bandas e/ou Artistas, as categorias musicais
bem como as músicas existentes em cada álbum. De destacar a infor-
mação de cada pista (número, nome e tempo) pertencente a cada
álbum e a informação relativa aos diferentes tipos de Música (Catego-
rias).

37. A partir de cada um dos DER’s obtidos na questão anterior, obtenha os


respectivos esquemas relacionais.

PARA INVESTIGAR …

13. Pode ser encontrada na Internet a versão integral do artigo de Peter


Chen “The Entity-Relathionship Model – Toward a Unified View of
Data”, no qual foi descrito pela primeira vez o modelo ER. Encontre,
leia e analise o artigo referido.

14. Em algumas situações as noções do modelo ER clássico, que foi


apresentado ao longo deste capítulo, têm-se demonstrado insufi-
cientes. Assim sendo, surgiram extensões a este modelo. Apre-
sente a descrição do modelo EER (do inglês, Enhanced ER).

15. Apresente a correspondência entre o modelo EER e o modelo rela-


cional.
I.5

Dependências Funcionais e
Normalização

Quando realizamos o desenho de uma base de dados relacional, o pri-


meiro objectivo que pretendemos atingir é o de criar uma representação
adequada dos dados, utilizando boas estruturas de dados. Em princípio, o
desenho de bases de dados através, por exemplo, do modelo E-R, produz
boas estruturas de dados. A dificuldade consiste em distinguir as boas das
más estruturas. A normalização é uma forma de o fazer. Nesta situação, a
normalização é utilizada como uma técnica de validação e podemos afir-
mar que ao utilizar o modelo E-R seguida da validação das estruturas obti-
das, através da normalização, estamos a fazer uma abordagem Top-Down
ao desenho de bases de dados. Podemos também utilizar a normalização
como uma abordagem Bottom-up, ao desenho de bases de dados, o que
nos permite identificar um conjunto apropriado de relações.
A normalização é uma técnica que consiste em várias fases chamadas
Formas Normais. Em cada uma das fases é feita uma análise de relacio-
namentos entre atributos. À primeira fase chama-se Primeira Forma
Normal (1FN), à segunda fase chama-se Segunda Forma Normal (2FN)
e à terceira fase chama-se Terceira Forma Normal (3FN). Existem ainda
a Forma Normal de Boyce-Codd (FNBC), a Quarta Forma Normal (4FN)
e a Quinta Forma Normal (5FN).
De um ponto de vista estrutural, as formas normais mais elevadas são
melhores pois reduzem as redundâncias nos dados e consequentemente
ajudam a eliminar as anomalias que resultam dessas redundâncias. Não
devemos, no entanto, supor que o nível de normalização mais elevado é
sempre o mais desejável. Geralmente, uma forma normal mais elevada
produz uma base de dados com uma capacidade de resposta mais lenta.
144 BASES DE DADOS COM MICROSOFT ACCESS 2007

Devemos encontrar sempre o ponto de equilíbrio adequado a cada caso.


Alguns autores afirmam que, para a maioria dos sistemas, basta efectuar a
normalização até à 3FN, existindo, no entanto, algumas aplicações espe-
ciais que requerem níveis de normalização mais elevados.
Ao longo deste capítulo iremos demonstrar o processo de normalização,
transferindo os dados, inicialmente gravados num formulário, para a forma
de uma tabela, com linhas e colunas e procedendo depois à sua normali-
zação. Antes, porém, iremos reflectir sobre a importância da normalização,
em 5.1. Em 5.2 iremos analisar o conceito de dependência funcional. Na
secção 5.3 iremos estudar cada uma das formas normais, nomeadamente
a 1FN, a 2FN, a 3FN, a FNBC, a 4FN e a 5FN.
O exemplo que servirá de base ao nosso trabalho é o mesmo que utiliza-
remos nas partes II e III deste livro, como exercício guiado, e que já abor-
dámos em 4.3.

Figura I.5.1 Formulário de tabela não normalizada

Figura I.5.2 Tabela não normalizada


I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 145

Consideremos o formulário apresentado na figura I.5.1. Podemos propor a


relação (tabela) apresentada na figura I.5.2 como sendo uma relação cujo
conteúdo corresponde às necessidades do relatório. Será este o ponto de
partida para o trabalho a desenvolver ao longo deste capítulo.

5.1 A IMPORTÂNCIA DA NORMALIZAÇÃO

Um dos principais objectivos que pretendemos atingir ao efectuar o dese-


nho de uma base de dados relacional é o de agrupar os atributos em rela-
ções de forma a minimizar as redundâncias dos dados, reduzindo assim o
espaço que a base de dados ocupará em disco. Além deste problema, a
existência de redundâncias está associada a um conjunto de anomalias de
inserção de dados, anomalias de eliminação de dados e anomalias de alte-
ração de dados.

• Anomalias de inserção
Uma das anomalias de inserção que podem acontecer prende-se com o
facto de inserir dados inconsistentes. Por exemplo, ao inserir o autor Ana
Paula Afonso para o livro com ISBN 9728426550, devemos ter o cuidado
de inserir o nome dessa autora de forma correcta: pode vir a acontecer,
por exemplo, que exista um autor de código 63 com nomes distintos.
Outro tipo de anomalias de inserção acontece quando tentamos inserir, na
base de dados, dados que possam existir sem estarem dependentes da
existência de outros, por exemplo, uma nova colecção, para a qual ainda
não foi publicado qualquer livro. Isso obrigaria a que fosse inserido o valor
nulo no código do livro o que, sendo esse atributo chave primária, conduzi-
ria a uma quebra na restrição de integridade. Assim sendo, só poderemos
inserir novas colecções na tabela da figura I.5.2 se já existir algum livro
publicado dessa colecção55.

55
Evidentemente a situação normal é esta: a colecção existe, desde que exista algum livro
que pertença a essa colecção. No entanto, poderá ser do interesse da editora que seja
inserida uma colecção na base de dados para a qual existam livros projectados, mas que
ainda não tenham sido publicados.
146 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Anomalias de eliminação
As anomalias de eliminação prendem-se com o facto de poderem ser eli-
minados dados inadvertidamente. Por exemplo, ao eliminarmos o livro com
ISBN 9728426852, eliminamos também os dados sobre os seus autores e
sobre a colecção de código 5.

• Anomalias de alteração
Se houver uma alteração na data de edição inicialmente inserida para o
livro com ISBN 9728426542, essa alteração deverá ser feita em todas as
linhas existentes para esse livro. Se isso não acontecer a base de dados
ficará num estado de inconsistência.
Para evitar as anomalias aqui apresentadas utilizamos a normalização.
Através da aplicação desta técnica a relação apresentada na figura I.5.2
vai ser decomposta em várias relações, eliminando anomalias em cada
uma das fases do processo de normalização.

5.2 DEPENDÊNCIAS FUNCIONAIS

Um dos principais conceitos associados à normalização é o conceito de


dependência funcional, que descreve os relacionamentos entre os atribu-
tos. Sendo A e B atributos de uma relação R, dizemos que B depende
funcionalmente de A se cada valor de A está associado com exacta-
mente um valor de B (A ou B podem conter mais do que um atributo). Esta
dependência funcional é representada por

A ÆB

O atributo A designa-se por determinante.


Tomemos o exemplo da relação apresentada na figura I.5.2. O atributo
Designação colecção depende funcionalmente do atributo Cod colecção,
ou de forma equivalente, Cod colecção determina Designação colecção.
Cod colecção Æ Designação colecção
I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 147

pois cada valor de Cod colecção está associado com exactamente um


valor de Designação da colecção:
3 Æ Tecnologias
5 Æ Desafios

No entanto, o atributo Cod Autor não depende funcionalmente do atributo


Cod colecção pois existem valores do atributo Cod colecção associados
com mais do que um valor do atributo Cod Autor:
3 Æ 63
3 Æ 66
3 Æ 67
3 Æ 68

5.3 O PROCESSO DE NORMALIZAÇÃO

A normalização é executada como uma série de passos. Cada passo cor-


responde a uma Forma Normal com propriedades conhecidas, que serão
apresentadas nas secções 5.3.1 a 5.3.5. À medida que procedemos à
normalização, as relações tornam-se cada vez mais restritivas e menos
vulneráveis a anomalias.
Inicialmente uma relação pode apresentar um ou mais grupos repetitivos:
dizemos que ela se encontra numa forma não normalizada. No exemplo da
figura I.5.2, podemos verificar que, para cada livro, existem várias entradas
do grupo de atributos Cod Autor, Nome Autor, Telefone Autor, Contribuinte,
Cod Nacionalidade, Nacionalidade, Royalties.
As notações mais comuns para apresentar as estruturas não normaliza-
das, indicando os grupos repetitivos, são a notação DeMarco e a notação
Gane and Sarson.

• Notação DeMarco
Nesta notação, os grupos repetitivos são apresentados entre chavetas.
Assim, para o exemplo da figura I.5.2 teremos:
148 BASES DE DADOS COM MICROSOFT ACCESS 2007

Livro = ISBN, Título, Data Edição, Capa, Nº Unidades Ed, Cod


Colecção, Designação Colecção, {Cod Autor, Nome Autor,
Telefone Autor, Contribuinte, Cod Nacionalidade, Nacionali-
dade, Royalties}

• Notação Gane and Sarson


Nesta notação atribuímos um nome ao grupo repetitivo e indicamo-lo
com um * (asterisco). Os atributos que constituem o grupo repetitivo
são indentados. Para o exemplo da figura I.5.2 teremos:

Livro

ISBN

Título

Data Edição

Capa

Nº Unid. Ed

Cod Colecção

Designação Colecção

Autores*

Cod Autor

Nome Autor

Telefone Autor

Contribuinte

Cod Nacionalidade

Nacionalidade

Royalties

Passemos agora à apresentação das características de cada uma das


formas normais.
I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 149

5.3.1 Primeira Forma Normal

O termo Primeira Forma Normal (1FN) descreve uma relação na qual:


• os atributos chave estão definidos;
• não existem grupos repetitivos;
• todos os atributos dependem funcionalmente da chave primária.
Para eliminar os grupos repetitivos começamos por identificar um atributo
ou conjunto de atributos como chave primária da relação. Seguidamente
decompomos a estrutura removendo os atributos que formam os grupos
repetitivos juntamente com o(s) atributo(s) que forma(m) a chave primária,
formando desta forma duas relações e identificamos a chave primária das
relações obtidas. Por vezes existe mais do que um grupo repetitivo ou
existem grupos repetitivos dentro de grupos repetitivos. Nestes casos,
devemos repetir o processo indicado até eliminarmos todos os grupos
repetitivos. No exemplo que temos vindo a considerar obtemos (os atribu-
tos sublinhados formam a chave primária):

• Notação DeMarco
Livro = ISBN, Título, Data Edição, Capa, Nº Unidades Ed, Cod
Colecção, Designação Colecção
Livro/Autor = ISBN, Cod Autor, Nome Autor, Telefone Autor, Contri-
buinte, Cod Nacionalidade, Nacionalidade, Royalties

• Notação Gane and Sarson

Livro Livro/Autor

ISBN ISBN

Título Cod Autor

Data Edição Nome Autor

Capa Telefone Autor

Nº Unidades Ed Contribuinte

Cod Colecção Cod Nacionalidade

Designação Colecção Nacionalidade

Royalties
150 BASES DE DADOS COM MICROSOFT ACCESS 2007

Vamos agora verificar todas as dependências funcionais presentes em


ambas as relações. É evidente que todos os atributos dependem funcio-
nalmente da chave primária.
A relação Livro apresenta as seguintes dependências funcionais:
f1: ISBN Æ Título, Data Edição, Capa, Nº Unidades Ed, Cod
Colecção, Designação Colecção
f2: Cod Colecção Æ Designação Colecção

A relação Livro/Autor apresenta as seguintes dependências funcionais:


f3: ISBN, Cod Autor Æ Nome Autor, Telefone Autor, Contribuinte,
Cod Nacionalidade, Nacionalidade, Royalties
f4: Cod Autor Æ Nome Autor, Telefone Autor, Contribuinte, Cod
Nacionalidade, Nacionalidade
f5: Cod Nacionalidade Æ Nacionalidade

Apresentamos o diagrama de dependências de cada uma das relações


obtidas, na figura I.5.3.

Livro:
ISBN Título Data edição Capa Nº unid.ed Cod Designação
colecção colecção
f1:

f2:

Livro/Autor:
ISBN Cod Nome Telefone Contrib Cod Naciona Royal
Autor Autor Autor uinte Nacionalidade lidade ties

f3:

f4:

F5:

Figura I.5.3 Diagrama de dependências


I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 151

5.3.2 Segunda Forma Normal

A Segunda Forma Normal (2FN) baseia-se no conceito de dependência


parcial (dependência funcional parcial). Uma dependência funcional diz-se
parcial se o determinante representar apenas uma parte dos atributos que
formam a chave primária. É evidente que apenas as relações cujas chaves
primárias são compostas por dois ou mais atributos apresentam depen-
dências parciais. No nosso exemplo, é dependência parcial f4 (ver figura
I.5.3).
Uma relação está na 2FN se:

• está na 1FN;
• não inclui dependências parciais.

A normalização de relações que se encontram na 1FN para relações na


2FN envolve a remoção das dependências parciais. Para eliminar uma
dependência parcial removemos os atributos que são parcialmente depen-
dentes juntamente com uma cópia do determinante, formando uma nova
relação. A chave primária dessa nova relação é o determinante. No nosso
exemplo obtemos:
• Notação DeMarco
Livro = ISBN, Título, Data Edição, Capa, Nº Unidades Ed, Cod
Colecção, Designação Colecção
Livro/Autor = ISBN, Cod Autor, Royalties
Autor = Cod Autor, Nome Autor, Telefone Autor, Contribuinte, Cod
Nacionalidade, Nacionalidade

• Notação Gane and Sarson

Livro Livro/Autor

ISBN ISBN

Título Cod Autor

Data Edição Royalties

Capa
152 BASES DE DADOS COM MICROSOFT ACCESS 2007

Nº Unidades Ed
Autor

Cod Colecção Cod Autor

Designação Colecção Nome Autor

Telefone Autor

Contribuinte

Cod Nacionalidade

Nacionalidade

5.3.3 Terceira Forma Normal

A Terceira Formal Normal (3FN) baseia-se no conceito de dependência


transitiva. Existe uma dependência transitiva quando os atributos distin-
tos A, B e C de uma relação apresentam as dependências:
A Æ B e B Æ C. Neste caso dizemos que C depende transitivamente de A,
via B (supondo que A não depende funcionalmente de B nem de C). No
nosso exemplo, f2 e f5 são dependências transitivas, pois
Cod Colecção Æ Designação Colecção
Cod Nacionalidade Æ Nacionalidade

Uma relação está na 3FN se:


• está na 2FN;
• não contém dependências transitivas.

A normalização de relações que se encontram na 2FN para relações que


se encontram na 3FN envolve a remoção das dependências transitivas.
Para eliminar uma dependência transitiva de uma relação removemos os
atributos transitivamente dependentes dessa relação, juntamente com uma
cópia do determinante, formando uma nova relação. Continuando com o
nosso exemplo, obtemos:
I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 153

• Notação DeMarco
Livro = ISBN, Título, Data Edição, Capa, Nº Unidades Ed, Cod
Colecção
Colecção = Cod Colecção, Designação Colecção
Livro/Autor = ISBN, Cod Autor, Royalties
Autor = Cod Autor, Nome Autor, Telefone Autor, Contribuinte, Cod
Nacionalidade
Nacionalidade = Cod Nacionalidade, Nacionalidade

• Notação Gane and Sarson

Livro Livro/Autor

ISBN ISBN

Título Cod Autor

Data Edição Royalties

Capa

Nº Unidades Ed
Autor

Cod Autor

Colecção Nome Autor

Cod Colecção Telefone Autor

Designação Colecção Contribuinte

Nacionalidade

Cod Nacionalidade

Nacionalidade

5.3.4 Forma Normal de Boyce-Codd

Uma relação encontra-se na Forma Normal de Boyce-Codd (FNBC) se:

• Está na 3FN
• Qualquer determinante é uma chave candidata.
154 BASES DE DADOS COM MICROSOFT ACCESS 2007

A normalização de uma relação que se encontre na 3FN para relações que


se encontrem na FNBC faz-se separando o(s) atributo(s) que depende(m)
do determinante que não é chave candidata.
É evidente que se uma relação possui apenas uma chave candidata, a
3FN e a FNBC são equivalentes, ou seja, apenas as relações com mais de
uma chave candidata podem não corresponder à FNBC. No exemplo da
editora que temos vindo a considerar todas as tabelas que estão na 3FN
estão também na FNBC.
Para exemplificar a FNBC consideremos a relação
Consulta-Paciente (CodPaciente, data, hora, CodMedico, sala)

que contém os detalhes das consultas marcadas numa clínica. Num


determinado dia, o médico está afecto a uma determinada sala. No
entanto, uma sala pode ser alocada a vários médicos, consoante as
necessidades desse dia. Um paciente só pode ser consultado uma vez por
dia, mas pode ter várias consultas em dias diferentes. A relação tem três
chaves candidatas:
CodPaciente + data
CodMedico + data + hora
sala + data + hora

Escolhamos CodPaciente + data como chave primária:


Consulta-Paciente (CodPaciente, data, hora, CodMedico, sala)

Esta relação tem as seguintes dependências funcionais:


CodPaciente + data Æ hora, CodMedico, sala
CodMedico + data + hora Æ CodPaciente, sala
sala + data + hora Æ CodMedico, CodPaciente
CodMedico + data Æ sala
Estas dependências funcionais estão representadas no diagrama da figura
I.5.4.
I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 155

CodPaciente Data Hora CodMedico Sala


f1:

f2:

f3:

f4:

Figura I.5.4 Diagrama de dependências da relação consulta-paciente

Analisando as dependências apresentadas, verificamos a ausência de


dependências parciais e de dependências transitivas, pelo que a relação
se encontra na 3FN. No entanto, esta relação não se encontra na FNBC
pois o determinante CodMedico + data não é uma chave candidata.
Para normalizar a relação consulta-paciente devemos criar duas novas
relações chamadas consulta e sala-médico, separando o atributo que
depende do determinante que não é chave primária – esse atributo é sala:
Consulta (CodPaciente, data, hora, CodMedico)
Sala-medico (CodMedico, data, sala)

Por vezes ao decompor uma relação de modo a obter a FNBC, as depen-


dências funcionais não são preservadas, isto é, pode haver algum deter-
minante que é separado dos atributos que o determinam. Nesta situação
são perdidas restrições importantes. No nosso exemplo perdemos a
dependência funcional sala + data + hora Æ CodMedico, CodPaciente,
pois os atributos que formam o determinante desta dependência já não
pertencem à mesma relação. No entanto, se esta dependência funcional
não fosse removida a relação apresentaria redundâncias nos dados. O
156 BASES DE DADOS COM MICROSOFT ACCESS 2007

analista terá de decidir qual a melhor opção no caso real que estiver a ser
considerado.

5.3.5 Multi-dependência e Quarta Forma Normal

Apesar de a 3FN ou a FNBC serem suficientes para a maioria das bases


de dados, existem algumas situações em que são necessários níveis de
normalização mais elevados, associados com outros tipos de dependên-
cias.
A Quarta Forma Normal (4FN) baseia-se no conceito de Multi-dependên-
cia. Uma relação que está na FNBC e não contém multi-dependências não
triviais está na 4FN.
Consideremos uma relação com atributos A, B, C, D, ... Dizemos que B é
multi-dependente de A, se existe um conjunto de valores de B para cada
valor de A, e B é independente dos restantes atributos. Representa-se esta
multi-dependência por
A B

A multi-dependência pode ser trivial ou não trivial. Uma multi-dependência,


A B, diz-se trivial se se verifica uma das seguintes condições:
o B⊂ A
o A∪ B = R

Se não se verifica nenhuma destas condições a multi-dependência diz-se


não trivial.
Vejamos um exemplo concreto. Para isso consideremos a situação em
que, na nossa editora, o autor indica vários contactos telefónicos e endere-
ços de correio-electrónico. Para isso consideremos a relação:
Contactos-autor (cod autor, telefone, e-mail)

Na figura I.5.5 apresentamos uma instância desta relação.


Verifica-se que:
I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 157

Cod autor telefone


Cod autor e-mail

mas telefone e e-mail são atributos independentes. Estas multi-dependên-


cias são não triviais. Assim sendo, esta relação não se encontra na 4FN.
Cod autor Telefone e-mail

66 12345 aaa@aa.pt

66 12345 bbb@bb.pt

66 12222 aaa@aa.pt

66 12222 bbb@bb.pt

67 12121 abc@aa.pt

67 12121 abc@bb.pt

Figura I.5.5 Instância de uma relação com multidependências

Para obter a 4FN, decompomos esta relação nas duas relações seguintes:
Telefone-autor (cod autor, telefone)
e-mail-autor (cod autor, e-mail)

Na figura I.5.6 apresentamos uma instância destas relações.


Cod autor Telefone Cod autor e-mail

66 12345 66 aaa@aa.pt

66 12222 66 bbb@bb.pt

67 12121 67 abc@aa.pt

67 abc@bb.pt

Figura I.5.6 Instâncias de uma relação na 4FN

5.3.6 Dependência de junção e Quinta Forma Normal

Podemos verificar que ao voltar a ligar as relações apresentadas na figura


I.5.6 através de um NATURAL JOIN, obtemos a mesma relação sem que
tenham sido inseridos tuplos corrompidos. Dizemos que não existe uma
158 BASES DE DADOS COM MICROSOFT ACCESS 2007

dependência de junção na relação contactos-autor. Logo a relação está


na 5FN.
Quando uma relação apresenta dependências de junção, isto é, quando ao
decompor a relação, através de operações PROJECT, obtemos relações tais
que a sua junção, através de um NATURAL JOIN, provoca a inserção de
tuplos que não fazem parte da relação original, dizemos que essa relação
não está na 5FN.
Vejamos um exemplo concreto. Para isso, consideremos uma clínica que
com vários consultórios. A relação
Cons-paci-med (Cod consultório, Cod paciente, Cod medico)

contém a informação sobre os médicos e pacientes em cada um dos con-


sultórios. Apresentamos uma instância desta relação na figura I.5.7.
Cod consultorio Cod paciente Cod medico

1 1 1

1 2 2

2 1 2

2 3 1

3 2 3

Figura I.5.7 Instância de uma relação com dependência de junção

Esta relação está na 4FN, mas não está na 5FN, dado que, decompondo a
relação nas três relações
Consultório-paciente (cod consultório, cod paciente)
Consultório-medico (cod consultório, cod medico)
Paciente-medico (cod paciente, cod medico)

das quais apresentamos instâncias na figura I.5.8, verificamos que não


podemos obter a relação original através de um NATURAL JOIN de pares de
relações assim obtidas (ver figura I.5.9), dado que se obtêm tuplos que não
pertencem à relação original.
I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 159

R1 R2 R3

cod con- cod cod cod cod cod


sultório paciente paciente medico consultorio medico

1 1 1 1 1 1

1 2 1 2 1 2

2 1 2 2 2 1

2 3 2 3 2 2

3 2 3 1 3 3

Figura I.5.8 Instâncias de relações na 5 FN

R1 Â R2 R2 Â R3

cod cod cod cod cod cod


consultório paciente medico consultorio paciente medico

1 1 1 1 1 1

1 1 2 2 1 1

1 2 2 1 2 2

1 2 3 2 2 2

2 1 1 1 1 2

2 1 2 2 1 2

2 3 1 1 3 1

3 2 2 2 3 1

3 2 3 3 2 3

Figura I.5.9 Instâncias de R1 Â R2 e R1 Â R3


160 BASES DE DADOS COM MICROSOFT ACCESS 2007

TERMOS CHAVE

Forma normal Dependência funcional


1FN Determinante
2FN Grupos repetitivos
3FN Dependência parcial
FNBC Dependência transitiva
4FN Multidependência
5FN Dependência de junção
I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 161

PARA REVER …

38. Explique por palavras suas cada um dos termos chave apresentados.

39. Considere o seguinte esquema relacional:


Vendedor (cod-vendedor, apelido, nome, data-contrato,
local-trabalho, supervisor, salário, comissões)
Cliente (cod-cliente, empresa, morada, localidade, cod-postal, país)
Peças (cod-peça, local, descrição, custo-unitário, existências)
Facturas (cod-factura, cod-peça, quantidade, data-venda, cod-
vendedor, cod-cliente)

sabendo que:

• salário e comissões dependem de cod-vendedor


• supervisor depende de local-trabalho
• descrição e custo-unitário dependem de cod-peça
• existências dependem de cod-peça e de local
• data-venda, cod-vendedor e cod-cliente dependem de cod-
factura
• quantidade depende de cod-factura e de cod-peça
i. Elabore o diagrama de dependências.
ii. Indique, justificando, que correcções faria ao esque-
ma apresentado.

40. Numa determinada escola pretende-se conceber um sistema de


informação para auxiliar na elaboração de horários. Obteve-se,
entre outras, a seguinte estrutura, HORÁRIO, adequada ao modo
de funcionamento daquela escola:
Cód. Horário
Cód. Curso
Nome Curso
Cód-Ano
Turma
162 BASES DE DADOS COM MICROSOFT ACCESS 2007

Dia*
Cód. Dia
Nome dia
Características*
Cód. Disciplina
Nome Disciplina
Tipo Disciplina
Cód. Tempo
Cód. Sala

a. Elabore o diagrama de dependências.


b. Diga, justificando, em que forma normal se encontra esta
estrutura.
c. Normalize a estrutura até à terceira forma normal, indicado
convenientemente os passos realizados.

41. Uma empresa de camionagem tem vários meios de transporte que


aluga para diversas viagens. Existem também diversos motoristas
da empresa. Pretende-se conceber o esquema de uma base de
dados que guarde informação sobre as viagens dessa empresa.
Considere a estrutura seguinte, como sendo adequada ao funcio-
namento da empresa e normalize-a.
VIAGEM
Número-viagem
Confirmação*
número-conf
data-conf
transporte*
cod-transporte
tipo-transporte
I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 163

destino-transporte
destino-viagem
data-saída
data-chegada
cod-motorista
nome-motorista

42. Normalize a estrutura de dados seguinte, referente a uma planta-


ção que contém várias estufas. As plantas que se encontram nas
estufas apresentam cuidados especiais, sendo necessário saber
quantas plantas, de cada variedade, foram plantadas em cada estu-
fa.
Código estufa
Descrição da estufa
Área
Plantas*
Código planta
Descrição planta
Data plantação
Origem planta
Localização planta
Quantidade plantada
Cuidados especiais*
Código cuidado especial
Descrição cuidado especial
Duração cuidado especial

43. A tabela seguinte mostra as marcações de consultas numa clínica


dentária. A cada paciente é atribuída uma consulta, numa data e
164 BASES DE DADOS COM MICROSOFT ACCESS 2007

hora determinadas, com um dentista, numa dada sala. Em cada dia


de consultas o dentista é colocado numa determinada sala.

Nº Nome Nº Nome Consulta Nº da


Dentista dentista Paciente paciente sala
Data Hora

S1011 António P100 Ana Sousa 03-Fev-2003 S15


Silva 10:00

S1011 António P105 Mário Silva 03-Fev-2003 S15


Silva 12:00

S1024 Maria P108 Maria 03-Fev-2003 S10


Rodrigues Almeida 10:00

S1024 Maria P108 Maria 05-Fev-2003 S10


Rodrigues Almeida 14:00

S1032 Rui Almeida P105 Mário Silva 05-Fev-2003 S15


16:00

S1032 Rui Almeida P110 José 06-Fev-2003 S13


Pedro 18:00

a. A tabela está sujeita a anomalias. Explique e forneça exem-


plos de anomalias de inserção, eliminação e actualização.
b. Efectue a normalização da tabela.

44. Considere a relação R (a, b, c), na qual (a Æ b, c) e (b Æ a, c).


a. Elabore o diagrama de dependências.
b. Qual a forma normal da relação?
c. Normalize a relação.

45. Considere a relação R(a,b,c,d,e), em que {a,b} é a chave primária e


d Æ e.
a. Indique todas as dependências da relação R.
b. Qual a forma normal da relação R?
c. Assuma agora que a chave primária R é {a,b,d}. Em que for-
ma normal a relação R passa a estar?
I.5 DEPENDÊNCIAS FUNCIONAIS E NORMALIZAÇÃO 165

d. Considere novamente a relação R, tal como enunciada no


início da pergunta. Indique a forma normal de R se o atri-
buto {e} for chave candidata de R.

46. Considere a relação R(a,b,c,d,e) com as seguintes dependências:


a,b Æ c; c,d Æ e; d,e Æ b. O conjunto de atributos {a, b} é uma
chave candidata? E {a, b, d}? Explique a sua resposta.56

PARA INVESTIGAR …

16. Alguns autores apresentam outras formas normais, além das des-
critas neste livro, nomeadamente:
• Domain-Key
• Restriction-union
• 6FN
Apresente uma descrição de cada uma delas, apresentando exem-
plos.

56
Traduzido de [Elmasri e Navathe, 2004].
PARTE II

Na Parte II deste livro vamos fazer uma abordagem prática ao Sis-


tema de Gestão de Base de Dados (SGBD) Microsoft Access,
sustentada em conceitos teóricos abordados na Parte I. Essa
abordagem será feita de forma simples e objectiva, proporcionan-
do ao utilizador um conhecimento de nível intermédio e avançado
das técnicas necessárias ao desenvolvimento e implementação de
uma base de dados.
Nesta perspectiva, serão abordados os diferentes objectos do
SGBD Microsoft Access 2007 e, simultaneamente, serão apresen-
tados, para cada um, procedimentos e funcionalidades no âmbito
de um exercício guiado baseado numa base de dados de uma
Editora que será construída e optimizada ao longo dos diversos
capítulos.
II.1
O Microsoft Access

O Microsoft Access é um Sistema de Gestão de


Base de Dados relacional em ambiente gráfico,
que possibilita ao utilizador o armazenamento, or-
ganização e gestão dos dados de uma forma sim-
ples e directa.
É uma aplicação interactiva para o Windows, o que significa que tem capa-
cidade para relacionar dados provenientes de diferentes origens. Nesta
qualidade é uma ferramenta poderosa de organização, localização e apre-
sentação de grandes quantidades de informação.
Este Sistema de Gestão de Base de Dados relacional é constituído por um
conjunto de objectos como tabelas, consultas, formulários, relatórios,
macros e módulos, que visam o armazenamento, edição, apresentação ou
gestão de um conjunto de dados.

1.1 CARACTERÍSTICAS GERAIS

O Access consegue introduzir qualquer utilizador num mundo até então


fechado: o das bases de dados. As capacidades de estruturação, interliga-
ção e de consulta ajudam o utilizador na manipulação e localização de
informação, independentemente do formato ou do local onde ela se encon-
tra.
Os programas de gestão de base de dados clássicos apenas consideram
como base de dados os ficheiros de dados, gravando todas as formas de
apresentação destes dados em ficheiros separados. A filosofia do Access
difere desta abordagem, na medida em que considera uma base de dados
como um conjunto das tabelas de informações com os respectivos modos
170 BASES DE DADOS COM MICROSOFT ACCESS 2007

de apresentação. Assim, um ficheiro de base de dados em Access pode


conter uma ou várias tabelas de dados, relatórios, consultas, formulários,
macros e módulos de programação, possibilitando ao utilizador o desenvol-
vimento da base de dados gradualmente, incluindo novos elementos e com-
binando-os com elementos existentes em função das suas necessidades.
As ferramentas de criação WYSIWYG (What You See Is What You Get)
disponíveis ajudam na produção de Tabelas, Consultas, Formulários e
Relatórios sofisticados e eficazes para atender às especificações mais exi-
gentes. De facto, através dos Assistentes, o Access possibilita a criação
dos referidos objectos com imagens, objectos gráficos e sons sem qual-
quer necessidade de programação.
Com o Access conseguimos, de uma forma rápida, elaborar representa-
ções que nos ajudarão a acompanhar o rumo da nossa actividade, permi-
tindo assim tomar eventuais decisões de alteração do rumo delineado.
Podemos também elaborar relatórios que filtram a nossa informação, apre-
sentando apenas os dados estritamente necessários, inviabilizando assim
a apresentação de informação excedente que poderia provocar uma dis-
persão e consequente demora na retirada de conclusões.

1.2 O MICROSOFT ACCESS 2007

Com uma interface melhorada e recursos de design interactivo que não


requerem conhecimento profundo de bases de dados, o Microsoft Access
2007 ajuda a registar e controlar informações de modo rápido e fácil. De
facto, é possível começar a trabalhar facilmente (Capítulo 4), usando solu-
ções de bases de dados pré-formatadas que poderão ser modificadas e
adaptadas de acordo com as suas necessidades e opções da sua activi-
dade.
Se pretendermos definir a estrutura da nossa base de dados, o Access
ajuda-nos na construção de tabelas eficientes (Capítulo 5) que se podem
relacionar de forma harmoniosa.
Com o recurso ao objecto Consultas do Access, é possível colocar um
conjunto de questões para que seja filtrada a informação das tabelas da
base de dados, de forma a obter apenas a informação pretendida (Capí-
tulo 6).
II.1 O MICROSOFT ACCESS 171

Adicionalmente, o Access permite a recolha de informações por meio de


formulários em e-mail ou a importação de dados a partir de aplicações
externas. Este objecto funciona como uma interface para o utilizador que
proporciona uma visão mais apelativa e amigável do conteúdo da base de
dados (Capítulo 7).
Com o Access criamos, editamos e imprimimos relatórios detalhados (Ca-
pítulo 8) que exibem informações variadas, filtradas e agrupadas para faci-
litar a tomada de decisões fundamentadas.
Compartilhamos as informações com outros colaboradores, usando as lis-
tas da tecnologia do Microsoft Windows SharePoint Services, onde podere-
mos gerir, auditar, recuperar informações anteriormente apagadas, definir
permissões de acesso aos dados e fazer regularmente cópias de seguran-
ça das informações.
A estreita integração entre o Access 2007 e o Microsoft Office System
(incluindo o Excel 2007, o Outlook 2007, o InfoPath 2007 e o Windows
SharePoint Services) proporciona novas maneiras de criar, manter e distri-
buir informações. Essas ferramentas vão mais além do que nunca no der-
rube das barreiras que impedem o fluxo de informações, ajudando a con-
seguir a informação que precisamos, com o formato desejado, na altura
certa e no local pretendido.
Também os indivíduos com mais competências no desenvolvimento e pro-
gramação podem aperfeiçoar uma aplicação do Access 2007 com macros
(Capítulo 9) ou com o Microsoft Visual Basic®. Estes profissionais podem
até usar as ferramentas do sistema de desenvolvimento do Microsoft
Visual Studio® para acrescentar capacidades adicionais a uma aplicação
do Access, e até transformar uma pequena aplicação utilizada de forma
eficiente por um pequeno grupo, numa grande aplicação que uma organi-
zação inteira possa utilizar (sem ter que reescrevê-la do zero). Na verdade,
as aplicações do Access criadas actualmente podem facilmente crescer à
medida que crescem as nossas necessidades e as necessidades da orga-
nização onde estamos inseridos.
No final desta segunda parte (Capítulo 10) veremos como gerir a base de
dados através de um sistema de navegação e das ferramentas de análise
de desempenho, e como incrementar a segurança das nossas bases de
dados, quer sejam centralizadas ou distribuídas, através de cópias de
segurança e acessos controlados.
II.2
Novidades do Microsoft Access 2007

2.1 COMEÇAR RAPIDAMENTE A CONTROLAR AS INFORMAÇÕES

Com o Access 2007 podemos registar, acompanhar e analisar as informa-


ções de que precisamos de uma forma rápida e eficiente. Uma nova inter-
face ajuda-nos a começar a trabalhar com aplicações de acompanhamento
rápido e fácil, sem nos obrigar a ter uma grande experiência com bases de
dados ou conhecimentos sobre programação. Agora, com o Access 2007,
começamos a trabalhar imediatamente com recursos orientados aos resul-
tados.

2.1.1 Excelentes modelos para introdução

Com a nova janela de Introdução do Access (figura II.2.1) podemos come-


çar rapidamente a criar uma base de dados. É possível criar a nossa pró-
pria base de dados ou iniciar com um dos diversos modelos criados e pre-
parados profissionalmente. Com efeito, a nova janela de entrada do
Access 2007 inclui uma variedade de soluções de bases de dados predefi-
nidas. É possível usar essas aplicações pré-configuradas exactamente
como estão, ou então tratá-las como modelos que numa fase posterior
serão melhorados. Com efeito, os modelos são criados para uso imediato,
por isso estão prontos a serem utilizados. Se a estrutura do modelo aten-
der as nossas necessidades, então estamos prontos a começar. Caso
contrário, poderemos utilizar o modelo para obter uma estrutura inicial que
sofrerá as alterações que se adeqúem às nossas necessidades específi-
cas.
174 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.2.1 Janela de entrada do Access 2007 com a apresentação dos diferentes
modelos pré-configurados

De realçar que cada modelo é uma aplicação de gestão de informação


completa, com tabelas, formulários, relatórios, consultas, macros e rela-
ções predefinidas.

2.1.2 Criação rápida avançada utilizando o separador CRIAR

O separador CRIAR do friso (figura II.2.2) oferece-nos uma nova forma de


adicionar novos objectos. Agora, é possível criar rapidamente novos formu-
lários, relatórios, tabelas, listas do SharePoint, consultas, macros, módulos
e muito mais.

Figura II.2.2 Funcionalidades do separador CRIAR do friso

O processo de criação de um objecto tem em consideração o objecto


que estiver activo, portanto, se uma tabela estiver aberta, poderemos
criar um novo formulário baseado nessa tabela com apenas um duplo
clique.
II.2 NOVIDADES DO MICROSOFT ACCESS 2007 175

2.1.3 Criação rápida de tabelas com a vista FOLHA DE DADOS


melhorada

O processo de criação de tabelas foi consideravelmente facilitado com o


Access 2007. De facto, é possível trabalhar directamente dentro de uma
FOLHA DE DADOS para criar e personalizar tabelas (figura II.2.3). Para isso,
basta começar a digitar informações numa célula de dados, tal como
acontece no Excel. Quando se insere um novo valor, o Access 2007
automaticamente adiciona um novo campo e detecta o tipo de dados
(como data, número e texto). Podemos até copiar tabelas do Excel para
uma nova folha de dados e o Access 2007 automaticamente cria todos os
campos e reconhece os respectivos tipos de dados.

Figura II.2.3 Vista FOLHA DE DADOS no processo de criação de tabelas

Adicionalmente, podemos usar o painel de tarefas LISTA DE CAMPOS (figura


II.2.4) para inserir campos pré-definidos. Basta arrastá-los para a tabela.

Figura II.2.4 Painel de tarefas LISTA DE CAMPOS

2.1.4 Filtrar e classificar dados

O Access 2007 exponencia os já avançados recursos de filtragem e per-


mite-nos obter rapidamente os dados que procuramos. Neste sentido, po-
deremos rapidamente escolher entre os valores exclusivos de uma coluna,
ou classificar valores utilizando as opções do MENU DE CONTEXTO de lingu-
176 BASES DE DADOS COM MICROSOFT ACCESS 2007

agem simples, como Classificar do Mais Antigo para o Mais Recente ou


Classificar do Menor para o Maior.
Poderemos localizar as opções de filtro mais comuns, exibidas nos
comandos do menu ou poderemos utilizar os filtros rápidos para limitar as
informações com base nos dados que inserimos (figura II.2.5). As opções
de FILTRO RÁPIDO são alteradas automaticamente com base no tipo de
dados, portanto, poderemos visualizar opções com distinção de texto, data
e informações numéricas.

Figura II.2.5 Utilização de filtros rápidos na Vista FOLHA DE DADOS

Notar que existe uma coerência neste procedimento de filtragem entre o


Excel 2007 e o Access 2007 para que os utilizadores não necessitem de
aprender um novo modo de encontrar as informações que precisam.

2.1.5 Campos com valores múltiplos

Agora, o Access 2007 suporta tipos de dados complexos, ou seja, já é


possível nesta nova versão criar colunas que aceitem mais que um valor
em cada célula. Por exemplo, se atribuirmos uma tarefa a mais de uma
pessoa, podemos incluir ambos os nomes na célula (figura II.2.6). A tec-
nologia Windows SharePoint Services é compatível com esses tipos de da-
dos complexos, para ajudar a garantir a simetria de dados entre o arma-
zenamento local e o baseado na Web.

Figura II.2.6 Exemplo da utilização de uma célula com valores múltiplos


II.2 NOVIDADES DO MICROSOFT ACCESS 2007 177

2.1.6 Anexar documentos e arquivos à Base de Dados

Com o novo tipo de dados Anexo as aplicações podem registar informa-


ções mais interessantes e úteis do que nunca. De facto, é possível anexar
vários tipos de arquivos tais como fotos, documentos ou gráficos a registos
individuais dentro do armazenamento de dados através de uma fácil refe-
rência.

Se o arquivo não estiver no formato compactado, o Access 2007 fará essa


compactação de uma forma automática economizando espaço em disco.

2.1.7 Texto formatado em campos MEMO

O Access 2007 oferece um novo suporte de texto formatado (podemos


formatar texto com opções, como negrito, itálico, diferentes tipo de letra e
cores, bem como com outras opções frequentes de formatação) para os
dados armazenados dentro das tabelas. Além disso, também suporta
hyperlinks nas tabelas e campos MEMO. O formato RTF é baseado em
HTML e é compatível com o tipo de dados de RTF do Windows SharePoint
Services. Desta forma, os dados são adequadamente formatados quando
exibidos em qualquer folha de dados, formulário ou relatório.

2.1.8 Calendário automático para selecção da data

Os campos e controlos que utilizam o tipo de dados Data/Hora ganharam


automaticamente um novo recurso: suporte para calendário interactivo
interno para escolha da data. O botão do calendário é exibido automati-
camente à direita da data. Para tirar partido desta nova funcionalidade,
clicamos neste botão e o calendário será exibido automaticamente para
podermos localizar e escolher a data (figura II.2.7). Também é possível
desactivar o calendário de um campo ou o controlo alterando a respectiva
propriedade.

Figura II.2.7 Configuração do calendário interactivo para escolha da data


178 BASES DE DADOS COM MICROSOFT ACCESS 2007

2.1.9 Linha de total nas folhas de dados

Um novo recurso no modo FOLHA DE DADOS é a linha TOTAIS, onde pode-


remos adicionar vários tipos de funções de agrupamento, nomeadamente
soma, contar, média, máximo, mínimo, desvio padrão ou variância.

Figura II.2.8 Exemplo da utilização da linha Total na Vista FOLHA DE DADOS

2.1.10 Macros incorporadas

É possível, com toda a confiança, utilizar as novas macros incorporadas


evitando assim escrever código. Uma macro incorporada é armazenada
numa propriedade do objecto ao qual pertence. Podemos modificar a
estrutura de uma macro incorporada sem termos que nos preocupar com
outros controlos ou objectos que possam vir a usar a mesma macro, pois
cada macro incorporada é independente.

As macros incorporadas são fidedignas, na medida em que são impedi-


das automaticamente de executar determinadas operações potencial-
mente não seguras.

2.1.11 Dividir formulários

Os formulários podem ser divididos por forma a combinar uma Vista de


FOLHA DE DADOS e uma Vista de FORMULÁRIO (figura II.2.9). Podemos defi-
nir uma propriedade que transmita ao Access se deve colocar a folha de
dados na parte superior, inferior, esquerda ou direita.
II.2 NOVIDADES DO MICROSOFT ACCESS 2007 179

Figura II.2.9 Divisão de Formulários combinando a Vista de FOLHA DE DADOS e uma Vista de
FORMULÁRIO.

2.1.12 Visualizador de Ajuda melhorado

O Access 2007 proporciona um acesso fácil à ajuda do utilizador final e à


ajuda de programação a partir da mesma janela de visualização de ajuda.
A nova AJUDA foi reestruturada em resposta aos comentários dos utilizado-
res. Se pretender, poderá limitar facilmente o âmbito da procura apenas à
ajuda de programação, sendo que todo o conteúdo de utilizador final e de
programação ficará disponível no Office Online.

2.2 PARTILHAR INFORMAÇÕES CONTROLADAS COM OUTROS


UTILIZADORES

Podemos utilizar o Access 2007 para recolher e compartilhar informações


de forma fácil e segura. É possível criar aplicações de bases de dados
colaborativas, utilizando o Access e o Windows SharePoint Services. As
informações podem ser armazenadas em listas num website do Share-
Point e acedidas por meio de tabelas vinculadas a uma base de dados do
Access, ou então armazenar o ficheiro inteiro do Access no site do Share-
Point. Neste contexto, o Access 2007 permite obter facilmente informações
e disponibilizá-las para os outros colaboradores com mais segurança e fle-
xibilidade.

2.2.1 Recolher dados usando o Outlook 2007

O Access 2007 simplifica o processo de recolha de informações de outras


pessoas. Utilizando o novo recurso RECOLHA DE DADOS, o Access 2007
pode criar automaticamente um formulário Microsoft InfoPath 2007 ou
180 BASES DE DADOS COM MICROSOFT ACCESS 2007

HTML e incorporá-lo no corpo de um e-mail. É possível enviar o formulário


a diversos destinatários usando endereços de e-mail dos nossos contactos
(armazenados no Outlook ou no próprio Access). O Outlook 2007 processa
os formulários de entrada (depois de preenchidos pelos destinatários) e
guarda os dados no dispositivo de armazenamento de dados do Access
2007, actualizando efectivamente e de forma imediata a aplicação, sem
que haja necessidade de nova digitação.

2.2.2 Colaboração na Web com o Windows SharePoint Services

Os sites da Web baseados no Windows SharePoint Services fornecem um


local onde um grupo de trabalho pode comunicar, compartilhar documen-
tos e colaborar no âmbito de um projecto. Com o Access 2007 podemos
publicar os nossos ficheiros do Access 2007 nas bibliotecas ou mover a
aplicação para o Windows SharePoint Services, permitindo que o grupo
interaja facilmente com ele por meio do navegador. Formulários, relatórios
e informações podem ser visualizadas, actualizadas ou apagadas directa-
mente no site do Windows SharePoint Services de acordo com configura-
ções de permissão estabelecidas.

Os benefícios imediatos de uma solução compartilhada do Windows


SharePoint Services incluem o acesso baseado num navegador compar-
tilhado, backup centralizado, implantação da base de dados no site do
SharePoint e todas as vantagens inerentes a uma solução baseada num
servidor.

2.2.3 Trabalhar off-line com as listas do Windows SharePoint


Services

Usando o Access 2007 podemos trabalhar com o Windows SharePoint


Services off-line. Por exemplo, se estivermos em casa, podemos manter
uma cópia local de uma lista do Windows SharePoint Services no nosso
computador, onde podemos editar e consultar a lista como se ela estivesse
em qualquer outra tabela do Access 2007. Formulários e relatórios que
utilizam a lista do Windows SharePoint Services são totalmente interacti-
vos e o Access 2007 pode posteriormente sincronizar a lista local com a
lista on-line, quando for restabelecida a ligação do nosso computador à
Web.
II.2 NOVIDADES DO MICROSOFT ACCESS 2007 181

2.2.4 Integração com o fluxo de trabalho do Windows


SharePoint Services

O Access 2007 oferece suporte ao fluxo de trabalho utilizando o Windows


Workflow Services localizado no Windows SharePoint Services. O fluxo de
trabalho pode ser usado para automaticamente assinalar tarefas para
outros utilizadores, relatar o estado do projecto e ajudar a assegurar que
as tarefas sejam concluídas a tempo. Todas as tarefas do Windows
SharePoint Services podem ser visualizadas dentro do Access 2007 ou do
Outlook 2007.

2.2.5 Exportar para PDF e XPS

Com o Access 2007 é possível guardar um relatório como um arquivo


Portable Document Format (PDF) ou em formato XML Paper Specification
(XPS) para impressão ou distribuição por e-mail. Ao guardar um relatório
como um ficheiro em PDF ou XPS podemos capturar as informações do
relatório num formato que pode ser facilmente distribuído e que retém
todas as suas características de formatação, sem exigir aos destinatários a
instalação do Access para aceder, imprimir ou examinar o seu relatório.

A exportação de um formulário, relatório ou folha de dados para um


ficheiro PDF ou XPS pode ser feita desde que instale primeiro o
suplemento PUBLICAR COMO PDF OU XPS.

2.2.6 Experiência melhorada de importação e exportação

As novas funcionalidades no Access 2007 facilitam a importação e expor-


tação de dados. Podemos guardar uma operação de importação ou
exportação e reutilizar a operação guardada da próxima vez que tenhamos
de executar a mesma tarefa. O Assistente de IMPORTAÇÃO DE FOLHAS DE
CÁLCULO permite-lhe substituir o tipo de dados escolhido pelo Access e
importar, exportar e ligar aos novos formatos de ficheiro do Excel 2007.
182 BASES DE DADOS COM MICROSOFT ACCESS 2007

2.3 CRIAR E ADAPTAR RELATÓRIOS PARA RESPONDER ÀS


NECESSIDADES

Com o Access 2007 podemos facilmente analisar e entender a complexi-


dade das informações apresentadas em relatórios, possibilitando assim
tomadas de decisão mais fundamentadas. O novo recurso CRIAÇÃO RÁPIDA
gera automaticamente relatórios com designs de aparência profissional,
com cabeçalhos que incluem logótipo, título, data e hora, rodapés informa-
tivos e totais.

2.3.1 Edição dos modos Relatório e Esquema

As capacidades de design destes dois novos modos de visualização


proporcionam uma experiência do tipo “what you see is what you get”
(WYSIWYG), isto é, “o que vês é o que tens”. Na verdade, agora é
possível desenhar e alterar a estrutura do relatório de forma interactiva e
em tempo real, fazendo a pré-visualização do relatório à medida que se
constrói (figura II.2.10).
Utilizando o novo modo RELATÓRIO é possível navegar numa apresentação
precisa e rica em recursos, sem precisar de a imprimir ou pré-visualizar.
Para seleccionar determinados registos utilizamos a filtragem (recurso
FILTRO) ou uma operação de localização para encontrar os dados cor-
respondentes. Podemos utilizar o comando de cópia para capturar o texto
para as operações COPIAR e COLAR, utilizando a ÁREA DE TRANSFERÊNCIA.
Enquanto que o modo RELATÓRIO permite a navegação, o modo ESQUEMA
permite que se façam alterações na estrutura enquanto se navega. Este
recurso permite-nos realizar grande parte das alterações estruturais mais
comuns enquanto se exibe um relatório dinâmico. Por exemplo, é possível
adicionar um campo arrastando-o do novo painel LISTA DE CAMPOS ou alte-
rar as propriedades utilizando a FOLHA DE PROPRIEDADES. O modo
ESQUEMA oferece também suporte a novos esquemas empilhados e tabu-
lares (grupos de controlos que podemos manipular como um só, por isso
podemos reorganizar os campos, as colunas, as linhas ou esquemas intei-
ros facilmente). Além disso, podemos remover um campo ou adicionar
formatação facilmente no modo ESQUEMA. A VISTA DE ESTRUTURA ainda
permanece disponível para trabalho mais detalhado, tendo sido melhorada
para oferecer suporte a esquemas.
II.2 NOVIDADES DO MICROSOFT ACCESS 2007 183

Figura II.2.10 Modo ESQUEMA para visualização de Relatórios

2.3.2 Painel de campos dos Relatórios

O novo painel LISTA DE CAMPOS (figura II.2.11) é mais avançado que o


seleccionador de campos das versões anteriores do Access. Podemos
arrastar e soltar campos da tabela no objecto activo em tabelas relaciona-
das ou tabelas não relacionadas na base de dados. O Access 2007 é inte-
ligente para criar a infra-estrutura necessária, portanto, se uma relação
entre tabelas for necessária, ela será criada automaticamente ou o pro-
grama solicitará essa criação no decorrer do processo.

Figura II.2.11 O novo painel LISTA DE CAMPOS do Access 2007

2.3.3 Informações agrupadas em Relatórios

Este novo recurso do Access 2007 proporciona uma maneira mais ade-
quada e acessível de agrupar e classificar relatórios, bem como de adicio-
nar totais. De facto, a nova interface de utilizador é mais fácil de navegar e
de entender e quando ela for utilizada com o novo modo ESQUEMA o
resultado das suas alterações poderá ser visualizado instantaneamente. O
PAINEL DE AGRUPAMENTO (figura II.2.12) aperfeiçoado fornece uma clara
exibição dos agrupamentos de dados, de modo que possamos pré-
visualizar as alterações à medida que são aplicadas aos relatórios.
184 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.2.12 O novo PAINEL DE AGRUPAMENTO

Podemos facilmente adicionar totais, subtotais, contagens e outros ele-


mentos que nos ajudem a analisar os dados. Para isso, utilizamos o modo
ESQUEMA e o novo PAINEL DE AGRUPAMENTO para adicionar um nível de
grupo e, assim, solicitar um total (podemos visualizar as alterações no
nosso relatório imediatamente). A nova lista suspensa TOTAIS (figura II.2.
13) facilita a adição da soma, média, contagem, máximo ou mínimo nos
cabeçalhos ou rodapés do relatório. Agora os totais simples não exigem a
criação manual de um campo calculado. Basta apontar e clicar.

Figura II.2.13 A nova lista suspensa TOTAIS

2.4 GERIR E AUDITAR INFORMAÇÕES CONFIDENCIAIS

O Access 2007 torna mais fácil e transparente a gestão das informações.


Com efeito, os recursos avançados de segurança do Access 2007 e a
sólida integração com o Windows SharePoint Services permitem a gestão
de uma forma mais eficaz e ajudam a proteger as aplicações de tratamento
de informações. Ao armazenar os dados da aplicação nas listas do Win-
dows SharePoint Services podemos auditar o histórico da revisão, recupe-
rar informações eliminadas e definir permissões de acesso a dados.

2.4.1 Segurança avançada

Para tornar o Access 2007 ainda mais seguro e manter a consistência com
outros produtos do Microsoft System, o Access 2007 inclui recursos de
segurança novos e aperfeiçoados. As Unified trust decisions (Decisões de
II.2 NOVIDADES DO MICROSOFT ACCESS 2007 185

confiança unificadas) são integradas na Office Trust Center (Centro de


Confiança do Office). Neste local é mais fácil armazenar todas as bases de
dados em pastas seguras. Podemos carregar uma aplicação do Access
2007 com código ou macros desactivados para obter uma experiência
mais segura, chamada “Sandbox”. Muitas macros seguras são executadas
no modo Sandbox.

2.4.2 Auditoria de dados

Sem precisarmos do apoio de profissionais de Tecnologias de Informação


(TI) pode-se facilmente migrar os dados de um arquivo local de base de
dados para um servidor com o Windows SharePoint Services que os pro-
fissionais de TI da organização possam gerir, proteger, ajudar a tornar
seguros e copiar de acordo com as políticas da empresa.

2.4.3 Histórico da revisão

Esta nova funcionalidade permite-nos acompanhar e ver quem criou, edi-


tou e apagou os registos. Podemos também visualizar quando as informa-
ções foram modificadas e, se necessário, voltar ao nível anterior das edi-
ções.

2.4.4 Configuração de permissão

Usando o Windows SharePoint Services é possível permitir ou negar se-


lectivamente o acesso a determinados utilizadores. Podemos atribuir per-
missões de leitura limitadas ou direitos completos de edição.

2.4.5 Reciclagem

É possível, agora, recuperar dados que foram eliminados por engano


usando a nova Reciclagem no Windows SharePoint Services.
II.3
A interface do Microsoft Access 2007

3.1 INTERFACE DE UTILIZADOR ORIENTADA A RESULTADOS

O Access 2007 utiliza uma nova interface de utilizador, criada inteiramente


para nos tornar mais produtivos. Na verdade, com esta interface podere-
mos trabalhar, aprender e localizar mais rapidamente as funcionalidades
desejadas.
O Access 2007 foi actualizado com uma nova aparência que facilita a cria-
ção, a alteração e o trabalho nas aplicações de bases de dados. Esta faci-
lidade de utilização decorre do facto dos comandos serem disponibilizados
de uma forma clara e organizada quando necessitamos deles.
A nova interface de utilizador substitui os antigos menus, barras de
ferramentas e a maior parte dos painéis de tarefas do Access. Essa nova
interface é sensível ao contexto e é optimizada para proporcionar eficiência
e capacidade de descoberta. Não obstante quase 1.000 comandos
estarem disponíveis, a nova interface exibe apenas aqueles que são
relevantes para a tarefa que estamos a realizar num determinado
momento. Além disso, a exibição de janelas com separadores, uma nova
barra de estado, novas barras de deslocamento e uma nova barra de título
dão às aplicações do Access 2007 uma aparência muito moderna e profis-
sional.

A nova interface de utilizador do Access 2007 exibe apenas os recursos


que são relevantes em cada momento. Como se ilustra na figura II.3.1, a
janela apresenta os comandos que permitem criar os objectos da base
de dados.
188 BASES DE DADOS COM MICROSOFT ACCESS 2007

o botão
Microsoft Office barra de
acesso rápido friso

painel de barra de
navegação estado

Figura II.3.1 Janela do Access 2007

3.2 O FRISO

A nova interface utiliza uma área padrão na parte superior da janela da


aplicação chamada FRISO. Esta barra de opções substitui as camadas de
menus e as barras de ferramentas usadas nas versões anteriores do
Access. O friso apresenta comandos organizados num conjunto de sepa-
radores que exibem apenas os comandos mais relevantes para cada uma
das áreas de procedimentos do Access 2007.

3.2.1 Os separadores do friso

O friso permite-nos localizar grupos de comandos relacionados de uma


forma rápida pois estes estão organizados em separadores (figura II.3.2).
Por exemplo, se pretendemos criar um novo formulário ou relatório, torna-
-se muito fácil localizar o botão respectivo no separador CRIAR. Com efeito,
II.3 A INTERRFACE DO MICROSOOFT ACCESS 2007 189

a nova estrutura faacilita a loca


alização do
os comando os necessárrios e, assim
m,
possibilita a descooberta de re ecursos quee, de outro
o modo, passsariam des-
percebiddos. Isto occorre porqu ue, com os separadore es utilizado
os no Accesss
2007, os
o comando os são coloccados mais perto da su uperfície, em vez de se
e-
rem aninhados no fundo dos menus.
m Agoora não é preciso perder tanto tem
m-
po na procura dos comandos e será maiss fácil encontrá-los.

S
Separadores

Figura II.3.2 Separadores do friso


o

També ém as tabe elas, as co


onsultas, oss formulário
os, os rela
atórios e ass
macross são exibidos como documentos
d s com sepa aradores (figura II.3.3)).
A visua
alização de
e janelas de
e documenttos com sep paradores facilita
f a na-
vegaçãão pois apre
esenta todo
os os objeto n mesma janela.
os abertos na

Figura
a II.3.3 Separa
adores no ace
esso a docume
entos abertos

3.2.2 Secções
S co
ontextuais
s

A barra a de opçõess friso, além


m de ser diividida em separadorees, concentra
um conjjunto de coomandos ag grupados de acordo coom seu conntexto (figura
II.3.4) − depende do
d objecto em e que esttamos a traabalhar ou da
d tarefa qu ue
estamoss a executtar. Na verd dade, esta barra conttém os commandos com
maior probabilidad
p de de serem m aplicados ao que esttamos a fazzer, pois ce
er-
tos conjjuntos de co
omandos apenas
a são relevantes quando editados objec-
tos de um
u determin nado tipo.
190 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.3.4 Secções de contexto no separador CRIAR

Por exemplo, se escolhermos o separador CRIAR, imediatamente vemos os


comandos usados para criar os objectos da base de dados tais como tabe-
las, formulários, relatórios ou consultas o que facilita significativamente a
localização e a utilização dos comandos necessários para a operação em
questão.

3.3 O BOTÃO MICROSOFT OFFICE

Muitos dos mais valiosos recursos das versões anteriores do


Microsoft Office não estavam associados ao processo de criação
de documentos. Eles estavam relacionados a tudo o que se pode fazer
com um documento: partilhar, proteger, imprimir, publicar e enviar. As ver-
sões anteriores das aplicações do Microsoft Office não tinham um local
central e único onde um utilizador pudesse ver todos esses recursos, pois
os recursos associados ao tratamento de ficheiros estavam misturados
com os recursos de criação e de desenvolvimento.
A nova interface do utilizador reúne os recursos do Microsoft Office System
num único ponto de entrada: o BOTÃO MICROSOFT OFFICE (figura II.3.5).
Isto proporciona duas importantes vantagens: em primeiro lugar é facilitado
o processo de localização desses recursos valiosos; em segundo lugar são
simplificados os principais cenários de criação, permitindo que o friso se
concentre na criação de documentos importantes.

Figura II.3.5 Opções disponíveis através do BOTÃO MICROSOFT OFFICE


II.3 A INTERFACE DO MICROSOFT ACCESS 2007 191

3.4 BARRA DE FERRAMENTAS DE ACESSO RÁPIDO

Na extremidade esquerda da barra de título do programa encontra-se a


BARRA DE FERRAMENTAS ACESSO RÁPIDO (figura II.3.6). Esta barra é muito
pessoal, pois apresenta os comandos que mais utilizamos ou que simples-
mente pretendemos aceder de uma forma instantânea.

Figura II.3.6 Opções da BARRA DE FERRAMENTAS DE ACESSO RÁPIDO

Como configuração padrão, esta barra apresenta um conjunto de botões


que contém ícones com os comandos GUARDAR, DESFAZER e REFAZER.
Contudo, esta barra pode ser personalizada com a adição ou remoção de
botões. Também pode ser posicionada abaixo do friso.

Para personalizar a BARRA DE FERRAMENTAS DE ACESSO RÁPIDO, pode-


mos utilizar o botão e seleccionar os comandos que pretendemos dis-
ponibilizar (figura II.3.7). Em alternativa, podemos utilizar os próprios bo-
tões do friso, como se explica de seguida.

Figura II.3.7 Opções para a personalização da BARRA DE FERRAMENTAS DE ACESSO RÁPIDO

Por exemplo, se pretendermos colocar o comando de criação de tabelas


em vista de estrutura, posicionamos o cursor no respectivo comando e
premimos o botão do rato do lado direito. No menu escolhemos a primeira
opção Adicionar à BARRA DE FERRAMENTAS ACESSO RÁPIDO (figura II.3.8).
192 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.3.8 Adicionar comandos à BARRA DE FERRAMENTAS DE ACESSO RÁPIDO através do


botão direito do rato

Depois deste procedimento o comando permanecerá na barra de acesso


rápido de forma permanente para ser usado de uma forma rápida (figura
II.3.9).

Figura II.3.9 Configuração da BARRA DE FERRAMENTAS ACESSO RÁPIDO depois de inserido um


novo comando

3.5 PAINEL DE NAVEGAÇÃO

Nesta versão já não existe a janela Base de Dados que era o principal
ponto de referência do Access. Em sua substituição existe agora um painel
chamado PAINEL DE NAVEGAÇÃO (figura II.3.10) que está posicionado no
lado esquerdo da janela e que agrupa de uma forma lógica os objectos da
base de dados. Com efeito, é possível configurar este painel por forma a
agrupar os objectos por tipo ou por outra característica como seja data de
criação, data da modificação, tabela relacionada (com base nas depen-
dências do objecto) ou por grupos personalizados que podemos criar e que
se enquadrem nas especificidades do nosso trabalho.

Figura II.3.10 PAINEL DE NAVEGAÇÃO com os respectivos objectos da base de dados


II.3 A INTERFACE DO MICROSOFT ACCESS 2007 193

Precisamos de mais espaço para trabalhar na estrutura do formulário?


O Painel de Navegação localiza-se à esquerda e é possível recolhê-lo
rapidamente clicando em . Assim, ele ocupará pouco espaço, embora
permaneça disponível.

3.6 BARRA DE ESTADO

Esta barra está localizada na parte inferior da janela e exibe um conjunto


de informações úteis, tais como a vista usada no momento, utilização de
teclas (Num Lock, Caps Lock), etc. Além disso, inclui botões que permitem
alternar rapidamente entre as diferentes vistas (figura II.3.11).

Figura II.3.11 BARRA DE ESTADO com os respectivos botões que permitem alternar entre as
diferentes vistas
II.4
Criação de uma Base de Dados com o
Microsoft Access 2007

Ao longo dos anos a Microsoft tem feito grandes esforços para facilitar a
utilização do Access, pois existe a opinião generalizada que esta é a apli-
cação do Office mais complexa e difícil de utilizar. De facto, a forma como
as bases de dados são desenhadas e manipuladas obedecem a um con-
junto de regras que devem ser respeitadas, obrigando os seus utilizadores
a ter um conhecimento bastante profundo desta tecnologia.
Com o Access 2007, construir uma base de dados é mais fácil do que
nunca. Desde a criação inicial da estrutura da base de dados até à criação
dos diversos objectos, vamos constatar que o Access 2007 respeita e
impõe as melhores práticas, facilitando a criação de aplicações eficientes e
funcionais, independentemente dos conhecimentos do utilizador.

4.1 COMPREENDER AS BASES DE DADOS DO ACCESS

Como sabemos, as bases de dados são colecções de informações devi-


damente estruturadas e organizadas. No Access, todas as bases de dados
são armazenadas num único ficheiro que contém os seus respectivos
objectos. Os objectos da base de dados são os seus principais compo-
nentes, pois asseguram os diversos procedimentos associados à sua utili-
zação e manipulação.
Os seguintes objectos estão disponíveis no PAINEL DE NAVEGAÇÃO e são
apresentados numa orientação vertical.
196 BASES DE DADOS COM MICROSOFT ACCESS 2007

Objecto que apresenta todas as Tabelas da base de dados. As tabelas são


colecções de dados sobre um determinado tema, que serão armazenados
sobre a forma de registos e campos.

Objecto que apresenta todas as Consultas da base de dados. As


Consultas são utilizadas para seleccionar um conjunto de informação,
normalmente segundo condições pré-estabelecidas. Também podem ser
utilizadas como origem de dados para Formulários e Relatórios.

Objecto que apresenta todos os Formulários da base de dados. Também


designados por ecrãs de apresentação, são utilizados para introduzir ou
apresentar dados numa base de dados. Um Formulário pode representar
um painel de navegação que abre outros Formulários e Relatórios na base
de dados ou uma caixa de diálogo personalizada que aceita as entradas
do utilizador e executa uma acção com base nessa entrada.

Apresenta todos os Relatórios da base de dados. Os Relatórios são uma


forma eficaz de apresentar os dados num formato impresso e podem as-
sumir diversas formas, desde uma simples tabela a listagens com agrupa-
mento de dados e cálculos numéricos.

Apresenta todas as Macros da base de dados. As Macros são constituídas


por um conjunto de comandos que têm por objectivo automatizar tarefas
comuns na base de dados. Ao utilizar grupos de macros pode-se desem-
penhar várias tarefas em simultâneo.
II.4 CRIAÇÃO DE UMA BASE DE DADOS COM O MICROSOFT ACCESS 2007 197

Os Módulos são um conjunto de declarações, instruções e procedimentos


executados na linguagem de programação do Access (Visual Basic for
Applications – VBA) com o objectivo de facilitar a gestão da informação,
executando acções difíceis de conseguir em modo de utilização.

Uma base de dados no Access não é apenas um ficheiro de dados, mas


sim uma entidade formada por um conjunto de objectos, armazenados
num ficheiro do tipo Microsoft Access 2007 Database (accdb).

4.2 INICIAR O ACCESS 2007

Ao activar o Access 2007, através do botão INICIAR, comando PROGRAMAS


– ACCESS, surge um ecrã de início de trabalho (figura II.2.1), que nos apre-
senta um conjunto de alternativas para o acesso a uma base de dados,
nomeadamente:

• Abertura de uma base de dados já existente;


• Criação de uma base de dados vazia;
• Criação de uma base de dados com base num modelo predefinido.
Para além destas opções, temos ainda a possibilidade de aceder ao
Microsoft Office Online para obter informações adicionais sobre a aplica-
ção.
A janela inicial do Access 2007 inclui uma colecção de modelos de base de
dados, na caixa do lado esquerdo. Os modelos fornecidos estão organiza-
dos por categorias e incluem: Negócios, Educação e Pessoais. Na zona
central da janela podemos aceder ao Microsoft Office Online e fazer o
download dos modelos novos mais recentes ou dos modelo revistos.
Na parte direita da janela são apresentadas as bases de dados recente-
mente utilizadas que estão acessíveis para arranque (figura II.4.1).
198 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.4.1 Área da janela INICIAR do Access onde são apresentadas as bases de dados
recentemente utilizadas

Temos também a possibilidade de criar uma nova base de dados.


Este botão possibilita a abertura de um ficheiro novo em branco
para começar a trabalhar, cria uma nova página Web, ou cria um ficheiro
de Access para o acesso a uma base de dados Microsoft SQL Server.

Para além da caixa de diálogo inicial que apresenta as referidas


alternativas de acesso a uma base de dados, também podemos,
em qualquer altura, aceder ao menu disponibilizado pelo BOTÃO
MICROSOFT OFFICE, onde temos os habituais comandos: NOVO e ABRIR
BASE DE DADOS.

Figura II.4.2 Opções para abrir uma base de dados através do BOTÃO MICROSOFT OFFICE

A nova janela INTRODUÇÃO AO ACCESS 2007 fornece acesso rápido à


nova experiência de começar a trabalhar com o Access, incluindo o
acesso a uma biblioteca de modelos de base de dados projectados
profissionalmente.

4.3 ALTERNATIVAS PARA A CRIAÇÃO DE UMA BASE DE DADOS

O Access 2007 fornece dois métodos para criar uma base de dados.
Podemos utilizar um modelo de base de dados para criar com uma única
II.4 CRIAÇÃO DE UMA BASE DE DADOS COM O MICROSOFT ACCESS 2007 199

operação as Tabelas, Formulários e Relatórios necessários para o tipo de


base de dados pretendida (esta é a forma mais fácil de começar a criar a
base de dados). Podemos também criar uma base de dados vazia e, em
seguida, adicionar Tabelas, Formulários, Relatórios e outros objectos (este
é o método mais flexível, mas requer ao utilizador a definição personali-
zada de cada elemento da base de dados).
Independentemente do método escolhido, é possível modificar e comple-
mentar a base de dados em qualquer altura, depois de esta ter sido criada.
Partindo do princípio que nos encontramos com o Access 2007 activo,
vamos executar as seguintes etapas para os dois métodos de criação de
uma base de dados.

4.3.1 Criar uma Base de Dados utilizando um Modelo

1. Clicamos num dos modelos disponíveis na janela INICIAR do Access


2007.
2. Na parte direita da mesma janela aparece uma área para introduzir-
mos o nome da base de dados.

Figura II.4.3 Área da janela INICIAR do Access onde devemos


inserir o nome da base de dados

3. Por omissão, a base de dados será armazenada na pasta “Os


Meus Documentos”. Se pretendermos outra localização para arma-
zenar a base de dados clicamos em .
4. Depois de digitar o nome da base de dados, pressionar o botão
no caso de Modelos do Microsoft Online ou , no
caso dos modelos locais.
200 BASES DE DADOS COM MICROSOFT ACCESS 2007

A base de dados está pronta a ser utilizada e o Access 2007 sugere já


a inserção de dados numa das suas tabelas, tal como é apresentado
na seguinte figura.

Figura II.4.4 Configuração da janela do Access depois de escolher a base de dados


baseada no modelo Lista de Contactos

Tal como outro ficheiro qualquer, o nome dos ficheiros do Access 2007
pode conter uma combinação de letras, espaços, números, parêntesis,
hífen (-) e sublinhado (_).

4.3.2 Criar uma Base de Dados vazia

1. Clique em BASE DE DADOS VAZIA na janela INICIAR do


Access 2007.
2. Na parte direita da mesma janela aparece uma área para introdu-
ção do nome da base de dados e da sua localização.

Figura II.4.5 Área da janela INICIAR do Access onde devemos


inserir o nome da base de dados
II.4 CRIAÇÃO DE UMA BASE DE DADOS COM O MICROSOFT ACCESS 2007 201

3. Depois de digitar o nome da base de dados pressionar o botão


.
A base de dados está pronta a ser desenvolvida e o Access sugere já a
criação da primeira tabela, tal como é apresentado na figura.

Figura II.4.6 Configuração da janela do Access depois do processo de criação da base de


dados

Uma vez criada a base de dados, a janela do Access apresenta agora uma
configuração diferente. Neste momento já temos no topo o friso e do lado
esquerdo o PAINEL DE NAVEGAÇÃO (ver capítulo 3. A Interface do Microsoft
Access 2007).

4.4 GRAVAR E ABRIR BASE DE DADOS DO ACCESS

Ao contrário de outras aplicações do Office, o Access 2007 não necessita


que façamos a gravação do nosso trabalho. A própria aplicação faz a gra-
vação automática de qualquer alteração detectada.
Quando criamos uma nova base de dados, o Access grava pela primeira
vez o ficheiro respectivo. Da mesma maneira, quando criamos uma nova
tabela ou outro objecto qualquer, o Access grava a nossa base de dados
de uma forma quase instantânea.

4.4.1 Gravar Bases de Dados num formato diferente

Se decidirmos gravar a nossa base de dados com um nome diferente,


numa localização diferente ou num formato antigo, podemos utilizar uma
das opções que nos oferece o comando GUARDAR COMO do BOTÃO
MICROSOFT OFFICE.
202 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.4.7 Opção para guardar uma bases de dados num formato diferente através do
BOTÃO MICROSOFT OFFICE

Se apenas seleccionarmos a opção GUARDAR COMO, a gravação será


feita sobre o objecto que estiver activo. Portanto, para gravar a base de
dados inteira escolher uma das opções do submenu que se encontra por
baixo de GUARDAR A BASE DE DADOS NOUTRO FORMATO.

4.4.2 Abrir uma Base de Dados

Depois de criarmos a nossa base de dados, é muito fácil abri-la mais tarde,
quer seja através de um duplo clique no nome do ficheiro quando recor-
remos ao WINDOWS EXPLORER, quer seja através do menu associado ao
BOTÃO MICROSOFT OFFICE.

Figura II.4.8 Opção de abertura de uma base de dados através do BOTÃO MICROSOFT
OFFICE

Quando abrimos uma base de dados é possível que apareça uma nova
barra na janela do Access 2007 (figura II.4.9). Essa barra apresenta um
aviso de segurança que nos informa que o Access não confia totalmente
na nossa base de dados, ou seja, o Access abre a base de dados em
II.4 CRIAÇÃO DE UMA BASE DE DADOS COM O MICROSOFT ACCESS 2007 203

modo de segurança prevenindo a mesma da execução de operações que


contenham algum risco.

Figura II.4.9 Barra que apresenta um aviso de segurança informando que o Access não
confia totalmente na nossa base de dados

Entretanto, se quisermos retirar esta barra da nossa janela, podemos


clicar no botão que se encontra na extremidade do lado direito.
II.5
Construção de Tabelas eficientes

Uma Base de Dados é consti-


tuída por grupos de campos
organizados em Tabelas. Por
sua vez, uma Tabela é uma
estrutura de dados que tem o
propósito de armazenar um
grupo específico de informação
organizada em registos e cam-
pos. Cada grupo de informação será armazenado na sua tabela específica,
sendo possível estabelecer, entre as mesmas, relações que facilitem a
compreensão e utilização dos seus respectivos dados.
Conforme referimos no capítulo 4 da I Parte deste livro, o planeamento de
uma base de dados começa precisamente pela definição e estruturação de
um conjunto de Tabelas. Por conseguinte, este processo poderá condicio-
nar o sucesso da aplicação, pois os restantes objectos como consultas,
formulários ou relatórios assentam em tabelas pré-definidas.

5.1 OPÇÕES PARA A CRIAÇÃO DE UMA TABELA

O Access 2007 disponibiliza um conjunto de opções para a criação de uma


nova tabela. Antes de iniciarmos este procedimento temos de considerar
os diferentes modos de criação, bem como as particularidades associadas
a cada um.
Para criar uma tabela no Access devemos partir do separador CRIAR do
friso. Depois de activado este separador, surge uma área com quatro bo-
tões que possibilitam as seguintes opções de criação de tabelas:

• TABELA − a criação da tabela é feita a partir da inserção de um con-


junto de dados, sendo estes configurados automaticamente.
206 BASES DE DADOS COM MICROSOFT ACCESS 2007

• MODELOS DE TABELA − a criação da tabela é feita com base em mo-


delos predefinidos.

• LISTAS DO SHAREPOINT − cria listas para o site do Sharepoint.

• ESTRUTURA DA TABELA − a criação da tabela é feita totalmente pelo


utilizador, indicando os campos e suas propriedades.

5.2 CRIAÇÃO DE UMA TABELA COM BASE NUM MODELO


PREDEFINIDO

Quando criamos uma tabela ela está vazia, como seria de esperar. A
forma mais fácil de criar uma tabela é através de MODELOS DE TABELA,
onde podemos escolher tipos específicos de tabelas e os seus respectivos
campos. O Access 2007 oferece algumas opções como: contactos, tarefas,
problemas, eventos e activos. Mas como podemos constatar, existe um
conjunto limitado de temas que podem ser utilizados.
Para criar uma tabela no Access com recurso a esta
opção devemos partir do separador CRIAR do friso e
posteriormente premir o botão MODELOS DE TABELA. Posteriormente, esco-
lhemos o tema desejado a partir do seguinte menu.

Figura II.5.1 Menu que possibilita a escolha dos diversos modelos de tabelas

Se não encontrarmos os formatos e a configuração desejada para a cria-


ção de uma tabela, então é inevitável o recurso à criação de uma tabela
com as opções TABELA ou ESTRUTURA DA TABELA.

5.3 CRIAÇÃO DE UMA TABELA POR INSERÇÃO DE DADOS

Uma opção bastante válida para utilizadores com poucos conhecimentos


de Access é a de recorrerem ao modo de criação de tabelas por inserção
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 207

de dados. Este processo possibilita a inserção de um conjunto de dados


que serão interpretados pelo Access quando a tabela for gravada. Nessa
altura, a atribuição do tipo de dados em cada coluna da tabela é feita
automaticamente respeitando os dados inseridos. No entanto, será sempre
possível fazer, a posteriori, alterações à estrutura da tabela de forma a
adequá-la às nossas necessidades.
Para criar esta tabela devemos partir do separador CRIAR
do friso e posteriormente premir o botão TABELA.

Figura II.5.2 Exemplo da criação de uma tabela através da Inserção de dados

Depois de concluída a inserção dos dados, devemos fechar a janela cli-


cando no botão e, em seguida, gravar a tabela. Com este procedimento
será feita automaticamente a configuração da estrutura da tabela e dos
respectivos campos.

5.4 CRIAÇÃO DE UMA TABELA NA VISTA DE ESTRUTURA

Embora os dois processos anteriormente descritos tenham a sua utilidade,


o modo de criação de tabelas mais utilizado é o modo ESTRUTURA DA
TABELA, pois é o que nos possibilita uma maior liberdade de configuração.
Para criar uma tabela no Access utilizando este
método, devemos partir do separador CRIAR do friso e,
em seguida, premir o botão ESTRUTURA DA TABELA.
Como podemos verificar na figura II.5.3, deparamos com a janela de DEFI-
NIÇÃO DA ESTRUTURA DA TABELA, que está dividida em duas partes. Na par-
te superior, o utilizador deverá indicar o nome de cada campo da tabela, o
respectivo tipo e, opcionalmente, uma
descrição do significado do campo. Na parte
inferior indicam-se outras propriedades que
complementam a caracterização do campo.
Figura II.5.3 Definição da estrutura da tabela
208 BASES DE DADOS COM MICROSOFT ACCESS 2007

5.4.1 Escolher tipos de dados

Na coluna NOME DO CAMPO digitamos o nome que pretendemos dar a cada


campo da tabela (o Access permite uma grande flexibilidade na atribuição
do nome, cujo comprimento poderá ter no máximo 64 caracteres). Depois
de teclarmos ENTER ou movimentarmos o cursor para a direita, entramos
na coluna TIPO DE DADOS. Na tabela seguinte, mostramos os vários tipos
de dados disponibilizados pelo Access.

Tipo de dados Significado Tamanho

Texto Caracteres Alfa numéricos Até 255 caracteres

Memo Caracteres Alfa numéricos (normalmente usado para Até 64.000 bytes
comentários, observações ou explicações detalhadas)

Número Valores numéricos (inteiros ou fraccionários) 1, 2, 4, ou 8 bytes

Data/Hora Datas e horas em diferentes formatos 8 bytes

Moeda Valores monetários 8 bytes

Numeração Valor numérico definido automaticamente quando é 4 bytes


Automática adicionado um registo

Sim/Não Valores booleanos (utilizado para campos que só 1 bit


podem ter uma de duas opções)

Objecto OLE Objectos OLE, gráficos e outros dados binários Até um gigabyte

Hiperligação Alfanumérico (utilizado para armazenar endereços que Cada uma das 3
acedam a um ficheiro ou página Web) partes pode ter até
2.048 caracteres

Anexo Um ou mais ficheiros separados. O conteúdo destes


ficheiros é copiado para a base de dados

Assistente Cria um campo que permite escolher um valor de Normalmente 4 bytes


de pesquisa outra tabela ou de uma lista de valores utilizando uma
caixa de combinação

Figura II.5.4 Tipos de dados que podem ser utilizados na definição de um campo

Quando criamos um campo, ele assume automaticamente o tipo de dados


Texto. Se quisermos que o tipo de dados seja outro, podemos defini-lo
através do botão de listagem, que é mostrado à direita do tipo do campo.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 209

5.4.2 Propriedades dos campos

Tal como os tamanhos dos campos, as suas restantes propriedades são


definidas na parte inferior da janela de DEFINIÇÃO DA ESTRUTURA DA TABELA.
Todos os campos possuem propriedades, sendo algumas comuns e outras
específicas.
Com a utilização destas propriedades podemos controlar a aparência dos
dados, prevenir inserções incorrectas, especificar valores por omissão,
entre outras opções. A tabela seguinte mostra-nos todas as propriedades
dos campos e as suas funções:

Propriedade Função

Tamanho do Campo Ajusta o tamanho de um campo tipo Texto, ou limita o tamanho de


valores admissíveis no campo tipo Número.

Formatar Mostra datas e números num certo formato de visualização, como o


formato Inteiro Longo, Data ou Moeda.

Casas Decimais Mostra um certo número de casas a seguir ao ponto decimal, quando
é usado o formato de tipo Número ou Moeda.

Máscara de Permite definir uma máscara de regras para a introdução dos dados.
Introdução
Legenda Especifica a etiqueta que irá ter aquele campo, nos formulários ou
relatórios.

Valor Predefinido Define um certo valor para um campo, na inserção de um novo registo.

Regra de Validação Limita dados inseridos num campo, para valores que conhecem uma
certa exigência.

Texto de Validação Apresenta uma mensagem no ecrã, quando a regra de validação é


infringida.

Necessário Exige que este campo tenha que ter informação.

Permitir Permitir (ou não) que o conteúdo de um campo tipo Texto ou Memo
Comprimento Zero seja “zero”

Indexado Determinar se o campo está indexado. Permite que as pesquisas


efectuadas ao conteúdo do campo sejam mais rápidas.

Compressão Unicode Determinar se o conteúdo do campo pode (ou não) ser comprimido
através do standard unicode

Modo IME Definir a tipologia e o contexto de inserção de caracteres asiáticos


através do teclado “normal”.

Figura II.5.5 Propriedades que podem ser associadas aos campos de uma tabela
210 BASES DE DADOS COM MICROSOFT ACCESS 2007

Como definir as propriedades de um campo numa tabela:


Abrir a tabela e, em seguida, seleccionar o botão VISTA do
separador BASE do friso.
1. Escolher o campo para o qual se desejam definir as propriedades.
2. Para escolher as várias opções de cada propriedade devemos pre-
mir com rato na seta invertida, que se situa à direita de cada propri-
edade.
3. Premir o rato na opção desejada.

4. No final, escolher a opção GUARDAR para gravar toda a tabela


incluindo as propriedades dos seus campos.

Ajustar o tamanho dos campos


Podemos ajustar o tamanho dos campos de tipo Texto ou Número, selec-
cionando a propriedade TAMANHO DO CAMPO.
Para campos com dados tipo Texto, podemos definir o número máximo de
caracteres que pode ter o campo. Para os campos tipo Número, podemos
definir o tipo de valores que pode conter o campo, para além das casas
decimais. Por omissão, o Access define a propriedade TAMANHO DO CAMPO
como Inteiro Longo. No entanto, poderemos escolher outro tipo de for-
mato numérico com base nas seguintes opções:

Tipo Numérico Extensão Casas Decimais Bytes

Byte 0 até 255 Nenhuma 1

Inteiro -32.768 até 32.767 Nenhuma 2

Inteiro Longo -2.147.483.648 até 2.147.483.647 Nenhuma 4

38 38
Simples -3,4*10 até 3,4*10 Até 7 4
308 308
Duplo -1,797*10 até 1,797*10 Até 15 8

Figura II.5.6 Tipos de dados numéricos


II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 211

Formato Número e propriedade de casas decimais


Se não se especificar um formato para os dados numéricos, o Access
mostra números com o seu aspecto mais simples. Contudo, o Access
apresenta um conjunto de formatos pré-definidos que se adequam às dife-
rentes utilizações. A tabela seguinte mostra os formatos disponíveis para
os campos com o tipo de dados Número e o modo como são visualizados.

Formato Número Modo de visualização


Número Geral 1234,5 1234,5
Moeda 1234,5 1234,50 €
Euro 1234,5 1234,50 €
Fixo 1234,5 1235
Padrão 1234,5 1234,50
Percentagem 0,824 82,40%
Científico 1234,5 1,23E+03

Figura II.5.7 Tipos de formatos para dados numéricos

Formato Data/Hora
A tabela seguinte mostra os formatos disponíveis para campos com dados
de tipo Data/Hora e a forma como são visualizados no Formulário ou na
Folha de Dados.
Formato Modo de visualização

Data Geral 26-11-05 16:30:00

Data por Extenso Domingo, 26 de Novembro de 2005

Data Normal 26/Nov/05

Data Abreviada 26-11-2005

Hora Completa 20:36:23

Hora Normal 8:36 PM

Hora Abreviada 20:36

Figura II.5.8 Tipos de formatos para datas e horas


212 BASES DE DADOS COM MICROSOFT ACCESS 2007

Formato Sim/Não
Para campos com dados deste tipo, o Access define por omissão o for-
mato como Sim/Não, apesar de existirem ainda o formato Verdadei-
ro/Falso.

Máscara de Introdução
Se desejarmos ter um campo com uma estrutura diferente de todos os
outros e que facilite a inserção de dados, teremos que utilizar a proprie-
dade MÁSCARAS DE INTRODUÇÃO. Esta funcionalidade facilitaria, por exem-
plo, a inserção de dados no campo que regista um número de telefone
específico de um país, ou no campo que regista a matrícula de um auto-
móvel.
Apresentamos, na seguinte tabela, um conjunto de definições de MÁSCA-
RAS DE INTRODUÇÃO e respectivos valores:

Máscaras de introdução Exemplo

(000) 000-0000 (206) 555-0248

(000) AAA-AAAA (206) 555-TELE

000-00-0000 539-88-3736

00000-9999 98115-3007

>L?????????????? MARIA

ISBN 0-&&&&&&&&&-0 ISBN 0-13-964262-5

>LL00000-0000 DB51392-0493

Figura II.5.9 Exemplos de Máscaras de Introdução

Para facilitar a criação de uma máscara de introdução num campo de


uma tabela, o Access disponibiliza-nos um conjunto de máscaras tipo
que estão acessíveis no assistente MÁSCARAS DE INTRODUÇÃO. Este
assistente poderá ser accionado clicando no botão direito do rato e, em
seguida, na opção COMPILAR que aparece no menu rápido.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 213

Em alternativa podemos premir botão


CONSTRUTOR do separador ESTRUTURA do friso.

Figura II.5.10 Janela do assistente de Máscaras de Introdução

Usar Valores por omissão


Se desejarmos que um determinado campo tenha um valor por omissão,
seleccionamos a propriedade VALOR PREDEFINIDO e inserimos o valor que
o campo deverá apresentar sempre que inserimos um novo registo na
tabela.
Por exemplo, caso queiramos que o valor por omissão da data de uma
venda seja a data actual, inserimos, na propriedade, a expressão
=Data(), tal como se apresenta na seguinte figura.

Figura II.5.11 Exemplo da utilização da propriedade VALOR PREDEFINIDO


214 BASES DE DADOS COM MICROSOFT ACCESS 2007

Inserção de dados requerida


Todos os registos necessitam de um conjunto mínimo de informação para
fazerem sentido. Contudo, sem a nossa ajuda, o Access não distingue a
informação crítica dos simples detalhes. Por esta razão, todos os campos
de uma tabela são opcionais (excepto a chave primária).
Se desejarmos que a inserção de dados num determinado campo seja
obrigatória, seleccionamos a propriedade NECESSÁRIO desse mesmo cam-
po, passando-a para Sim. O valor por omissão desta propriedade é Não,
ou seja, não é obrigatória qualquer inserção de informação neste campo.

Valores nulos ou espaços em branco


Relacionada com a propriedade NECESSÁRIO, os campos com o tipo de
dados Texto ou Memo têm a propriedade PERMITIR COMPRIMENTO ZERO.
Esta propriedade determina que um campo pode apresentar um conteúdo
sem quaisquer caracteres.

Regras de validação para limitar os valores num campo


Para além do próprio tipo de dados, que já é uma regra de validação,
temos também a propriedade REGRA DE VALIDAÇÃO. Essa validação con-
siste numa regra que pode ser restrita a uma palavra, no caso de campos
do tipo Texto ou maior que um valor em caso de Número. Na tabela
seguinte apresentamos alguns exemplos de expressões que podem ser
utilizadas como regras de validação.

Regra de Validação Definição dessa regra

<>0 Valor diferente de zero

0 ou >100 Valor que tem que ser zero ou maior que 100

Como “C???” Valor com 4 caracteres que comece por C

<#1/1/99# Data inferior a 1999

>#1/1/98# e <#1/1/01# Datas entre 1998 e 2000

Figura II.5.12 Exemplos de regras de validação


II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 215

Criação de indexações
Para facilitar a procura de um registo numa tabela podemos indexar um
campo. O campo a ser indexado deve ser de pequeno tamanho e de prefe-
rência de simples memorização para que a procura de registos numa tabe-
la seja feita da forma mais rápida possível. As opções associadas a esta
propriedade são apresentadas na seguinte tabela.

Propriedade de indexação Significado

Não Não cria uma indexação nesse campo


(ou apaga uma existente)

Sim (Duplicação Autorizada) Criar uma indexação nesse campo

Sim (Duplicação Não Autorizada) Criar uma única indexação nesse campo

Figura II.5.13 Opções de indexação

A indexação sem duplicados (Sim (Duplicação Não Autorizada))


deve ser utilizada sempre que se pretende impossibilitar a inserção nesse
campo de um conjunto de dados que já exista noutro registo. Por exemplo,
o campo “Nome do Autor” poderá ser sujeito a esta propriedade pois
deverá apresentar sempre valores diferentes.
Se desejarmos visualizar ou editar indexações, podemos abrir a
janela ÍNDICES na VISTA DE ESTRUTURA da tabela. Esta janela
poderá ser acedida através do botão ÍNDICES, disponível no separador
ESTRUTURA do friso.

Figura II.5.14 Janela para criação de índices


216 BASES DE DADOS COM MICROSOFT ACCESS 2007

Compressão Unicode
Determina se o conteúdo do campo (texto ou memo) pode ou não ser
comprimido através do Standard Unicode1. Assim, poderá ser feita a cor-
recta apresentação de documentos, independentemente da linguagem em
que estes foram escritos.

Listas de Pesquisa
No âmbito do processo de criação de tabelas é possível desde logo criar
listas de pesquisa que permitem a selecção de informação existente na
base de dados, em vez da sua constante digitação. Com efeito, este meca-
nismo providencia uma lista de possíveis valores para uma coluna.
Vamos supor que se pretende evitar que o utilizador digite os códigos das
Nacionalidades, quando estiver a registar um novo Autor. Neste caso de-
veríamos:
1. Abrir a tabela AUTORES, com a VISTA DE ESTRUTURA.
2. Seleccionar o campo “CodNacionalidade”, cujos valores irão ser
disponibilizados numa CAIXA DE COMBINAÇÃO.
3. Seleccionar o separador PESQUISA.

Figura II.5.15 Propriedades do separador PESQUISA

1
Padrão internacional de codificação adoptado no Office.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 217

4. Alterar a propriedade Mostrar controlo para CAIXA DE COMBI-


NAÇÃO e, na propriedade Origem da linha, indicar o nome da ta-
bela que contém os códigos das Nacionalidades.

Durante a inserção dos registos na tabela do exemplo o conteúdo do


campo “CodNacionalidade” já poderia ser seleccionado e não digitado, tal
como mostra a figura II.5.16.

Figura II.5.16 Exemplo da utilização de uma Lista de Pesquisa na vista FOLHA DE DADOS

O segredo para uma boa lista de pesquisa é referenciar dois tipos de


informação. Normalmente a chave primária (no exemplo anterior o
código da nacionalidade) e um campo mais descritivo (neste caso, a
nacionalidade).

5.4.3 Campo chave primária

A definição da estrutura de uma tabela pode ainda incluir a indicação de


um campo como chave primária. Este campo é utilizado para podermos
mais facilmente identificar de modo único cada registo de uma tabela. Esta
chave permite ao Access manter a tabela sempre ordenada pelo campo
escolhido e possibilita o relacionamento entre tabelas. Os conceitos e defi-
nições associados às chaves primárias foram abordados em 4.2 na Parte I
deste livro.

Para fácil identificação e procura de dados numa tabela, o campo chave


deve ter um tamanho pequeno, como por exemplo um código
identificador. Um campo como o código do Autor poderia ser utilizado
como chave primária, uma vez que cada Autor tem um código exclusivo
que não será igual ao de outro Autor.
218 BASES DE DADOS COM MICROSOFT ACCESS 2007

Para definir um campo-chave:


1. Seleccionamos o campo ou campos que irão ser chave primária.
2. No separador ESTRUTURA do friso, escolhemos a
opção CHAVE PRIMÁRIA

Campos-chave múltiplos
Se uma tabela não contém apenas um campo com valores únicos, será
necessário ter mais do que um campo como campo chave primária. Pode-
mos ter tantos atributos numa chave-primária quantos os necessários. O
modo de selecção de campos-chave múltiplos é idêntico ao modo de se-
lecção de um único campo chave primária.

5.5 RELACIONAMENTOS ENTRE TABELAS

Para uma base de dados funcionar de forma eficiente, as suas tabelas


devem estar devidamente relacionadas, caso contrário não haverá um
fluxo de dados coerente e lógico, provocando normalmente problemas de
redundâncias e de inconsistência de dados. Adicionalmente, este processo
fornece uma plataforma de navegação muito prática que facilita o acesso a
informações relacionadas de várias tabelas.
Além de prevenir o aparecimento dos problemas referidos, o Access usa
os relacionamentos para:

• Criar ligações entre novas consultas;


• Mostrar registos relacionados num SUBFORMULÁRIO ou num SUB-
RELATÓRIO;

• Reforçar a integridade referencial para proteger o relacionamento


entre as tabelas quando se inserem, alteram ou eliminam registos.

É possível relacionar tabelas especificando um ou mais campos que


contêm o mesmo valor nos registos relacionados. Esses campos ligados
têm normalmente o mesmo nome em cada tabela. Em muitos casos
poderemos relacionar a chave primária de uma tabela com um campo
ligado noutra tabela.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 219

5.5.1 Criação de relacionamentos

Para criar um relacionamento entre dois campos de duas


tabelas diferentes começamos por abrir a janela
RELAÇÕES clicando no botão RELAÇÕES que se encontra
no separador FERRAMENTAS DA BASE DE DADOS do friso. Posteriormente,
devemos seleccionar as tabelas que serão alvo dos relacionamentos e,
finalmente, definimos as relações com base nos seguintes procedimentos:
1. Clicamos sobre o campo de uma das tabelas que vai entrar nesse
relacionamento (normalmente deverá ser uma chave primária ou
uma chave estrangeira).
2. Mantendo o botão pressionado, arrastamos o rato até ao campo
correspondente na outra tabela.
Este procedimento dá origem ao aparecimento da janela de relaciona-
mentos que apresenta os nomes das tabelas, os campos que estabelecem
o relacionamento, bem como o tipo de associação em causa.

Figura II.5.17 Janela para a configuração de relacionamentos entre tabelas

Podemos simplesmente seleccionar o botão OK para concluir o processo


de definição de um relacionamento entre tabelas. No entanto, na maioria
dos casos, será aconselhável assinalar as opções relacionadas com a
INTEGRIDADE REFERENCIAL. Como vamos ver mais à frente, esta opção
obriga os dados dos campos em causa a respeitarem as regras de integri-
dade.
Esta acção cria o relacionamento entre duas tabelas, estabelecendo uma
ligação entre os campos seleccionados, tal como mostra a figura II.5.18. O
Access usa uma linha para ligar os campos relacionados e nas extremida-
des coloca o 1 e o infinito (∞) para atribuir o tipo de relacionamento de um-
-para-muitos.
220 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.5.18 Exemplo gráfico do relacionamento entre duas tabelas

É indiferente seleccionar um campo de uma tabela e arrastá-lo para o


campo correspondente na outra tabela, ou fazer esta operação no
sentido inverso, pois o Access cria exactamente o mesmo relaciona-
mento. O Access sabe identificar correctamente o tipo de relaciona-
mento, em função do tipo de campos escolhidos (chave primária de uma
tabela e chave estrangeira de outra tabela).

5.5.2 Integridade Referencial

Em alguns relacionamentos o Access pode reforçar a integridade referen-


cial, quando podemos inserir ou apagar registos em tabelas relacionadas.
A integridade referencial ajuda a garantir que os relacionamentos entre os
registos são válidos e que nós não apagamos acidentalmente dados rela-
cionados.
O Access pode reforçar a integridade referencial quando as condições são
conhecidas:
• O campo relacionado pela primeira tabela é chave primária ou tem
uma única indexação.

• Os campos relacionados têm o mesmo tipo de dados.


• Ambas as tabelas pertencem à mesma base de dados do Access
(se as tabelas estão ligadas, elas têm que pertencer à mesma base
de dados do Access).

Na janela da figura II.5.17 podemos assinalar as opções relacionadas com


a integridade referencial. No entanto, só assinalando a primeira opção po-
deremos assinalar as outras duas. As opções são as seguintes:
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 221

• IMPOR INTEGRIDADE REFERENCIAL


Não é permitido introduzir um valor de um registo num campo que é
chave estrangeira, se esse valor não existir num registo da tabela
onde aquele campo é chave primária.
• PROPAGAR ACTUALIZAÇÃO DOS CAMPOS RELACIONADOS
A alteração de um valor de um registo num campo que é chave
primária implica a alteração de todas as ocorrências, numa tabela
relacionada, dos registos que apresentam esse mesmo valor no
campo correspondente (chave estrangeira).

• PROPAGAR ELIMINAÇÃO DOS REGISTOS RELACIONADOS


A eliminação de um valor de um registo num campo que é chave
primária implica a eliminação de todas as ocorrências, numa tabela
relacionada, dos registos que apresentam esse mesmo valor no
campo correspondente (chave estrangeira).

5.5.3 Tipos de relacionamentos

Para relacionamentos em que a integridade referencial é reforçada existe a


possibilidade de estabelecer um de dois tipos de relacionamento: “um-
-para-muitos” e “um-para-um”.
No caso do tipo de relacionamento ser de “um-para-muitos”, cada registo
na primeira tabela pode ser associado com muitos registos na tabela rela-
cionada, ou seja, cada valor do campo chave primária aparece muitas ve-
zes na tabela relacionada.
No relacionamento de “um-para-um” cada registo da primeira tabela pode
ser associado apenas com um registo da tabela relacionada. Na maioria
dos casos ambas as tabelas estão ligadas pelo campo chave primária.
Este tipo de relacionamento não é muito usual, utilizando-se normalmente
para dividir tabelas com muitos campos em tabelas mais pequenas.

Muitos-para-muitos em campos de múltiplos valores


Conforme já referimos no capítulo 2, esta é uma nova funcionalidade do
Access 2007. Como o próprio nome sugere, este é um campo que pode
guardar vários valores de uma só vez. Para configurar um campo com
222 BASES DE DADOS COM MICROSOFT ACCESS 2007

estas características teremos de recorrer às suas propriedades, mais con-


cretamente à LISTA DE PESQUISA (ver ponto 5.4.2). Nesta secção, selec-
cionamos a tabela que contém os valores a serem inseridos neste campo e
accionamos a propriedade PERMITIR VÁRIOS VALORES (alterar o NÃO para
SIM).

Figura II.5.19 Exemplo da utilização de campos de múltiplos valores na vista FOLHA DE


DADOS

No exemplo ilustrado na figura II.5.19 a tabela Livros tem um campo


denominado Autor que nos permite inserir simultaneamente vários códigos
de autor.

Campos de múltiplos valores estarão apenas disponíveis nas bases de


dados com o novo formato .accdb. Se usarmos bases de dados com
formato .mdb (uma base de dados criada com Access 2003 que ainda
não foi convertida) não poderemos tirar partido desta funcionalidade.

5.5.4 Alteração da estrutura de relacionamentos

Caso seja necessário, podemos efectuar alterações numa


estrutura de relacionamentos já criada e guardada. Para
tal, devemos começar por aceder à janela de relaciona-
mentos, clicando sobre o botão RELAÇÕES no separador FERRAMENTAS DA
BASE DE DADOS do friso.
Para alterar as opções de INTEGRIDADE REFERENCIAL deve-
remos seleccionar o relacionamento respectivo e posterior-
mente seleccionar o botão EDITAR RELAÇÕES.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 223

Para eliminar uma linha de relacionamento entre duas tabelas basta


clicar sobre ela uma vez (o que provoca a sua selecção) e, em seguida,
clicar ELIMINAR.
Para visualizar os relacionamentos da nossa base de dados devemos
escolher a opção TODAS AS RELAÇÕES no separador FER-
RAMENTAS DA BASE DE DADOS. Para visualizar um relacionamento em parti-
cular devemos escolher a opção RELAÇÕES DIRECTAS no
mesmo separador.

Para alterar um relacionamento já existente devemos premir duas


vezes com o rato na linha do relacionamento que queremos editar. Em
seguida, devemos definir as opções de relacionamento e, finalmente,
premir OK.

5.5.5 Navegação nos relacionamentos

Tal como já foi referido, a utilidade da imposição de relacionamentos entre


tabelas não se resume à prevenção de erros na gestão da base de dados.
Os relacionamentos são úteis também para podermos navegar entre da-
dos relacionados.
Com efeito, quando estamos a visualizar na FOLHA DE DADOS uma tabela
que está envolvida numa qualquer relação poderemos consultar os regis-
tos relacionados clicando na CAIXA ADIÇÃO que se encontra na extremidade
esquerda de cada linha.

Figura II.5.20 Utilização da CAIXA ADIÇÃO na navegação entre relacionamentos


224 BASES DE DADOS COM MICROSOFT ACCESS 2007

Ao seleccionarmos a CAIXA ADIÇÃO aparecerá uma pequena FOLHA DE


DADOS que nos possibilitará a consulta e edição da informação relacio-
nada. De facto, poderemos utilizar esta pequena FOLHA DE DADOS tal como
utilizamos a FOLHA DE DADOS original, o resultado das nossas acções será
exactamente o mesmo.

Figura II.5.21 Exemplo da utilização da CAIXA ADIÇÃO na navegação entre relacionamentos

Uma tabela poderá estar ligada a mais do que uma tabela. Neste caso, o
Access permite proceder à escolha da tabela que será utilizada quando se-
leccionamos a CAIXA ADIÇÃO.
Para o efeito, o Access apresentará uma caixa com a lista de todas as ta-
belas existentes na base de dados.

Figura II.5.22 Janela com a lista de todas as tabelas existentes na base de dados

Podemos abrir quantas FOLHA DE DADOS desejarmos e se houver


encadeamentos nos relacionamentos entre tabelas (figura II.5.23) essa
informação será também apresentada. Esta complexidade, que normal-
mente aparece em bases de dados mais elaboradas, permite fazer aqui-
lo que é conhecido por DrillDown da informação.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 225

Figura II.5.23 Exemplo da visualização de encadeamentos nos relacionamentos entre


tabelas

5.6 MANIPULAÇÃO DA FOLHA DE DADOS: FORMATAR,


ORDENAR, FILTRAR E PROCURAR

Quando estamos na área de construção de tabelas podemos apenas alte-


rar o nome dos campos, as suas características e o seu tamanho. Por sua
vez, com a FOLHA DE DADOS podemos inserir a informação contida nesses
campos, ou seja, podemos inserir os registos.
Para aceder a esta área basta simplesmente fazer duplo clique no nome
da tabela desejada no PAINEL DE NAVEGAÇÃO.
Contudo, se estivermos a trabalhar na construção de uma tabela e
pretendermos aceder à sua FOLHA DE DADOS, devemos seleccionar
o botão VISTA apresentado na imagem.
Depois de activarmos o modo FOLHA DE DADOS, vamos deparar com uma
tabela bidimensional com o aspecto semelhante ao apresentado na figura
II.5.24, que possibilita a manipulação de dados relativos aos campos (colu-
nas) e aos registos (linhas).
226 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.5.24 Tabela Livros na vista FOLHA DE DADOS

5.6.1 Navegação na Folha de Dados

À medida que inserimos os registos na tabela surge no lado esquerdo da


janela no modo FOLHA DE DADOS um conjunto de símbolos informativos, cu-
jo significado é apresentado na tabela seguinte.
Símbolo Significado

Registo em edição

Fim do ficheiro / novo registo

Registo corrente

Figura II.5.25 Símbolos informativos na vista FOLHA DE DADOS

Na parte inferior da janela do modo FOLHA DE DADOS surge também um


conjunto de símbolos que permitem a movimentação entre os registos do
ficheiro. O seu significado é apresentado na tabela seguinte.
Símbolo Significado

Posicionamento imediato no primeiro registo

Avança registo a registo na direcção do primeiro

Avança registo a registo na direcção do último

Posicionamento imediato no último registo

Permite, por digitação, posicionar num registo específico

Figura II.5.26 Símbolos para a movimentação de registos na vista FOLHA DE DADOS


II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 227

Em alternativa, também podemos accionar os mesmos botões


de navegação que estão disponíveis na secção LOCALIZAR do
friso.

5.6.2 Formatação da FOLHA DE DADOS

O Access permite-nos fazer a formatação da FOLHA DE DADOS com dife-


rentes cores e formatos de letras. Embora estas alterações não condicio-
nem a forma de trabalhar destas folhas de dados, em determinados pro-
jectos será importante utilizar estas formatações para realçar determinadas
informações.
A maior parte das opções de formatação da folha de dados encontra-se na
secção TIPO DE LETRA do friso (separador BASE).

Alterar o tipo Mostra linhas


de letra de grelha

Alterar a cor Alterar a cor


do texto do fundo

Figura II.5.27 Configuração da secção TIPO DE LETRA usada para a Formatação da FOLHA
DE DADOS

5.6.3 Rearranjar Colunas

Os campos na FOLHA DE DADOS podem ser movidos por forma a apresen-


tarem uma disposição diferente da original e que facilite o processo de in-
serção de dados.
228 BASES DE DADOS COM MICROSOFT ACCESS 2007

Naturalmente, podemos efectuar este procedimento sem redesenhar a


tabela. Basta simplesmente arrastar a coluna para a sua posição final, tal
como se apresenta na figura seguinte.

Figura II.5.28 Ex. do processo de movimentação de uma coluna na vista FOLHA DE DADOS

Notar que as alterações efectuadas na disposição das tabelas não têm


repercussão nos dados armazenados na base de dados.

5.6.4 Colunas escondidas

Por vezes as tabelas têm tantas colunas que se torna impossível visualizá-
-las todas ao mesmo tempo. Obviamente que será possível visualizar toda
a informação recorrendo às barras de deslocamento horizontal. Contudo,
em algumas situações podemos não necessitar de ver todos os campos de
informação de uma vez. Neste caso, podemos ocultar temporariamente
algumas colunas da tabela visualizando apenas as colunas mais importan-
tes num dado momento.
Para esconder uma coluna de uma tabela seleccionamos o cabeçalho da
mesma e posteriormente clicamos no botão direito do rato. No menu de
contexto que aparece no ecrã escolhemos a opção OCULTAR COLUNAS.
No mesmo menu também podemos esconder/mostrar um conjunto de
colunas de uma só vez, seleccionando a opção MOSTRAR COLUNAS. Neste
caso, a caixa de diálogo que aparece no ecrã permite seleccionar simulta-
neamente as colunas a esconder/mostrar.

Figura II.5.29 Janela do Menu Rápido usada para


esconder/mostrar um conjunto de colunas de uma só vez
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 229

5.6.5 Ordenação

A ordenação é um processo bastante útil quando trabalhamos com um


grande volume de dados. Normalmente os dados estando ordenados
apresentam-se de uma forma lógica e organizada que facilita a sua análise
e compreensão.
Para ordenar uma tabela por um determinado campo de informação basta
seleccionar o cabeçalho da coluna pretendida e clicar na lista descendente
na extremidade direita da coluna .
No menu que aparece no ecrã seleccionar alfabeticamente pela ordem
ascendente (ORDENAR DE A A Z) ou descendente (ORDENAR DE Z A A). No
caso de dados numéricos, ORDENAR DO MAIS PEQUENO AO MAIOR ou ORDE-
NAR DO MAIOR AO MAIS PEQUENO.

Figura II.5.30 Ordenação de dados na vista FOLHA DE DADOS através do menu rápido

Em alternativa, também podemos escolher os botões de


ordenação que estão disponíveis na secção ORDENAR E
FILTRAR do friso.

O botão permite retirar qualquer tipo de ordenação que tenha sido


feita e colocar os registos na sua disposição original.

5.6.6 Filtragem

Quando estamos a trabalhar com tabelas com dezenas ou centenas de


registos, o processo de pesquisa de informação pode-se tornar monótono
230 BASES DE DADOS COM MICROSOFT ACCESS 2007

e pouco produtivo. Frequentemente, precisamos aceder a informação de


forma selectiva e não global. Nestes casos, devemos partir a FOLHA DE
DADOS de uma forma que apenas a informação necessária seja apresen-
tada.
Para filtrar um conjunto de registos devemos definir uma ou mais condi-
ções que os mesmos devem respeitar para serem apresentados na FOLHA
DE DADOS.

Filtros rápidos
Os filtros rápidos permitem-nos escolher os valores que serão considera-
dos na condição de selecção que pretendemos implementar. Para aplicar o
filtro rápido devemos:
1. Escolher a coluna que contém os dados a seleccionar.
2. Clicar na caixa descendente na extremidade direita
do cabeçalho da coluna ou seleccionar o botão
FILTRO na secção ORDENAR E FILTRAR do friso.
3. Na lista que aparece no ecrã com os diferentes valores armazena-
dos na coluna retirar o visto em SELECCIONAR TUDO.
4. Seleccionar o valor ou valores que pretendemos incluir na filtragem.
No exemplo ilustrado na figura II.5.31, seleccionamos os livros da Colec-
ção 3 (Tecnologias). Como resultado, a FOLHA DE DADOS apresenta ape-
nas os registos com este código de colecção.

Figura II.5.31 Filtragem de dados na vista FOLHA DE DADOS através do menu rápido
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 231

Depois de executada a filtragem, a BARRA DE ESTADO apresenta um


botão que depois de seleccionado coloca a tabela na sua
disposição original. Em alternativa, podemos remover todos os filtros
activos numa coluna clicando na caixa descendente na extremidade
direita do cabeçalho da mesma e, finalmente, seleccionando LIMPAR
FILTRO.

Filtros por selecção


Os filtros por selecção permitem-nos seleccionar os dados existentes na
nossa tabela. Com efeito, a selecção de um dado valor é feita na própria
célula da tabela que pretendemos filtrar. Para aplicar o filtro por selecção,
devemos:
1. Procurar na tabela o valor a partir do qual pretendemos fazer a
filtragem.
2. Seleccionar o valor na sua própria célula.
3. Clicar no botão direito do rato.
4. Na lista que aparece no ecrã, seleccionar uma das opções de filtra-
gem.

No exemplo ilustrado na figura II.5.32 seleccionamos inicialmente o valor 3


(Colecção Tecnologias) e posteriormente seleccionamos a opção É IGUAL A
3. Como resultado a FOLHA DE DADOS apresenta apenas os registos com
este código de colecção.

Figura II.5.32 Filtragem por selecção na vista FOLHA DE DADOS através do menu rápido
232 BASES DE DADOS COM MICROSOFT ACCESS 2007

O mesmo procedimento poderá ser feito na secção


ORDENAR E FILTRAR do friso. Ao seleccionarmos o
botão SELECÇÃO deparamos com as mesmas opções
de filtragem.

Dependendo do tipo de dados seleccionado, podemos ter diferentes


opções de filtragem. Podemos também filtrar os registos de uma tabela
não só pelo valor integral de uma célula, mas também por um valor
parcial. Por exemplo, se tivermos o valor “Software Obrigatório” na
descrição de um campo da nossa tabela, podemos seleccionar apenas
“Software”. Possivelmente, o resultado da pesquisa será mais abran-
gente e serão apresentados novos livros com esta palavra.

Filtros por condição


Até agora, os filtros utilizados foram baseados em valores existentes nas
nossas tabelas. Contudo, sempre que quisermos executar selecções de
dados com base em valores específicos temos de recorrer a filtros mais
avançados, ou seja, temos de utilizar os filtros por condição.
Vamos supor que pretendemos seleccionar os livros vendidos depois de
01-01-2004. Através dos processos de filtragem anteriores apenas pode-
ríamos visualizar as vendas efectuadas nesta data, isto se elas existissem.
Com os filtros por condição o problema seria facilmente resolvido. Para
aplicar o filtro por condição, devemos:
1. Escolher a coluna que contém os dados a seleccionar.

2. Clicar na caixa descendente na extremidade direita


do cabeçalho da coluna ou seleccionar o botão
FILTRO na secção ORDENAR E FILTRAR do friso.
3. Na lista que aparece no ecrã, seleccionar FILTROS DE DATA.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 233

Figura II.5.33 Exemplo da utilização de Filtros de Data

4. Na caixa de diálogo que aparece no ecrã, digitar o valor que será


considerado na filtragem.

Figura II.5.34 Filtro personalizado com a introdução de uma data

5.6.7 Pesquisa

O Access também disponibiliza um mecanismo de pesquisa rápida que


percorre toda a FOLHA DE DADOS à procura de uma determinada informa-
ção. Embora o processo de filtragem nos ajude a encontrar um conjunto de
registos de uma tabela, a pesquisa será mais indicada quando queremos
encontrar um simples dado escondido num enorme volume de informação.
Além disso, ao contrário da filtragem que altera o aspecto da FOLHA DE
DADOS, a pesquisa mantém inalterada essa mesma FOLHA DE DADOS, ape-
nas assinalando a informação que procuramos.
A forma mais rápida de pesquisar uma determinada informação será digitar
a mesma na BARRA DE ESTADO tal como é apresentado na figura seguinte:
234 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.5.34 Pesquisa com a introdução de um valor

Se pretendemos fazer uma pesquisa mais elaborada, considerando outras


opções mais específicas, devemos seleccionar o botão LOCALIZAR
que se encontra na secção LOCALIZAR do friso.

Figura II.5.35 Pesquisa através da opção LOCALIZAR

5.6.8 Imprimir a Folha de Dados

Para imprimir uma FOLHA DE DADOS temos de aceder ao BOTÃO DO OFFICE.


No menu respectivo encontramos a opção IMPRIMIR, que disponibiliza três
opções adicionais:

• Impressão com a possibilidade de escolher e configurar a impres-


sora;

• Impressão imediata em que a FOLHA DE DADOS seleccionada será


enviada para a impressora sem possibilidades de alterações;

• Pré-visualização da impressão, que possibilita um conjunto completo


de configurações conhecidas de outras aplicações do Office.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 235

A figura seguinte apresenta a FOLHA DE DADOS referente à tabela Autores


no modo PRÉ-VISUALIZAR. Nesta figura, podemos confirmar que o friso
inclui um conjunto alargado de botões que facilitam o processo de configu-
ração das páginas antes de efectuarmos a impressão.

Figura II.5.36 FOLHA DE DADOS referente à tabela Autores no modo PRÉ-VISUALIZAR

5.7 IMPORTAÇÃO E EXPORTAÇÃO DE DADOS

O Access tem a grande vantagem de permitir o acesso a dados armaze-


nados noutros formatos, quer sejam de aplicações pertencentes ao Office,
quer sejam outros processadores de texto, folhas de cálculo ou Sistemas
de Gestão de Base de Dados.
O Access permite-nos obter dados a partir de uma fonte exterior (importar)
e gravar dados em ficheiros que podem ser abertos em outras aplicações
(exportar). Estas operações são accionadas a partir de comandos que se
encontram no separador DADOS EXTERNOS do friso.

Figura II.5.37 Configuração da secção DADOS EXTERNOS usada para a


Importação/Exportação de dados
236 BASES DE DADOS COM MICROSOFT ACCESS 2007

5.7.1 Importar dados

Para importar dados de outras aplicações devere-


mos accionar o botão correspondente ao tipo de
dados que pretendemos importar. Depois de feita esta primeira escolha,
será aberta uma caixa de diálogo na qual podemos indicar a localização e
o nome do ficheiro que contém os dados pretendidos. Para finalizar o pro-
cesso, devemos ainda seleccionar a opção para armazenamento na nossa
base de dados, tal como é apresentado na caixa seguinte.

Figura II.5.38 Caixa de diálogo para registar a localização e o nome do ficheiro que contém
os dados pretendidos

A segunda opção na caixa de diálogo em cima permite incluir na nossa


base de dados uma tabela proveniente de um ficheiro externo à base de
dados, mantendo a possibilidade dessa tabela ser actualizada fora da base
de dados e fazer com que essas actualizações sejam transmitidas para o
interior da mesma (com base nas técnicas de ligação de dados OLE – Ob-
ject Linking and Embeding).
No caso dos dados que se querem importar estarem numa base de dados,
surgirá uma nova janela onde poderemos escolher o objecto pretendido,
quer seja uma tabela, consulta ou relatório.

Figura II.5.39 Janela para escolher o objecto de uma


base de dados que pretendemos importar
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 237

Depois de realizarmos a importação ou ligação de uma tabela externa,


será conveniente que se identifiquem as suas propriedades, especialmente
o campo chave.

5.7.2 Exportar dados

Para exportar dados de uma tabela ou consulta do Access para uma outra
aplicação deveremos:
1. Abrir a base de dados que contém a tabela ou consulta que se de-
seja exportar;
2. Seleccionar a tabela ou consulta a exportar na BARRA DE NAVE-
GAÇÃO;

3. No separador DADOS EXTERNOS escolher o botão


que corresponda ao tipo de aplicação que arma-
zenará os dados a exportar (exemplo, EXCEL).
4. Na caixa de diálogo que se apresentará no ecrã indicar o local e o
nome ao ficheiro que irá ter os dados bem como o tipo de ficheiro
pretendido.

Figura II.5.40 Caixa de diálogo para registar a localização, nome e tipo do ficheiro que se
pretende exportar

5. Premir OK.
238 BASES DE DADOS COM MICROSOFT ACCESS 2007

O tipo de ficheiro definido na janela EXPORTAR caracteriza o tipo de


aplicação que irá receber os dados a exportar. As possibilidades de
escolha do tipo de ficheiro são as mesmas que poderão ser utilizadas no
processo de importação, nomeadamente uma tabela do Excel, um
ficheiro de texto, ou um ficheiro de dBASE ou Paradox, um documento
em HTML, etc.

5.8 EXERCÍCIO GUIADO

Criar a Base de Dados


A base de dados que iremos implementar para exemplificação das opera-
ções com o Access é a base de dados EDITORA cuja estrutura foi desen-
volvida na Parte I deste livro.
Depois de executar o Access deparamos com um conjunto de opções de
criação de base de dados. Para a criação da nossa base de dados, deve-
remos escolher a opção BASE DE DADOS VAZIA e posteriormente atribuir o
nome Editora.

Criar as Tabelas da Base de Dados


Comecemos por criar a tabela Autores composta pelos seguintes campos:
CódAutor, Nome, Morada, CódPostal, Telefone, Contribuinte e CódNacio-
nalidade.
Para criar esta tabela no Access devemos partir do
separador CRIAR do friso e posteriormente premir o
botão ESTRUTURA DA TABELA.

Inserir campos nas tabelas


No caso da tabela Autores, o primeiro campo vai ser designado por
CódAutor. Para este campo podemos optar pelo tipo de dados Numeração
Automática, uma vez que pretendemos estabelecer um código sequen-
cial diferente para cada Autor. O tamanho deste campo deverá ser Número
Inteiro Longo.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 239

Todos os restantes campos serão do tipo texto exceptuando o campo do


tipo numérico CódNacionalidade. Para os campos de tipo texto deve-
remos considerar um tamanho que se adeqúe à informação a registar no
campo respectivo. No final, a nossa tabela de Autores deverá apresentar a
estrutura de campos que é indicada na figura.

Figura II.5.41 Estrutura da tabela Autores

Introduzir a chave primária


A definição da estrutura de uma tabela deve ainda incluir a indicação de
uma chave primária. Como se sabe, a chave primária é o campo que tem a
função de identificar univocamente cada registo de uma tabela.
No caso da tabela Autores, a chave primária deverá ser
o campo CódAutor, uma vez que foi criado precisa-
mente para identificar de modo único cada registo. Assim sendo, devemos
seleccionar o campo CódAutor e, no separador ESTRUTURA do friso,
escolher a opção CHAVE PRIMÁRIA.

Definir as propriedades dos campos


Tal como os tamanhos dos campos, as suas restantes propriedades
devem ser definidas na parte inferior da janela VISTA DE ESTRUTURA. Essas
propriedades podem variar consoante a especificidade de cada campo.
Como exemplo, poderemos definir para o campo “Contribuinte” uma más-
cara de introdução que facilite e uniformize a entrada destes dados para
cada autor. Assim, na propriedade Máscaras de Introdução devere-
mos accionar o respectivo assistente, clicando no botão e posterior-
mente escolher uma máscara que se adeqúe a este campo.
240 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.5.42 Definição da propriedade Máscaras de Introdução para o campo


contribuinte

Partindo do princípio que a grande maioria dos autores desta editora são
portugueses, podemos definir para o campo “CódNacionalidade” uma pro-
priedade que introduza automaticamente o valor 1 sempre que se regista
um novo autor. Desta forma, deveremos introduzir na propriedade valor
predefinido o valor 1.

Definição das restantes tabelas


Seguindo os mesmos procedimentos já utilizados para a definição da
tabela Autores, vamos em seguida definir a configuração de cada uma das
restantes tabelas da nossa base de dados. Deveremos respeitar a estru-
tura da base de dados, que foi idealizada na primeira parte deste livro,
introduzindo os campos de cada tabela bem como as respectivas chaves
primárias.

Figura II.5.43 Estrutura das tabelas da base de dados Editora


II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 241

Definição de relacionamentos entre tabelas


Depois de definirmos a estrutura das tabelas, deveremos definir os relacio-
namentos existentes entre elas.
Para entrar no modo de definição de relacionamentos entre
tabelas, deveremos accionar o separador FERRAMENTAS DA
BASE DE DADOS que está disponível no friso. Em seguida, pressionamos o
botão RELAÇÕES. Este comando permite aceder à janela MOSTRAR TABELA,
onde podemos escolher as tabelas da nossa base de dados que serão
adicionadas à janela RELAÇÕES.

Figura II.5.44 Janela MOSTRAR TABELA usada para adicionar tabelas à janela RELAÇÕES

Vamos começar por introduzir na janela RELAÇÕES as tabelas Autores,


Autores/Livro e Livros. Nesta janela, a disposição das tabelas deverá ser
semelhante à apresentada na figura seguinte.

Figura II.5.45 Janela RELAÇÕES para estabelecer os relacionamentos entre as tabelas


Autores, Autores/Livro e Livros

Neste primeiro exemplo pretendemos estabelecer relacionamentos entre


as entidades Autores e Livros que apresentam uma cardinalidade M para
N, visto que um Autor pode editar vários Livros e um Livro pode ser escrito
por vários Autores. Para traduzir directamente este tipo de relacionamento
tivemos de criar uma terceira tabela, correspondente ao relacionamento
242 BASES DE DADOS COM MICROSOFT ACCESS 2007

existente entre as duas anteriores. Assim, passamos a ter dois relaciona-


mentos do tipo 1 para N.
Os dois relacionamentos que salvaguardam a situação anterior são os se-
guintes:
• Entre a tabela Autores e a tabela Autores/Livro, através do campo
comum a essas duas tabelas: CodAutor. O relacionamento é do
tipo 1 para N.
• Entre a tabela Livros e a tabela Autores/Livro, através do campo
comum a essas duas tabelas: ISBN. O relacionamento é do tipo 1
para N.

Na tabela Autores/Livro cada autor pode ser registado várias vezes e cada
livro também. Na figura II.5.46 podemos visualizar que o autor com o
código 70 escreveu dois livros diferentes (9728426658 e 9728426844).
Simultaneamente, o livro com o ISBN 9728426542 foi escrito por três auto-
res (66, 67 e 68).

Figura II.5.46 Exemplo do registo de um autor com vários livros

Estabelecer os relacionamentos
O primeiro relacionamento será definido clicando sobre o campo CódAutor
da tabela Autores e arrastando o rato até ao mesmo campo da tabela
Autores/Livro. Na janela que aparece no ecrã devemos activar as opções
que impõem a integridade referencial e posteriormente clicar em CRIAR.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 243

Figura II.5.47 Janela de edição das RELAÇÕES para estabelecer os relacionamentos entre
as tabelas Autores e Autores/Livro

Impor integridade referencial


Na janela de definição de relacionamentos podemos assinalar opções
relacionadas com a integridade referencial, que provocam as seguintes
imposições:
• Activando a primeira opção “IMPOR A INTEGRIDADE REFERENCIAL” não
será possível introduzir um valor no campo CódAutor da tabela
Autores/Livro, se esse valor não existir no campo CódAutor da ta-
bela Autores.

• Activando a segunda opção “PROPAGAR ACTUALIZAÇÃO DOS CAMPOS


RELACIONADOS” implica que uma alteração de um CódAutor na
tabela Autores se registe em todas as ocorrências desse código na
tabela Autores/Livro.

• Activando a terceira opção “PROPAGAR ELIMINAÇÃO DOS CAMPOS


RELACIONADOS”, faz com que uma eliminação de um CódAutor na
tabela Autores provoque a eliminação de todos os registos que con-
têm esse código na tabela Autores/Livro.

Para definir o segundo relacionamento clicamos sobre o campo ISBN da


tabela Autores/Livro e arrastamos o rato até ao mesmo campo da tabela
Livros. Na janela que aparece no ecrã devemos activar as opções que im-
põem a integridade referencial e posteriormente clicar em CRIAR.
Depois de definirmos os dois relacionamentos referidos, veremos aparecer
na janela RELAÇÕES a sua representação através de linhas ligando as
tabelas.
244 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.5.48 Janela RELAÇÕES ilustrando os relacionamentos entre as tabelas Autores,


Autores/Livro e Livros

Definição dos restantes relacionamentos da Base de Dados


Para inserirmos mais tabelas na janela RELAÇÕES, pode-
mos clicar no botão MOSTRAR TABELA e, em seguida, adi-
cionamos a esta janela todas as tabelas da nossa base de dados.
Posteriormente, acrescentamos os seguintes relacionamentos:
• Entre a tabela Localidades e a tabela Autores, através do campo
comum a essas duas tabelas: CodPostal. O relacionamento é do
tipo 1 para N.
• Entre a tabela Nacionalidades e a tabela Autores, através do campo
comum a essas duas tabelas: CodNacionalidade. O relacionamento
é do tipo 1 para N.

• Entre a tabela Colecção e a tabela Livros, através do campo


comum a essas duas tabelas: CodColecção. O relacionamento é do
tipo 1 para N.
• Entre a tabela Revendedores e a tabela Vendas, através do campo
comum a essas duas tabelas: CodRevendedor. O relacionamento é
do tipo 1 para N.

• Entre a tabela Vendas e a tabela Venda/Livro, através do campo


comum a essas duas tabelas: NVenda. O relacionamento é do tipo
1 para N.

• Entre a tabela Livros e a tabela Venda/Livro, através do campo


comum a essas duas tabelas: ISBN. O relacionamento é do tipo 1
para N.
II.5 CONSTRUÇÃO DE TABELAS EFICIENTES 245

No final da definição destes relacionamentos o esquema da base de dados


estará pronto e com a configuração apresentada na figura II.5.49. Antes de
abandonar a janela RELAÇÕES podemos pedir para guardar a estrutura de
relacionamentos anteriormente definida, clicando no botão GUARDAR.

Figura II.5.49 Estrutura final das RELAÇÕES da base de dados Editora

Introduzir dados nas tabelas


Para introduzirmos os dados que irão constituir o conteúdo das tabe-
las devemos passar da VISTA DE ESTRUTURA para o modo de tabela
ou FOLHA DE DADOS.
Por exemplo, os dados que poderemos introduzir na tabela Autores são os
seguintes:

Figura II.5.50 Introdução de registos na tabela Autores através da vista FOLHA DE DADOS

Depois de introduzirmos um dado numa célula, basta teclar ENTER para


passarmos à seguinte. Ao teclar ENTER no último campo abre-se uma nova
linha que nos possibilita a introdução de um novo registo. Após a introdu-
246 BASES DE DADOS COM MICROSOFT ACCESS 2007

ção dos dados devemos pedir para gravar a informação. Para tal, basta
clicar no botão GUARDAR.
Seguindo os mesmos procedimentos já utilizados para a inserção de
dados na tabela Autores, vamos em seguida inserir dados em cada uma
das restantes tabelas da nossa base de dados.
II.6
Manipulação de dados com Consultas

Uma consulta (query) é


uma forma de visualizar
os dados de uma tabela
ou de um conjunto de
tabelas relacionadas
entre si.

Assume um formato semelhante ao de uma tabela, embora a consulta seja


virtual, uma vez que não existe na realidade, mas apenas por via da defini-
ção de alguns parâmetros.
Este objecto do Access pode incidir sobre todos os campos de uma tabela
ou de um conjunto de tabelas, ou poderá incidir apenas sobre alguns cam-
pos. Pode apresentar todos os registos ou efectuar uma filtragem de modo
a apresentar apenas os dados que correspondem a determinada condição.

Os dados seleccionados numa consulta podem ser alterados, apagados


ou tratados como se pertencessem a uma tabela.

6.1 TIPOS DE CONSULTAS COM O ACCESS

O Access permite formular diferentes tipos de consultas, utilizando diver-


sos métodos e procedimentos:

• Consultas de Selecção: São as consultas mais usadas pela maioria


dos utilizadores, sendo possível seleccionar um conjunto de campos de
uma ou várias tabelas, filtrar um conjunto restrito de registos e criar
campos calculados.
248 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Consultas de Referência Cruzada: Com consultas deste tipo pode-


mos sumariar grandes quantidades de informação num formato de fácil
leitura. Os dados obtidos surgem da intersecção entre dois campos e
são apresentados em linhas e colunas, como uma folha de dados.

• Consulta de Acção: Faz alterações em registos numa só operação.


Usa-se este tipo de consulta para criar uma nova tabela, apagar, adi-
cionar ou fazer alterações de registos de uma tabela.

• Consultas SQL (Structured Query Language): Utiliza uma linguagem


específica de interrogação da base de dados. Nas consultas SQL po-
demos destacar:
o Consulta União: Combina campos unidos em duas ou mais tabe-
las.
o Consulta Pass-through: Envia declarações para uma base de da-
dos de SQL como Microsoft ou Sybase SQL Server.
o Consulta Definição dos Dados: Cria, altera, ou apaga tabelas nu-
ma base de dados do Access, usando declarações de SQL.

Depois de acedermos à informação gerada pela consulta podemos


imprimir ou editar essa informação numa FOLHA DE DADOS, da mesma
forma que interagimos com uma tabela.

6.2 CRIAÇÃO DE UMA CONSULTA SIMPLES COM O ASSISTENTE

O ASSISTENTE DE CONSULTAS é provavelmente a melhor forma de começar


a construir consultas mas, conforme vamos ver, não é a única forma e em
certos casos nem sequer é a mais recomendada. Na verdade, o
ASSISTENTE DE CONSULTAS disponibiliza-nos uma forma rápida e fácil de
questionar a base de dados, mas também nos limita a parametrização e
especificação a definir na filtragem dos dados.

Para criar consultas com a ajuda do ASSISTENTE DE


CONSULTAS devemos partir do separador CRIAR do friso.
Depois de activado este separador, surgem na secção
OUTRO dois botões para criação de consultas, designadamente a criação
de consultas com a vista de estrutura e a criação de consultas com a ajuda
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 249

do assistente. Neste caso, seleccionamos o botão ASSISTENTE DE CONSUL-


TAS e então surgirá no ecrã a seguinte caixa de diálogo, onde devemos in-
dicar qual o processo de criação.

Figura II.6.1 Opções da janela do ASSISTENTE DE CONSULTAS para a criação de uma nova
consulta

Como se pode visualizar na figura II.6.1, o Access apresenta-nos um con-


junto de Assistentes que possibilitam a criação de diferentes consultas,
nomeadamente:
• CONSULTAS SIMPLES
Cria consultas que obtêm dados de campos de uma ou mais tabelas
ou consultas.
• CONSULTAS DE REFERÊNCIA CRUZADA
Apresenta os dados num formato compacto e sumariado.
• CONSULTAS LOCALIZAR DUPLICADOS
Encontra registos duplicados numa tabela ou consulta.
• CONSULTAS LOCALIZAR NÃO CORRESPONDENTES
Encontra todos os registos numa tabela que não estão relacionados
com registos de outra tabela.

Se escolhermos a primeira opção (CONSULTAS SIMPLES), então será apre-


sentado o primeiro quadro onde poderemos escolher um conjunto de cam-
pos de várias tabelas que irão ser utilizados na consulta.
250 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.6.2 Primeiro ecrã do ASSISTENTE DE CONSULTAS SIMPLES

Com a ajuda deste assistente podemos construir uma consulta simples de


uma forma fácil e rápida. Para isso, seguimos as instruções apresentadas
nas caixas de diálogo do assistente. Para finalizar o processo escolhemos
a tabela ou tabelas e respectivos campos que contenham os dados que
irão ser utilizados na consulta.

Se decidirmos utilizar o ASSISTENTE DE CONSULTAS para criamos a nossa


consulta provavelmente teremos de a refinar mais tarde usando a VISTA
DE ESTRUTURA.

6.3 CRIAÇÃO DE UMA CONSULTA COM A VISTA DE ESTRUTURA

O ASSISTENTE DE CONSULTAS é uma ferramenta útil na criação de consul-


tas simples que não sejam muito exigentes na definição específica da
informação a ser filtrada. De facto, quando pretendemos criar uma consulta
com especificidades próprias teremos de recorrer a um processo mais tra-
balhoso mas também mais configurável.
Para iniciar a definição de uma consulta QBE (Query By Example), ou seja,
consulta através de um exemplo, devemos partir do separador CRIAR do
friso.
1. Depois de activado o separador CRIAR, premir o botão
ESTRUTURA DA CONSULTA
2. Surge uma caixa de diálogo MOSTRAR TABELA, a partir da qual po-
demos seleccionar a(s) tabela(s)/consulta(s) que irão servir de base
para essa consulta.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 251

Figura II.6.3 Janela MOSTRAR TABELA usada para escolher a(s) tabela(s) a incluir na
consulta

3. Depois de seleccionar a(s) tabela(s)/consulta(s) pretendida(s) pre-


mir o botão ADICIONAR.
4. Premir o botão FECHAR.

Depois de escolher a(s) tabela(s) que irão fazer parte da consulta e de


fechar a caixa de diálogo MOSTRAR TABELA, surge no ecrã a janela de defi-
nição da consulta (apresentada no próximo tópico).
A caixa de diálogo MOSTRAR TABELA surge de uma
forma automática no início do processo de criação
da consulta. Contudo, é possível aceder a esta
caixa em qualquer altura bastando para isso seleccionar o botão MOSTRAR
TABELA da secção (do friso) CONFIGURAÇÃO DA CONSULTA.

6.3.1 Descrição da janela para a criação de uma consulta

A janela para a criação de uma consulta em modo VISTA DE ESTRUTURA


divide-se em duas zonas distintas, nomeadamente:
• a parte superior da janela onde são mostradas as tabelas/consultas
seleccionadas para a consulta que pretendemos criar;

• a parte inferior da janela que apresenta uma grelha (QBE: query-by-


-example), na qual poderemos indicar os campos a incluir na consulta,
bem como critérios ou condições para filtragem de dados.
252 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.6.4 Janela para a criação de uma consulta na vista de ESTRUTURA

6.3.2 Caracterização da grelha da consulta

As várias linhas da grelha da consulta têm os nomes e os significados que


são apresentados na seguinte tabela.
Nomes Significado

Campo Onde indicamos cada um dos campos que pretendemos ver na consulta

Tabela Indica-nos os nomes das tabelas a que pertencem os campos refe-


renciados na linha de cima

Ordenar Permite-nos ordenar a consulta com base nesse campo, por ordem as-
cendente ou descendente

Mostrar Possibilita-nos alternar entre exibir ou não exibir esse campo na consulta

Critério Permite-nos especificar um critério ou condição para nos serem


mostrados apenas os dados que correspondam a essa indicação

Figura II.6.5 Descrição dos parâmetros de configuração da grelha da consulta

6.3.3 Inserção de campos nas consultas

Para inserirmos um campo na grelha da consulta podemos utilizar duas


alternativas:

• Com o rato, arrastar o nome do campo da tabela para a coluna da gre-


lha em que se deseja inserir. Se pretendermos incluir todos os campos
da tabela, podemos seleccionar o asterisco e arrastá-lo para a grelha;

• Fazer clique sobre a primeira linha da grelha e abrir a


caixa de listagem. Esta caixa de listagem apresenta-
-nos os campos das tabelas seleccionadas para a consulta, permitindo
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 253

assim a escolha do campo a inserir na coluna onde nos encontramos.

Temos ainda outras acções que podem ser realizadas na janela de cons-
trução da consulta que apresentamos de seguida.

Como mover um campo:


1. Premir o rato na barra cinzenta que se situa na coluna do seu cam-
po, por cima do nome deste.
2. Manter o dedo no botão esquerdo do rato e movê-lo para o local de-
sejado.

Alterar o tamanho das colunas:


Esta acção pode ser útil para o caso de existirem campos com tamanho
excessivamente grande ou demasiado pequeno.
Para que o tamanho de uma coluna fique com a dimensão que pretende-
mos, devemos colocar o ponteiro do rato na sua extremidade direita. Em
seguida, movemos a cruz que representa o ponteiro para a direita ou para
a esquerda por forma a ajustar o tamanho da coluna.

Figura II.6.6 Processo de alteração do tamanho das colunas da consulta através do


indicador do rato

Como apagar um campo:


1. Seleccionar o campo que se deseja apagar, da mesma forma que se
selecciona um campo para se mover.
2. Premir a tecla DEL.

Alterar o nome dos campos numa consulta:


A alteração do nome dos campos pode ser útil em futuras criações de for-
mulários ou relatórios em que estas consultas sejam referenciadas. Assim,
para alterar o nome dos campos devemos:
1. Colocar o cursor no campo que irá ser renomeado na grelha QBE.
254 BASES DE DADOS COM MICROSOFT ACCESS 2007

2. Antes do nome antigo do campo e separado por dois pontos, inserir


o novo nome do campo apenas para esta consulta.

6.3.4 Visualizar a consulta através da FOLHA DE DADOS

Existem várias opções para activar uma consulta:


• Fazer clique no botão EXECUTAR do friso
• Através do botão VISTA transitar do modo VISTA DE
ESTRUTURA para o modo VISTA FOLHA DE DADOS.

A apresentação gráfica de uma consulta é em tudo semelhante a uma


tabela. Nos cabeçalhos das colunas são exibidos os nomes dos campos e
nas linhas são incluídos os registos correspondentes ao critério da con-
sulta.
Na figura II.6.7 é apresentada uma consulta que foi gerada em função da
tabela Autores, ou seja, a sua estrutura será constituída pelos campos
Código do Autor, Nome, Telefone, Contribuinte e CodNacionalidade.

Figura II.6.7 Descrição dos parâmetros de configuração da grelha da consulta

6.3.5 Especificar o tipo de ordenação

O tipo de ordenação pode ser útil numa consulta para melhorar a organi-
zação da respectiva informação. Essa ordenação pode ser crescente ou
decrescente com base num determinado campo ou em vários campos.
Como especificar a ordenação dos campos:
1. Depois de escolher o campo sobre o qual irá ser
feita a ordenação, premir o rato no respectivo
rectângulo em branco, correspondente à opção
ORDENAÇÃO.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 255

2. Escolher Ascendente (0-9 ou A-Z) ou Descendente (9-0 ou


Z-A). Os registos ficarão ordenados conforme a escolha anterior-
mente feita.

É possível fazer ordenações com base em vários campos. O processo


referido anteriormente deverá ser repetido para os vários campos tendo
em conta que o primeiro critério de ordenação será o primeiro campo a
contar da esquerda.

6.3.6 Valores superiores

Quando executamos uma consulta visualizamos todos os registos que res-


peitam as condições definidas. Contudo, o Access possibilita a visualiza-
ção de uma determinada percentagem ou número de registos, em relação
ao total de registos obtidos pela consulta.
Para isso, devemos estar no modo VISTA DE ESTRUTURA e posteriormente
seleccionar a opção VALORES SUPERIORES na secção CONFIGURAÇÃO DA
CONSULTA do friso.

Figura II.6.8 Caixa de combinação com os VALORES SUPERIORES

O valor definido por defeito é a opção Tudo, no entanto, podemos selec-


cionar ou inserir um valor específico ou uma determinada percentagem de
registos a visualizar. Para que o conjunto de valores a visualizar seja o
pretendido, devemos impor anteriormente a ordenação dos registos com
base num campo da consulta.

6.4 DEFINIÇÃO DE CRITÉRIOS EM CONSULTAS

A principal acção associada à construção de uma consulta é a criação de


critérios que possibilitam a apresentação de um conjunto filtrado de dados.
As condições podem ser simples ou múltiplas, consoante impliquem uma
256 BASES DE DADOS COM MICROSOFT ACCESS 2007

ou mais restrições aos dados a pesquisar. Para conhecermos um pouco


melhor a forma de definir os critérios associados às consultas vamos abor-
dar a utilização de seus diferentes tipos.

Consulta com condição simples


O Access dá-nos uma grande flexibilidade na forma de
inserir as expressões referentes aos critérios. Quando
identificamos a expressão de filtragem que pretende-
mos impor na nossa consulta, introduzimos a mesma na linha CRITÉRIO na
coluna do respectivo campo.

Para identificar conjuntos de registos, costuma-se usar a expressão


ENTRE... E... ou sinais de comparação (<, >, <>, <=, =>). Estes
operadores de comparação podem ser usados não apenas com campos
numéricos mas também com campos de texto ou data. Também
podemos recorrer aos operadores lógicos E e OU para especificar
critérios. Podemos escrever estes operadores em português ou inglês,
pois o Access reconhecerá qualquer das formas.

No quadro seguinte encontramos alguns exemplos de critérios usados pa-


ra a selecção de vários registos:
Expressão Significado
>10% Autores com comissão superiores a 10%

Entre #1/2/05# E Vendas da Editora efectuadas entre 1 de Fevereiro de 2005 e


#6/6/06# 6 de Junho de 2006
“Norte” Revendedores da Região Norte
>=“Tecnologias” Todos as Colecções que sejam alfabeticamente superiores a
Tecnologias
Maria* Todos os nomes de Autores que comecem por Maria
>2000 E <=2500 Vendas da Editora superiores a 2000 e inferiores ou iguais a
2500

Figura II.6.9 Exemplos de critérios utilizando operadores de comparação

Seleccionar registos que não tenham qualquer valor num campo


Para encontrar um registo que não contenha qualquer valor utiliza-se o
operador Não, por exemplo, “Não C*”. Esta expressão faz com que a con-
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 257

sulta não apresente qualquer registo em que este campo se inicie com a
letra C.

Consulta com condição múltipla


Para aumentar a flexibilidade de uma consulta, a grelha QBE pode com-
portar mais do que um critério (usamos as expressões E ou OU num
campo). Como exemplo deste tipo de consulta vamos usar o critério “1” no
campo CódNacionalidade da tabela Autores e ao mesmo tempo usar “22*”
no campo tipo texto “Telefone” da mesma tabela. Assim, a consulta selec-
cionará apenas os registos dos Autores Nacionais que sejam moradores
na zona do Porto.

Figura II.6.10 Consulta com condição múltipla

Como se pode constatar na figura II.6.10, depois de activar a consulta,


surge uma FOLHA DE DADOS em que os registos correspondem às condi-
ções impostas.

6.5 CRIAÇÃO DE CONSULTAS COM TABELAS RELACIONADAS

Uma das grandes potencialidades de um SGBD relacional reside na pos-


sibilidade de podermos efectuar consultas que envolvem ao mesmo tempo
mais do que uma tabela. Desta forma, podemos obter informações mais
específicas no contexto dos relacionamentos existentes numa base de
dados.
Por exemplo, no caso da nossa base de dados “Editora”, podemos saber o
nome dos autores dos livros editados nas diferentes colecções. Para criar
a nova consulta precisamos de utilizar as tabelas “Livros”, “Colecções”,
“Autores/Livro” e “Autores”.
Através do modo VISTA DE ESTRUTURA da consulta inserimos as respecti-
vas tabelas e deveremos confirmar se os relacionamentos entre elas são
visíveis. Se esses relacionamentos não aparecerem, teremos de os definir
258 BASES DE DADOS COM MICROSOFT ACCESS 2007

na janela RELAÇÕES (conforme vimos em “Criação de Relacionamentos”).


Posteriormente, seleccionamos os campos de cada tabela que pretende-
mos incluir na consulta. A estrutura e o resultado desta consulta são apre-
sentados na figura seguinte.

Figura II.6.11 Consulta com tabelas relacionadas

Através da tabela “Livros” poderemos aceder à informação de cada Livro


editado. Contudo, alguma dessa informação não é muito esclarecedora
pois aparece em forma de código numérico. Para aceder a informação
mais detalhada teremos de criar uma consulta que faça referência a essa
informação através das várias tabelas relacionadas com a tabela “Livros”.
Quando executamos uma consulta é bem possível que seja visualizada
informação repetida. No entanto, esta duplicação é normalmente resultado
da utilização de várias tabelas e não resultado de uma má estruturação da
base de dados.

Quando usamos mais de uma tabela numa consulta corremos o risco de


ter campos com nomes iguais. Este não será um problema se não
utilizarmos os campos com o mesmo nome – de tabelas diferentes – na
consulta, contudo, se usarmos esses campos será conveniente alterar o
nome de um deles para uma melhor distinção.

6.6 CONSULTAS COM PARÂMETROS

As consultas parametrizadas são utilizadas para restringir a filtragem de


um conjunto de registos que esteja condicionada por um critério incom-
pleto, ou seja, uma parte da informação associada ao critério de filtragem
não é definida a priori mas sim na altura em que a consulta é executada.
De facto, estas consultas apresentam um critério que poderá ser variável.
No entanto, quando executamos a consulta parametrizada não temos a
necessidade de abrir a janela de consulta e fazer alterações na grelha
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 259

QBE, pois durante a execução deste tipo de consultas é apresentada uma


caixa de diálogo solicitando a entrada de um valor.
Para criar um parâmetro da consulta, devemos:
1. Criar uma consulta e adicionar a(s) tabela(s) desejadas.
2. Colocar os campos pretendidos na consulta na grelha QBE.
3. No espaço em branco do critério, no campo que se usar como parâ-
metro, inserir uma questão (prompt) entre parêntesis recto.

Figura II.6.12 Consulta com parâmetros

Em alternativa seleccionamos o botão PARÂMETROS na sec-


ção MOSTRAR/OCULTAR do friso. Inserir a mesma questão
com tipo de dados TEXTO.

Figura II.6.13 Janela para a introdução de uma questão em


consultas com parâmetros

4. Escolher a opção FOLHA DE DADOS ou premir o botão EXECUTAR no


friso.
5. Inserir um valor na caixa de diálogo com a questão e premir OK.

Figura II.6.14 Caixa de diálogo que apresenta a questão que


condiciona a consulta
260 BASES DE DADOS COM MICROSOFT ACCESS 2007

A introdução de um critério dentro de parêntesis recto actua como


parâmetro, ou seja, ao pedirmos a visualização dos dados da consulta o
Access pede-nos a introdução de um valor, o qual vai actuar como cri-
tério ou filtro da consulta.

Neste exemplo, consideramos uma consulta que apresenta a informação


dos livros editados no âmbito de uma determinada colecção. Ao executar
esta consulta aparecerá uma caixa de diálogo que solicitará a introdução
de um valor. Neste caso será a designação da colecção.

Figura II.6.15 Execução de uma consulta com parâmetros

O valor introduzido irá actuar em conformidade com a expressão indicada,


pois os parâmetros (dentro de parêntesis recto) aparecem associados aos
operadores de comparação. Assim, apenas são apresentados os registos
com livros e respectivos autores associados à colecção introduzida no
parâmetro.

6.7 CRIAÇÃO DE CAMPOS CALCULADOS

Uma consulta não tem necessariamente de conter apenas os campos que


pertencem às tabelas da base de dados. Podemos também criar novos
campos resultantes de operações aritméticas entre campos utilizados na
consulta. Aliás, quando começamos a desenhar bases de dados aprende-
mos que nunca se deve armazenar informação que é resultante de cálcu-
los baseados em campos já referenciados na base de dados.
As consultas apresentam-se como uma solução perfeita para minimizar a
redundância de informação nas bases de dados. Com efeito, através de
campos calculados poderemos aceder a informação que nunca será arma-
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 261

zenada, pois o Access gera essa informação cada vez que a consulta é
executada.
Consideremos o exemplo em que se pretende criar uma consulta que
deverá apresentar o valor da venda de um livro ao revendedor. Para criar
esta nova consulta precisamos de utilizar as tabelas “Vendas”, “Venda/
Livro” e “Livros”. Uma vez aberta a consulta na VISTA DE ESTRUTURA,
vamos inserir os respectivos campos de cada tabela para complementar a
sua informação. Posteriormente, vamos posicionar o indicador do rato na
linha CAMPO e na primeira coluna vazia da grelha. Nessa célula escreve-
mos [Quantidade]*[PreçoUnitário]. Depois de teclarmos ENTER o
programa reescreverá a expressão.

Figura II.6.16 Consulta com um campo calculado

Ao activar a consulta irá obter um conjunto de registos com o resultado do


cálculo efectuado. O campo calculado aparece na última coluna com o
nome “Expr1”. Os valores apresentados nesse campo são resultado da
expressão introduzida.
Se quisermos, podemos atribuir um nome mais descritivo ao novo campo.
Para isso, na grelha de consulta, posicionamos o cursor na célula onde in-
troduzimos a expressão, e substituímos “Expr1” por “Valor”.

Figura II.6.17 Resultado da consulta estruturada na figura II.6.16


262 BASES DE DADOS COM MICROSOFT ACCESS 2007

Consultas com Funções


Normalmente, uma função recebe dados que nós fornecemos, executa um
cálculo e apresenta o resultado. A grande vantagem de utilizar as funções
em detrimento dos operadores matemáticos resulta do facto das primeiras
poderem ser usadas em operações mais complexas.
As regras e a sintaxe a respeitar na utilização das funções são exacta-
mente as mesmas, independentemente de estas serem simples ou com-
plexas. Para utilizar uma função devemos inserir o nome da mesma e, em
seguida, inserimos (entre parêntesis curvos) a informação sobre a qual a
função vai executar os cálculos.
O Access disponibiliza um catálogo de dezenas de funções direccionadas
para diferentes tarefas, nomeadamente as operações matemáticas e esta-
tísticas. Para aceder rapidamente a estas funções o Access providencia
uma ferramenta chamada CONSTRUTOR DE EXPRESSÕES que poderá ser
utilizada da seguinte forma:
1. Abrir uma consulta na VISTA DE ESTRUTURA.
2. Posicionar o cursor na coluna vazia da grelha onde pretendemos
inserir a expressão e seleccionar a opção COMPILAR no menu rápido
que aparece no ecrã.

Figura II.6.18 Menu rápido para aceder à opção COMPILAR

Em alternativa seleccionar CONSTRUTOR na sec-


ção CONFIGURAÇÃO DA CONSULTA do friso.

3. No CONSTRUTOR DE EXPRESSÕES que aparece no ecrã, definir a ex-


pressão recorrendo às várias funcionalidades disponíveis.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 263

Expressão a
construir

Botões que inserem


operadores
Funções
disponíveis na
Categoria
Área para seleccionar
seleccionada
campos dos objectos
BD e funções
Categorias
da Função

Figura II.6.19 Configuração do CONSTRUTOR DE EXPRESSÕES

4. Depois de Clicar OK, o Access copia a expressão para a caixa onde


pretendemos inserir a expressão.

O CONSTRUTOR DE EXPRESSÕES é uma ferramenta própria não só para


criar expressões usadas em campos calculados, mas também para
estabelecer condições de filtragem, recorrendo neste caso aos
operadores lógicos E, Ou e Não e/ou aos operadores relacionais >,
<, …

Cálculos automáticos em função de agrupamentos de dados


As consultas do Access permitem-nos ainda efectuar outros tipos de cál-
culos que se baseiam nos possíveis agrupamentos de dados associados
aos campos da consulta, ou seja, poderemos fazer questões acerca de
grupos de dados como, por exemplo, saber o nº de livros vendidos e o nº
total de vendas para cada livro, etc.
Através destas consultas podem ser obtidos resultados numéricos a partir
da utilização das seguintes funções estatísticas:
Função de Cálculo Encontra
Soma A soma de todos os valores num campo
Média A média de todos os valores num campo
Min O menor valor num campo
Max O maior valor num campo
Contar O número de valores num campo (não contando os nulos)
DesvP O desvio padrão dos valores num campo
Var A variância de valores num campo
Primeiro O valor do campo do primeiro registo numa tabela ou consulta
Último O valor do campo do último registo numa tabela ou consulta
264 BASES DE DADOS COM MICROSOFT ACCESS 2007

Função de Cálculo Encontra


Expressão Um campo calculado quando desejar utilizar múltiplas funções
numa expressão
Onde Oculta o campo nos resultados da consulta desmarcando a
caixa de verificação MOSTRAR

Figura II.6.20 Funções de cálculo para utilização no agrupamento de dados

Como calcular totais para todos os registos na tabela


Para efectuar consultas que nos proporcionem cálculos deste tipo, teremos
de:
1. Criar uma consulta e seleccionar os campos que se desejam para
calcular totais na grelha QBE.
2. Premir o botão TOTAIS no friso. Aparecerá uma nova
linha na grelha com a designação “Total:” e que
apresenta em cada uma das suas células a indicação “Agrupar
Por”.
3. Na caixa de combinação associada a cada campo e simultanea-
mente à opção TOTAL, seleccionar o tipo de total (Soma, Média, ou
Min).

Figura II.6.21 Caixa de combinação associada à opção TOTAL

4. Premir o botão FOLHA DE DADOS no friso para ver o resultado da


consulta.

Como exemplo, poderemos utilizar a seguinte questão:


Qual o nº de livros vendidos e o nº total de vendas para cada livro?
Para construir uma consulta que responda a esta questão, deveremos utili-
zar as tabelas Livros, Venda/Livro e Vendas.
Depois de adicionar as tabelas à janela VISTA DE ESTRUTURA da consulta,
vamos colocar o campo “Titulo” na primeira coluna da grelha QBE. Poste-
riormente, vamos colocar o campo “Quantidade” na segunda coluna, e,
finalmente, inserimos o campo “Data” na terceira coluna da mesma grelha.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 265

Depois de activar o botão TOTAIS vamos agrupar os registos da consulta


pelo campo “Titulo” e, em seguida, impomos para o campo “Quantidade” o
cálculo SOMA e para o campo “Data” o cálculo CONTAR que estão disponí-
veis na caixa de combinação da linha “Total:”. A seguinte figura apresenta
o aspecto final da consulta na VISTA DE ESTRUTURA, bem como os resulta-
dos obtidos.

Figura II.6.22 Execução de uma consulta com cálculos automáticos associados ao


agrupamento de dados

Se desejarmos aceder a sub-agrupamentos da informação, ou seja, entrar-


mos em níveis de maior detalhe teremos de usar a ferramenta do Access
CONSULTAS DE REFERÊNCIA CRUZADA.

6.8 CONSULTAS DE REFERÊNCIA CRUZADA

As consultas de referência cruzada são consideradas como uma fer-


ramenta poderosa que analisa um grande volume de dados. São normal-
mente utilizadas para calcular e reestruturar dados de forma a facilitar a
sua análise. Este tipo de consulta apresenta uma grande sumarização dos
dados, proporcionando assim uma fácil comparação entre eles.
As consultas de referência cruzada permitem apresentar a informação
numa tabela, construída com o propósito de compactar dados que calcu-
lam uma soma, média, contagem ou outro tipo de total, agrupados em dois
tipos de informações, uma no canto inferior esquerdo da FOLHA DE DADOS
e outra na parte superior.
A criação de uma consulta de referência cruzada obedece essencialmente
a três procedimentos:

• Inicialmente, escolhem-se os campos cujos valores devem ser utili-


zados para a definição das linhas de uma nova tabela;
266 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Depois, indica-se um outro campo para, a partir dos seus dados,


serem criadas as colunas dessa nova tabela.

• Finalmente, definimos o campo que servirá de referência para o cál-


culo automático a utilizar na intersecção de uma coluna com uma
linha.

Desta forma, é criada uma nova tabela, em cujas células aparecerão nú-
meros relativos à quantidade de ocorrências dos valores em linha, em cor-
respondência com os valores em coluna.

6.8.1 Criação de uma consulta de referência cruzada com o


Assistente

O Access disponibiliza duas formas de criar consultas de referência cru-


zada. Podemos usar o Assistente para o efeito ou, podemos construir a
consulta usando a VISTA DE ESTRUTURA. Naturalmente o Assistente será
mais indicado para definir as bases da consulta e no caso de ser neces-
sário um refinamento da mesma então deveremos usar a VISTA DE ESTRU-
TURA.

Para criar a consulta de referência cruzada com a ajuda do assistente,


devemos:
Seleccionar o separador CRIAR do friso. Posteriormente premir
o botão ASSISTENTE DE CONSULTAS na secção OUTRO do friso.
1. Na caixa de diálogo NOVA CONSULTA seleccionar a opção ASSIS-
TENTE DE CONSULTAS DE REFERÊNCIA CRUZADA e, em seguida, clicar
em OK.

Figura II.6.23 Janela do ASSISTENTE DE CONSULTAS para a criação de uma nova consulta
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 267

2. Seguir as instruções apresentadas nas caixas de diálogo do assis-


tente. Primeiro, escolher a tabela ou consulta que contenha os da-
dos que irão ser confrontados (no exemplo corrente vamos selec-
cionar a consulta “Valor Vendas”).

Figura II.6.24 Janela do ASSISTENTE DE CONSULTAS DE REFERÊNCIA CRUZADA para seleccionar


a tabela/consulta que contém os dados

3. Em função dos campos disponíveis na consulta seleccionada esco-


lher o campo (Titulo) que representará a informação das linhas
da tabela.

Figura II.6.25 Janela do ASSISTENTE DE CONSULTAS DE REFERÊNCIA CRUZADA para escolher o


campo que representará a informação das linhas da tabela

4. Escolher o campo que representará a informação das colunas


da tabela (no seguinte exemplo a escolha recaiu na Data, possibili-
tando uma nova escolha para o intervalo de tempo desejado: Tri-
mestre).
268 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.6.26 Janelas do ASSISTENTE DE CONSULTAS DE REFERÊNCIA CRUZADA para escolher o


campo que representará a informação das colunas da tabela

5. Finalmente, escolher o campo de informação que será considerado


como o critério de agrupamento entre as informações das linhas e
colunas. Este campo será alvo de um cálculo escolhido na lista da
direita da seguinte caixa de diálogo (no nosso exemplo escolhemos
o campo Valor e a função Soma).

Figura II.6.27 Janela do ASSISTENTE DE CONSULTAS DE REFERÊNCIA CRUZADA para escolher o


campo considerado como o critério de agrupamento

Como exemplo, apresentamos na figura II.6.28 uma consulta de referência


cruzada que apresenta as vendas trimestrais dos diferentes livros da Edi-
tora. Na concepção desta consulta utilizamos não uma tabela mas uma
consulta que foi previamente configurada. Assim, foi considerado o campo
“Titulo” para a definição das linhas, enquanto o campo “Data de venda”
condiciona o número de colunas. Em cada célula resultante do cruzamento
de uma linha com uma coluna aparecem as vendas trimestrais de cada
livro.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 269

Figura II.6.28 Resultado da execução de uma CONSULTAS DE REFERÊNCIA CRUZADA

Se pretendermos mostrar na tabela uma coluna com o total dos valores


apresentados em todas as colunas (ver na figura II.6.28 a segunda coluna
da tabela), devemos seleccionar a opção SIM, INCLUIR AS SOMAS DAS LINHAS
na caixa de diálogo do passo 5.
Se a consulta resultante não for exactamente a que pretendemos, pode-
mos executar novamente o assistente ou, então, alteramos a consulta na
VISTA DE ESTRUTURA.

6.8.2 Criar uma consulta de referência cruzada com a VISTA DE


ESTRUTURA

Tal como outra consulta qualquer, podemos criar uma Consulta de refe-
rência cruzada através da VISTA DE ESTRUTURA. Neste sentido devemos:
Seleccionar o separador CRIAR do friso e, posteriormente,
premir o botão ESTRUTURA DA CONSULTA na secção OUTRO
do friso.
1. Adicionar as tabelas ou consultas a usar através da caixa de diá-
logo MOSTRAR TABELA.
2. Seleccionar o Botão CRUZAR da secção TIPO DE CONSULTA do friso.

Figura II.6.29 Configuração da secção TIPO DE CONSULTA usada


para a aceder ao Botão CRUZAR
270 BASES DE DADOS COM MICROSOFT ACCESS 2007

O Access converte a consulta numa consulta de referência cruzada inse-


rindo na grelha QBE um novo parâmetro com o nome REFERÊNCIA CRU-
ZADA.

Escolher a forma como o campo vai ser usado


(agrupamento, calculo de sumarização)

Escolher onde o campo será colocado (linha,


coluna ou valor de agrupamento)

Figura II.6.30 Configuração da grelha de uma CONSULTAS DE REFERÊNCIA CRUZADA na VISTA


DE ESTRUTURA

Quando utilizamos as Consultas de referência cruzada com a VISTA DE


ESTRUTURA, podemos com facilidade estabelecer critérios de filtragem pois
temos à disposição o parâmetro CRITÉRIO que já tivemos a oportunidade
de conhecer em “Definição de critérios em consultas”.

6.9 CONSULTAS DE ACÇÃO

Além dos diferentes tipos de consultas anteriormente abordadas, o Access


permite-nos ainda definir outros tipos de consultas, genericamente desig-
nadas por CONSULTAS DE ACÇÃO. Estas consultas têm em comum o facto
de produzirem alterações reais sobre a base de dados. Na verdade, com
as consultas de acção podemos criar novas tabelas ou alterar dados que
elas contêm.
Existem no Access quatro tipos de consultas de acção, designadamente:
CONSULTA CRIAR TABELA − Cria uma nova tabela a partir da totalidade ou de
uma parte dos dados existentes numa ou várias tabelas.
CONSULTA ELIMINAÇÃO − Apaga um grupo de registos de uma ou mais ta-
belas.
CONSULTA ACRESCENTAR − Adiciona um grupo de registos de uma ou mais
tabelas para outra ou outras tabelas.
CONSULTA ACTUALIZAÇÃO − Efectua Alterações a um grupo de registos nu-
ma ou mais tabelas.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 271

6.9.1 Impedir que o modo Desactivado bloqueie uma consulta

Se abrirmos uma base de dados que não esteja armazenada numa locali-
zação fidedigna, ou se tivermos optado por não considerar uma base de
dados fidedigna, o Access irá impedir a execução de todas as CONSULTAS
DE ACÇÃO. De facto, se tentarmos executar uma CONSULTA DE ACÇÃO e não
acontecer nada, devemos verificar se uma nova mensagem aparece na
barra de estado do Access.

Figura II.6.31 Barra que apresenta um aviso informando que esta acção ou evento foi
bloqueado pelo MODO DESACTIVADO

Activar conteúdo bloqueado


Quando aparecer uma mensagem semelhante à apresentada na figura
II.6.31 que inviabilize a execução de uma CONSULTA DE ACÇÃO, procede-
mos da seguinte forma:
1. Na barra de mensagens clicamos em OPÇÕES;
2. Na caixa de diálogo OPÇÕES DE SEGURANÇA DO MICROSOFT OFFICE
clicamos em ACTIVAR ESTE CONTEÚDO e, em seguida, clicamos em
OK.
Se a Barra de Mensagens não aparecer no ecrã, devemos clicar na opção
BARRA DE MENSAGENS, existente na secção MOSTRAR/OCULTAR do sepa-
rador FERRAMENTAS DE BASE DE DADOS.

6.9.2 Consulta criar tabela

Este tipo de consultas tem o objectivo de criar tabelas com base num
determinado conjunto de campos e registos. De facto, quando criamos
tabelas através deste processo temos a possibilidade de escolher os cam-
pos e os dados da nossa base de dados que desejamos incluir numa nova
tabela, quer esta seja armazenada na nossa base de dados, quer seja
272 BASES DE DADOS COM MICROSOFT ACCESS 2007

armazenada em qualquer outra. Além disso, revelam-se muito úteis quan-


do pretendemos:

• Criar relatórios que mostrem dados numa determinada altura;


• Fazer cópias de segurança de uma tabela;

• Criar uma tabela que contenha registos antigos (histórico).


• Improvisar um tipo de formulários ou relatórios baseados em consul-
tas tipo tabelas-múltiplas.

Para criar uma consulta de criação de uma nova tabela devemos:


1. Criar uma consulta, seleccionando as tabelas ou consultas que con-
têm os campos que desejamos incluir na nova tabela. Opcional-
mente, adicionamos critérios à linha CRITÉRIOS da grelha de estru-
tura.

Figura II.6.32 Exemplo de uma consulta a utilizar no processo CONSULTA CRIAR TABELA

2. No separador ESTRUTURA, escolher a opção CRIAR TABELA


existente na secção TIPO DE CONSULTA.
3. Na caixa de diálogo que é activada, inserir o nome da nova tabela
que desejamos criar (se desejamos criar uma nova tabela para fazer
a substituição por uma existente, seleccionamos a tabela na caixa de
combinação).

Figura II.6.33 Caixa de diálogo que permite Criar tabela baseada numa consulta aberta na
VISTA DE ESTRUTURA
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 273

4. Na mesma caixa, indicar a nova base de dados do Access inserindo


o nome desta e, em seguida, seleccionar OK.

5. Executar a Consulta, clicando no botão EXECUTAR existente


no separador ESTRUTURA.

6. Na caixa de diálogo de confirmação aparece o número de registos


que serão copiados para a nova tabela.

Figura II.6.34 Caixa de confirmação do processo Consulta Criar Tabela

7. Finalmente, confirmamos a criação da nova tabela seleccionando o


botão SIM.

6.9.3 Consulta eliminação

A CONSULTA ELIMINAÇÃO é a consulta mais perigosa das consultas de


acção. Com efeito, esta consulta funciona como uma consulta de selecção
que filtra um conjunto de registos que respeitam determinada condição.
Contudo, esta consulta não apresenta apenas os registos filtrados mas
também os elimina da base de dados.
Efectivamente, para apagar uma série de registos que respeitem uma
determinada condição, é mais rápido utilizar uma CONSULTA DE ELIMINAÇÃO
que apagar um registo de cada vez. Assim, esta consulta permite-nos
excluir, da tabela ou tabelas intervenientes numa consulta um conjunto de
registos que correspondam a um critério introduzido.
Com as CONSULTAS ELIMINAÇÃO eliminamos sempre registos inteiros e não
apenas campos seleccionados dentro dos registos.
Por exemplo, podemos utilizar este tipo de consultas para eliminar toda a
informação associada aos livros editados antes do ano 2001, que por se
terem tornado obsoletos não são mais comercializados.
Para criar uma consulta que apague registos devemos:
274 BASES DE DADOS COM MICROSOFT ACCESS 2007

1. Criar uma consulta, seleccionando a(s) tabela(s) em que se dese-


ja(m) apagar registos usando um critério (no nosso exemplo ape-
nas necessitamos da tabela livros).
2. Levar os seguintes campos para a grelha QBE:
• O campo com asterisco para tabela, na qual se desejam apagar
os registos.
• Os campos nos quais se especificam critérios (DataEdição).
3. Especificar o critério necessário. Ter atenção ao facto do Access
eliminar todos os registos da tabela se não existir uma condição.

Figura II.6.35 Exemplo de uma consulta para eliminar livros editados até 31-12-2000

4. No separador ESTRUTURA, escolher a opção ELIMINAR


existente na secção TIPO DE CONSULTA.

Figura II.6.36 Grelha da consulta com uma nova linha ELIMINAR

5. Aceder à FOLHA DE DADOS que apresentam os resultados


desta consulta, ou seja podemos visualizar os registos que
serão excluídos da base de dados.
6. Depois de nos certificarmos das repercussões deste pro-
cesso, voltar à VISTA DE ESTRUTURA e, no separador ESTRU-
TURA, escolher a opção EXECUTAR existente na secção RE-
SULTADOS.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 275

Figura II.6.37 Caixa de diálogo que alerta para o facto de um conjunto de registos serem
eliminados de uma forma irreversível

7. Para completar a consulta e apagar os registos, escolher SIM.

6.9.4 Consulta acrescentar

A CONSULTA ACRESCENTAR é usada para adicionar registos de uma tabela


do Access a outra tabela já existente. Este tipo de consulta permite, com
base num critério, seleccionar um conjunto de registos de uma consulta
para os adicionar ao fim de uma ou várias tabelas da mesma base de da-
dos ou de qualquer outra.
Por exemplo, suponhamos que alguns Autores novos residem em locais
cujos códigos postais ainda não estão registados na nossa base de dados,
embora os mesmos se encontrem numa tabela de uma outra base de
dados. Para evitar ter de introduzir manualmente todas estas informações,
seria possível acrescentar de uma forma automática as mesmas, à tabela
Localidades.
Para criar uma Consulta Acrescentar:
1. Criar uma consulta, seleccionando as tabelas ou consultas que con-
têm os registos que se desejam juntar a outra tabela. No nosso
exemplo seleccionamos a tabela CodPostais de uma base de da-
dos Comercial.

Figura II.6.38 Estrutura da consulta criada na base de dados Comercial.accdb onde se


encontra a tabela (CodPostais) cujos registos se pretendem adicionar

2. Especificar um critério se necessário.


276 BASES DE DADOS COM MICROSOFT ACCESS 2007

3. No separador ESTRUTURA, escolher a opção ACRESCENTAR


existente na secção TIPO DE CONSULTA.

4. Inserir o nome da tabela (Localidade) a que se deseja juntar os


registos. Esta pode ser a tabela actual ou outra de uma outra base
de dados. Se escolher outra base de dados do Access, inserir o no-
me da base de dados (Editora) e o caminho, se necessário.

Figura II.6.39 Caixa de diálogo que permite identificar a base de dados e a respectiva
tabela onde se encontram os registos a acrescentar

5. Premir OK.

6. No separador ESTRUTURA, escolher a opção EXECUTAR existente na


secção RESULTADOS.

Figura II.6.40 Caixa de confirmação do processo Consulta Acrescentar

7. Para completar a consulta e juntar os registos, premir o botão SIM,


na habitual caixa de diálogo informativa.

6.9.5 Consulta actualização

As CONSULTAS ACTUALIZAR procuram registos e modificam-nos. Normal-


mente, limitamos as modificações a um único registo, mas com este pro-
cesso o Access permite fazer alterações a um conjunto de registos de uma
só vez.
Este tipo de consulta permite efectuar alterações reais nas tabelas que
estiverem associadas à consulta, pois permitem alterar o conteúdo de um
ou vários campos de uma tabela já existente, de acordo com um conjunto
de condições. De facto, com esta consulta, podemos introduzir novos valo-
res ou expressões nos campos pretendidos.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 277

Como exemplo de utilização de uma CONSULTA ACTUALIZAR, vamos au-


mentar em 10% os royalties de todos os Autores da Editora.
Assim, para criar uma consulta actualização devemos:
1. Criar uma consulta, seleccionando as tabelas ou consultas que
incluam os registos que se desejam alterar. No nosso exemplo,
seleccionamos a tabela Autores/Livros que contém o campo Royal-
ties.

Figura II.6.41 Estrutura da consulta criada para modificar registos

2. No separador ESTRUTURA, escolher a opção ACTUALIZAR


existente na secção TIPO DE CONSULTA.

3. Escolher os campos que irão sofrer as alterações da informação.


Especificar o critério na grelha QBE se necessário.

4. Inserir a expressão ou valor que será nova informação do campo


especificado.

Figura II.6.42 VISTA DE ESTRUTURA da consulta que actualiza em 10% as comissões a pagar
aos autores da editora

5. No separador ESTRUTURA, escolher a opção EXECUTAR


existente na secção RESULTADOS.
278 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.6.43 Caixa de confirmação do processo Consulta Actualizar

6. Para completar a consulta e mudar a informação dos registos, es-


colher SIM.

6.10 CONSULTAS SQL

Uma consulta SQL é uma consulta criada através de instruções da lingua-


gem SQL. As instruções SQL são muitas vezes usadas para consultar, ac-
tualizar e gerir bases de dados relacionais como é o caso do Access.
Na verdade, sempre que é criada uma consulta na VISTA DE ESTRUTURA o
Access constrói, de uma forma automática, as instruções SQL equiva-
lentes em segundo plano. Essas instruções SQL podem ser visualizadas
ou editadas na VISTA DE SQL.
A figura II.6.44 apresenta uma consulta de selecção criada através do mo-
do VISTA DE ESTRUTURA, e apresenta também a respectiva instrução SQL
criada automaticamente pelo Access.

Figura II.6.44 Exemplo de uma consulta na VISTA DE ESTRUTURA e o correspondente código


em linguagem SQL gerado automaticamente pelo Access
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 279

6.10.1 Visualização ou modificação de uma declaração SQL

Se estivermos familiarizados com a linguagem SQL podemos manipular


uma consulta, modificando-a ou visualizando-a através das declarações de
SQL, em vez de usar a grelha de QBE. Neste caso devemos:
1. Criar uma consulta, ou abrir uma já existente na VISTA DE ESTRU-
TURA.

2. No separador ESTRUTURA escolher a opção VISTA exis-


tente na secção RESULTADOS. No menu associado a
este botão, seleccionar a opção SQL.
3. Se desejarmos fazer alterações, devemos inseri-las na
janela que apresenta as instruções SQL.
4. Voltar à VISTA DE ESTRUTURA. A grelha QBE reflecte as alterações
anteriormente realizadas.

6.10.2 Consultas SQL específicas

Algumas consultas SQL, chamadas consultas SQL específicas, não podem


ser criadas na GRELHA DE ESTRUTURA, mas sim directamente na VISTA SQL.
As consultas SQL serão abordadas com mais detalhe na Parte III deste
livro. Os três tipos de consultas são:

• Consulta de UNIÃO − Combina campos correspondentes de mais do


que uma tabela ou consulta numa só linha de registo.
• Consulta de Ligação PASS-THROUGH − Envia declarações imediata-
mente para uma base de dados de SQL, ou seja, uma base de dados
exterior.
• Consulta de DEFINIÇÃO DE DADOS − Cria ou altera objectos de bases
de dados como tabelas de bases de dados do Access.

Consulta de UNIÃO
As consultas de união são particularmente vantajosas quando:
• Combinam dados de muitas tabelas ou consultas;
• É necessário criar tabelas com dados de muitos tipos;
280 BASES DE DADOS COM MICROSOFT ACCESS 2007

• É necessário criar relatórios para sumariar os dados de muitas bases


de dados.

Para criar uma consulta de UNIÃO devemos:


1. Depois de activado o separador CRIAR, premir o
botão ESTRUTURA DA CONSULTA.
2. Premir o botão FECHAR na caixa de diálogo MOSTRAR TABELA.

3. No separador ESTRUTURA, escolher a opção existente na


secção TIPO DE CONSULTA.

4. Inserir as condições de SQL SELECT para a consulta de união.

5. Aceder à FOLHA DE DADOS que apresenta os resultados


desta consulta.

Consulta de Ligação

Este tipo de consulta SQL envia declarações directamente para uma base
de dados exterior, possibilitando a obtenção de registos ou a alteração de
dados.

Para criar uma Consulta de Ligação devemos:


1. Depois de activado o separador CRIAR, premir o botão
ESTRUTURA DA CONSULTA.
2. Premir o botão FECHAR na caixa de diálogo MOSTRAR TABELA.

3. No separador ESTRUTURA, escolher a opção existente na


secção TIPO DE CONSULTA.

4. Na folha das propriedades , seleccionar a propriedade


Cadeia de ligação ODBC para especificar a informação da
base de dados a conectar.

5. Inserir a consulta de passagem de dados.


II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 281

6. Na folha de propriedades da consulta, passar a propriedade


Devolve Registos para SIM se a consulta devolve registos, ou
NÃO se esta não devolver.

7. No separador ESTRUTURA, escolher a opção EXECUTAR


existente na secção RESULTADOS.

Consulta de Definição de Dados


Utiliza-se este tipo de consulta para criar ou alterar objectos da bases de
dados, apesar de também ser possível fazer estes procedimentos a partir
da forma normal de construção.

Cada consulta de definição de dados consiste em apenas uma declaração


que pode ser:
• CREATE TABLE Cria uma tabela.
• ALTER TABLE Altera a estrutura de uma tabela existente, por
exemplo, adicionando ou removendo um cam-
po.
• DROP TABLE Remove uma tabela de uma base de dados.
• CREATE INDEX Cria uma indexação para um campo.
• DROP INDEX Remove uma indexação de um campo.

Para criar uma consulta de definição de dados devemos:


1. Depois de activado o separador CRIAR, premir o
botão ESTRUTURA DA CONSULTA.
2. Premir o botão FECHAR na caixa de diálogo MOSTRAR TABELA.

3. No separador ESTRUTURA, escolher a opção existente


na secção TIPO DE CONSULTA.

4. Inserir a condição para a consulta de definição de dados.

5. No separador ESTRUTURA, escolher a opção EXECUTAR


existente na secção RESULTADOS.
282 BASES DE DADOS COM MICROSOFT ACCESS 2007

6.10.3 Utilização de Subconsultas

Uma SUBCONSULTA é uma declaração tipo SQL SELECT dentro de outra


CONSULTA DE SELECÇÃO ou CONSULTA DE ACÇÃO, ou seja, a SUBCONSULTA é
uma consulta que se baseia na consulta principal.
É possível criar uma SUBCONSULTA que defina um campo, ou podemos
usar uma SUBCONSULTA que defina o critério de um campo. Para definir um
critério para um campo, insere-se a declaração SELECT na linha de crité-
rio na grelha de QBE.
Podemos utilizar uma SUBCONSULTA para:
• Calcular totais;
• Testar a existência de algum resultado (se existe ou não uma certa
palavra ou informação de um campo);
• Encontrar algum valor que seja maior, menor ou tão grande, como
um valor da SUBCONSULTA;
• Criar SUBCONSULTA dentro de SUBCONSULTA.

6.11 EXERCÍCIO GUIADO

Consideremos novamente a nossa base de dados para exemplificação das


operações de consultas com o Access. Vamos fazer uma abordagem a
grande parte dos procedimentos associados às consultas, recorrendo a
exemplos que se enquadrem na utilização da base de dados Editora.

Criação de consultas com base em várias tabelas


Vamos começar por criar uma consulta que apresente os dados referentes
às vendas dos livros da editora. A consulta deverá apresentar a data, o tí-
tulo, a quantidade e o preço unitário do livro.
Para criar a nova consulta devemos accionar o separador
CRIAR do friso. Posteriormente, seleccionamos o Botão ES-
TRUTURA DA CONSULTA na secção OUTRO. A partir do quadro
MOSTRAR TABELA adicionamos as tabelas cujos campos vão ser utilizados
na consulta, nomeadamente Vendas, Venda/Livro e Livros.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 283

Figura II.6.45 Quadro MOSTRAR TABELA que permite a adição das tabelas cujos campos vão
ser utilizados na consulta

As referidas tabelas deverão aparecer na parte superior da janela da VISTA


DE ESTRUTURA ligadas pelos respectivos relacionamentos. Em seguida
seleccionamos os campos que pretendemos incluir na consulta. Vamos
incluir nesta primeira consulta os campos Número, Data da venda, Título,
Quantidade e PreçoUnitário do respectivo livro.
Para inserir um campo na grelha de consulta, como já referimos, podemos
arrastá-lo da respectiva tabela para a grelha ou seleccioná-lo na caixa de
listagem, que podemos abrir na primeira linha da grelha.

Figura II.6.46 VISTA DE ESTRUTURA da consulta Valor Vendas

No final, a nossa consulta deve apresentar uma estrutura como a que pode
ser vista na figura II.6.46. Depois de concluída a primeira fase da elabora-
ção da consulta, devemos efectuar a sua gravação. Para tal, clicamos no
respectivo botão GUARDAR e digitamos o nome Valor Vendas na janela
que aparece no ecrã.
284 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.6.47 Caixa de diálogo usada para atribuir um nome e


efectuar a gravação da consulta

Estabelecer uma ordenação


Vamos estabelecer uma ordenação dos registos da nossa consulta pela
data da venda, de forma a aparecem primeiro as vendas mais recentes.
Neste sentido, devemos premir com o rato no rectângulo em branco da co-
luna “Data” correspondente à opção ORDENAR. Em seguida, devemos es-
colher a opção DESCENDENTE que aparece na caixa de combinação.

Figura II.6.48 Escolha da opção de ordenação na grelha da VISTA DE ESTRUTURA da


consulta Valor Vendas

Critérios para a consulta


Podemos, a partir desta consulta, definir os mais variados critérios de
selecção. Por exemplo, vamos elaborar a consulta que apresente apenas
as Vendas do Livro “Desenho e Implementação de bases de dados com
Microsoft Access XP” em 2004.
Vamos chamar a esta consulta ”Vendas Access 2004”, que terá a mesma
estrutura de campos da consulta anterior. Em seguida, vamos introduzir na
linha CRITÉRIO as respectivas condições, tal como mostra a figura.

Figura II.6.49 VISTA DE ESTRUTURA da consulta que apresenta apenas as vendas do livro
“Desenho e Implementação de bases de dados com Microsoft Access XP” em 2004
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 285

Consultas com parâmetros


Suponhamos que, ao abrir a consulta “Vendas dos Livros”, queríamos indi-
car um determinado intervalo de datas para visualizar as respectivas ven-
das, sem sermos obrigados a alterar a condição no modo VISTA DE ESTRU-
TURA da consulta.

Para resolver este problema, vamos criar uma nova consulta com o nome
“Vendas Access Mês” que terá como base a consulta anterior. Adicional-
mente, vamos impor que o intervalo de tempo será definido no início da
sua execução. A figura seguinte apresenta a sequência dos procedimentos
a adoptar, desde a configuração dos critérios da consulta, até à sua exe-
cução.

Figura II.6.50 Consulta que apresenta as vendas do livro “Desenho e Implementação de


bases de dados com Microsoft Access XP” nos meses de Agosto e Setembro 2004

Campos calculados
Ainda recorrendo à consulta “Vendas dos Livros”, vamos efectuar algumas
alterações que permitam introduzir um campo calculado. Neste caso,
vamos inserir um novo campo que apresente o valor da venda de cada
livro, ou seja, vamos multiplicar a quantidade pelo preço unitário de cada
livro vendido.
Uma vez aberta a consulta em VISTA DE ESTRUTURA, vamos posicionar o
indicador do rato na linha CAMPO e na primeira coluna da grelha que estiver
vazia. Nessa célula escrevemos “Valor:” que será a legenda a apresentar
286 BASES DE DADOS COM MICROSOFT ACCESS 2007

para esta nova coluna e, finalmente, digitamos a expressão que efectua o


cálculo.

Figura II.6.51 VISTA DE ESTRUTURA e folha de dados da consulta que calcula valor da venda
de cada livro através de um campo calculado

Cálculos automáticos em função de agrupamentos de dados


Considerando de novo as vendas da Editora, vamos criar uma nova con-
sulta que nos permita saber, para cada Revendedor, o total de vendas já
efectuadas pela nossa Editora.
Para construir esta consulta deveremos utilizar as tabelas Vendas, Ven-
das/Livro e Revendedores. Depois de adicionar as tabelas à janela VISTA
DE ESTRUTURA da consulta, vamos colocar o campo “Nome do Revende-
dor” na primeira coluna da grelha QBE. Posteriormente, vamos colocar o
campo “Quantidade” e “Preço Unitário” nas duas colunas seguintes da
mesma grelha, uma vez que estes campos vão ser alvo de um cálculo
(Quantidade * PreçoUnitário) que será definido na última coluna.
Depois de activar o botão TOTAIS vamos agrupar os regis-
tos da consulta pelo campo “Nome do Revendedor” e, em
seguida, vamos impor para o valor da venda o cálculo automático Soma.
De notar que os campos “Quantidade” e “Preço Unitário” não são mostra-
dos nesta consulta.
II.6 MANIPULAÇÃO DE DADOS COM CONSULTAS 287

Figura II.6.52 VISTA DE ESTRUTURA da consulta que nos permite saber para cada
Revendedor o total de vendas já efectuadas pela nossa Editora

Consultas de acção
Para a abordagem a este tipo de consultas vamos criar uma consulta de
acção que provoque alterações à informação da nossa base de dados.
Suponhamos que pretendemos alterar o número de unidades editadas
para cada livro, pois a empresa que faz a impressão dos livros ofereceu
um bónus de 50 livros para encomendas de 1500. Para atingir este objec-
tivo vamos utilizar uma consulta de actualização que deverá efectuar a
substituição do valor 1500 por 1550 e simultaneamente registá-la para
todos os Livros da Editora.
Para criar esta consulta de actualização devemos:
1. Criar uma consulta, seleccionando a tabela Livros que contém o
campo a alterar (NºUnidadesEd).
2. No separador ESTRUTURA, escolher a opção ACTUALIZAR existente
na secção TIPO DE CONSULTA.

3. Levar o campo NºUnidadesEd para a grelha QBE.


288 BASES DE DADOS COM MICROSOFT ACCESS 2007

4. Na linha “Actualizar para:” da grelha QBE introduzir o novo valor


1550 e na linha “Critério:” introduzir o valor antigo 1500.

Figura II.6.53 VISTA DE ESTRUTURA da consulta que actualiza o número de unidades


editadas para cada livro

5. No separador ESTRUTURA, escolher a opção EXECUTAR existente na


secção RESULTADOS.

6. Para completar a consulta e alterar a informação dos registos,


escolher SIM, na caixa de diálogo que pergunta se deseja actualizar
os 77 registos encontrados.

Figura II.6.54 Caixa de confirmação do processo Consulta Actualizar


II.7
Construir uma interface com
Formulários

O nome formulário foi atri-


buído a este objecto do
Access por representar, em
várias ocasiões, o formulário
de papel que as pessoas uti-
lizam no dia-a-dia para re-
gistar informações.

De facto, podemos criar formulários em forma de facturas, recibos, extrac-


tos bancários, etc. Contudo, na maioria das vezes, os formulários que
criamos não têm o seu equivalente no mundo real, apenas são usados
para aceder à informação armazenada na nossa base de dados. Os for-
mulários constituem uma forma melhorada de apresentar os dados das ta-
belas e consultas.
Pode-se também utilizar um formulário como um painel de navegação que
abre outros formulários e relatórios na base de dados ou como uma caixa
de diálogo personalizada que aceita as entradas do utilizador e executa
uma acção com base nessas entradas.

7.1 APLICAÇÃO DE FORMULÁRIOS

Um formulário oferece uma boa apresentação para inserção, alteração ou


visualização de registos da nossa base de dados. Na verdade, as fer-
ramentas de construção que o Access nos disponibiliza ajudam a criar for-
mulários com as seguintes características:
290 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Apresenta os dados de uma forma atractiva com tipos de letra es-


peciais e outros efeitos gráficos como cores ou sombras;

• Assemelha-se a uma folha de papel com os respectivos cabeçalhos


e rodapés;
• Calcula totais;
• Permite a execução de pesquisas de informação com a introdução
de critérios de selecção;

• Cria gráficos;
• Utiliza botões de comando que desencadeiam determinadas acções;
• Apresenta dados de mais do que uma tabela ou consulta;
• Automatiza tarefas comuns por nós idealizadas.

7.2 OPÇÕES PARA A CRIAÇÃO DE FORMULÁRIOS

Antes de criarmos um formulário temos que considerar os dados que farão


parte do mesmo, ou seja, qual a tabela ou consulta que lhe servirá de
base. Contudo, podemos ter ainda formulários que não sejam suportados
por uma tabela ou uma consulta, como um painel de navegação que abre
outros formulários e relatórios da base de dados.
No Access, os formulários podem ser construídos de diferentes maneiras e
assumir formas muito diversificadas. As diferentes formas de criação de
um formulário são:
• Formulário de criação rápida

• Assistente
• Formulário em branco
• Vista de estrutura
Embora as duas primeiras opções sejam bastante práticas e fáceis de utili-
zar na construção de diversos tipos de formulários, a verdade é que nem
sempre são as mais indicadas porque apresentam insuficiências e limita-
ções que só poderão ser colmatadas com a utilização da VISTA DE
ESTRUTURA.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 291

No que diz respeito aos Modos de visualização dos formulários, podere-


mos ter:

• VISTA DE ESQUEMA: Esta vista permite visualizar o formulário com os


seus diferentes elementos, incluindo os dados. Com esta vista
podemos rearranjar os dados e aplicar diferentes formatações.

• VISTA DE ESTRUTURA: Enquanto a VISTA DE ESQUEMA providencia a


forma mais simples de refinar o nosso formulário, a VISTA DE
ESTRUTURA apresenta a gama completa das potencialidades as-
sociadas a este procedimento. Nesta vista, não vemos os dados
da base de dados, mas sim elementos (controlos dependentes)
que os representam.

• VISTA DE FORMULÁRIO: As vistas anteriores são usadas para criarmos


os nossos formulários. Uma vez este processo concluído, a VISTA
DE FORMULÁRIO é usada para trabalhar os dados, ou seja, inserir,
consultar, filtrar, ordenar, etc.

Quando abrimos um formulário no PAINEL DE


NAVEGAÇÃO, fazendo duplo clique sobre o seu nome,
este será aberto no modo VISTA DE FORMULÁRIO.
Contudo, se quisermos abrir o formulário com outra vista então devemos
seleccionar o formulário e clicar no botão direito do rato. Desta forma, apa-
recerá um menu rápido que possibilitará outro tipo de escolha.

7.3 FORMULÁRIO DE CRIAÇÃO RÁPIDA

O FORMULÁRIO DE CRIAÇÃO RÁPIDA é a forma mais simples de criação de


um formulário. Normalmente, é utilizado quando necessitamos rapida-
mente de editar os dados de uma tabela ou de uma consulta.

Quando usamos um formulário para visualizar dados, devemos conectar


o formulário à tabela ou consulta que fornecerá os dados. Esta forma de
criação de formulário apresenta todos os campos e registos existentes
na tabela (ou consulta) previamente escolhida. Contudo, não é possível
ao utilizador, durante o processo de criação, fazer qualquer tipo de
personalização.
292 BASES DE DADOS COM MICROSOFT ACCESS 2007

Para criar um FORMULÁRIO DE CRIAÇÃO RÁPIDA devemos seguir os seguin-


tes passos:
1. No PAINEL DE NAVEGAÇÃO, seleccionar a tabela ou consulta que
pretendemos usar no formulário.
2. No separador CRIAR do friso, seleccionar
o botão FORMULÁRIO na secção FORMULÁ-
RIOS.

Depois de seleccionado o botão FORMULÁRIO, aparecerá automaticamente


no ecrã um formulário com a informação da tabela (ou consulta) devida-
mente organizada e alinhada. Como podemos comprovar na figura II.7.1,
os campos de informação são dispostos na mesma ordem pela qual foram
inseridos na tabela (ou consulta) original. No entanto, a sua disposição e
dimensão podem ser facilmente alteradas, pelos procedimentos apresenta-
dos na figura seguinte:

Arrastar os campos
de informação para
alterar a sequência

Redimensionar
os campos de
informação

Figura II.7.1 Procedimentos para ajustar os campos de informação na VISTA DE ESQUEMA

Opcionalmente, podemos editar o texto apresentado nos campos de infor-


mação, clicando no seu interior. Podemos também alterar o formato do tex-
to para o tornar mais atractivo, seleccionando as opções (tamanho, tipo de
letra, alinhamento, cor, etc.) da secção TIPO DE LETRA do friso.

Figura II.7.2 Configuração da secção TIPO DE LETRA existente no friso


II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 293

Se pretendermos seleccionar vários campos de informação de uma só


vez, seleccionamos esses campos enquanto pressionamos a tecla
CTRL. Desta forma, poderemos atribuir rapidamente o mesmo formato a
vários elementos do formulário.

Depois de construído o formulário, podemos gravá-lo através do botão


GUARDAR. Na próxima vez que o abrirmos poderemos constatar que o
Access apresentará o formulário com as mais recentes alterações aos
dados.

7.4 FORMULÁRIOS USANDO O ASSISTENTE

O ASSISTENTE DE FORMULÁRIOS permite criar automaticamente os formulá-


rios com base num conjunto de opções, como a selecção de campos das
tabelas ou consultas e criação de um layout personalizado. Contudo, as
questões colocadas no assistente são um pouco básicas, fazendo com que
este processo seja simplesmente considerado como um bom meio para
começar a construir formulários.

7.4.1 Criação de um novo formulário com Assistente

1. No friso, seleccionamos o separador CRIAR e,


posteriormente, premimos o botão MAIS FORMU-
LÁRIOS que se encontra na secção FORMULÁRI-
OS.

2. No menu associado a esta opção seleccionamos a opção AS-


SISTENTE DE FORMULÁRIOS.

3. Na caixa de diálogo que aparece no ecrã seleccionamos a origem


dos dados para o formulário. Assim sendo, na caixa TABELA/
CONSULTA seleccionamos a tabela ou consulta que contém os da-
dos que serão apresentados no formulário.
294 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.7.3 Primeiro quadro do assistente usado para possibilitar a escolha de campos a
inserir no formulário

4. Inserimos campo a campo através do botão , ou todos os cam-


pos através do botão .
5. Escolhemos o esquema de apresentação dos dados: Colunas, Ta-
bela, Folha de Dados ou Justificado.

Figura II.7.4 Quadro do assistente usado para possibilitar a escolha do esquema do


formulário

6. Escolhemos o estilo de apresentação gráfica que configura os da-


dos e o fundo do formulário.
7. Finalmente, introduzimos o nome a dar ao formulário.

7.5 FORMULÁRIOS EM BRANCO

Em alternativa aos processos de criação anteriormente abordados, pode-


mos usar a ferramenta do Access FORMULÁRIO EM BRANCO. Este processo
também pode ser bastante rápido e fácil, especialmente quando planea-
mos construir um formulário com poucos campos. Os procedimentos
seguintes explicam como podemos criar um formulário com esta funciona-
lidade:
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 295

1. No friso, seleccionar o separador


CRIAR e, em seguida, premir o botão
FORMULÁRIO EM BRANCO que se encontra na secção FORMULÁRIOS.
2. Em seguida, arrastar do Painel LISTA DE CAMPOS o(s) campo(s)
desejado(s) para a área em branco do formulário (notar que, neste
momento, estamos a trabalhar com o formulário na VISTA DE ES-
QUEMA).

3. Finalmente, podemos alterar a disposição dos campos. Através do


botão podemos dispor os campos em coluna substituindo a sua
disposição original em linha.

Figura II.7.5 Funcionalidade do Access para alterar a disposição dos campos

Se o Painel LISTA DE CAMPOS não estiver visível, então te-


remos que premir o botão ADICIONAR CAMPOS EXISTENTES
que se encontra na secção CONTROLOS.

7.6 FORMULÁRIOS USANDO A VISTA DE ESTRUTURA

A construção de formulários através da VISTA DE ESTRUTURA transporta-


-nos para um nível superior onde será possível utilizar um conjunto alar-
gado de técnicas e ferramentas. Na verdade, através desta vista temos
liberdade total para construir à “mão” todos os centímetros quadrados do
nosso formulário.
296 BASES DE DADOS COM MICROSOFT ACCESS 2007

7.6.1 Criação de um formulário com a VISTA DE ESTRUTURA

1. No friso, seleccionar o separador CRIAR e,


posteriormente, premir o botão ESTRUTURA
DE FORMULÁRIO que se encontra na secção FORMULÁRIOS.

2. Em seguida, arrastar do Painel LISTA DE CAMPOS o(s) campo(s) de-


sejado(s) para a área em branco do formulário.

Figura II.7.6 Configuração do Painel LISTA DE CAMPOS

As linhas verticais e horizontais da grelha que aparecem apenas na


VISTA DE ESTRUTURA do formulário são usadas para ajudar o utilizador a
inserir os diferentes componentes do relatório de uma forma precisa, ali-
nhada e organizada.

De salientar que o modo VISTA DE ESTRUTURA é uma forma diferente de


olharmos para um formulário. Ao contrário do VISTA DE ESQUEMA, nesta
vista não visualizamos a informação da nossa base de dados, mas sim
referências aos campos da mesma. Claro que enquanto trabalhamos com
o formulário podemos facilmente alternar entre estas duas vistas, seleccio-
nando um dos botões apresentados na BARRA DE ESTADO, ou seleccio-
nando a opção respectiva no menu VISTA.

Figura II.7.7 Opções para alterar a vista do Formulário


II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 297

7.7 SECÇÕES DO FORMULÁRIO

O modo VISTA DE ESTRUTURA dos formulários apresenta um conjunto de


zonas de introdução de controlos que se assemelham a uma folha de
papel com os respectivos corpo, cabeçalho e rodapé. Contudo, quando um
formulário é criado de novo, apenas a secção DETALHE é apresentada, pois
é esta que mostra os registos da base de dados.

Figura II.7.8 VISTA DE ESTRUTURA de um formulário com a apresentação das secções


respectivas

• CABEÇALHO DO FORMULÁRIO − Esta secção é normalmente usada


para o título do formulário, data ou para botões de comando que
abram formulários relacionados. O seu conteúdo irá aparecer no to-
po do formulário quando este estiver activo.

• DETALHE − É o corpo do formulário. Mostra principalmente os com-


trolos que representam os registos. Podemos visualizar um registo
no ecrã, um em cada página, ou vários numa só.

• RODAPÉ DO FORMULÁRIO − Mostra informação do tipo: instruções


para utilização do formulário, botões de comando, controlos ilimita-
dos que aceitem inserção. O seu conteúdo irá aparecer na parte
inferior do formulário quando este estiver activo. Este tipo de roda-
pé não aparece na vista de Folha de Dados.

7.7.1 Accionar as secções do Formulário

O formato original do formulário apresenta apenas a secção de detalhe.


Contudo, sempre que desejarmos aceder às secções de CABEÇALHO e
RODAPÉ, devemos premir o botão direito do rato e seleccionar a opção CA-
BEÇALHO/RODAPÉ DE FORMULÁRIO do menu rápido que aparece no ecrã.
298 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.7.9 Menu que contém o comando que permite adicionar as secções do formulário

7.7.2 Alterar o tamanho de uma secção

Para que o tamanho de cada secção fique com a dimensão que pretende-
mos, devemos colocar o ponteiro do rato numa das barras que delimitam
as secções do formulário. Em seguida, movemos a cruz que representa o
ponteiro para cima ou para baixo por forma a ajustar o tamanho da secção.

Figura II.7.10 Processo de redimensionamento das secções do Formulário

7.7.3 Seleccionar as propriedades de uma secção ou do próprio


formulário

As propriedades de um formulário podem ser usadas para a alteração de


uma secção. Várias características são apresentadas nestas propriedades,
tais como cores, nome, visibilidade, etc. Para aceder às propriedades de
uma secção devemos premir o botão direito do rato e seleccionar a opção
PROPRIEDADES do menu rápido que aparece no ecrã.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 299

Figura II.7.11 Menu que contém o comando que permite seleccionar as propriedades das
secções do formulário

7.8 CONTROLOS NUM FORMULÁRIO

7.8.1 Controlos dependentes, independentes e de cálculo

Os controlos são os objectos que inserimos no interior de um formulário.


Estes objectos têm normalmente finalidades e características diferentes,
por isso, quando se cria um controlo temos que considerar a informação
que ele representará. Essa informação pode ser referente a dados da base
de dados, instruções, legendas ou a valores de cálculo.

Controlo
independente com
formato tipo texto

Controlos
dependentes

Figura II.7.12 Formulário com diferentes tipos de controlos

• Controlo dependente − É um controlo cujo tipo de dados é um


campo de uma tabela ou consulta. Usamos estes controlos para
inserir e alterar valores dos campos. Esses valores podem ser tex-
to, datas, números, figuras ou gráficos. A caixa de texto é o controlo
dependente mais comum.
300 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Controlo independente − É um controlo que não está associado a


campos ou expressões). É utilizado para mostrar informação, li-
nhas, rectângulos e figuras.

• Controlo de Cálculo − É um controlo cujo tipo de dados é uma


expressão. Mais que um campo é um controlo de cálculo. Este
controlo contempla expressões que podem combinar operadores,
nomes de controlos, nomes de campos, funções e constantes.

7.8.2 Inserir campos na área do formulário

Para inserir um campo clicamos sobre ele na caixa de listagem e arras-


tamo-lo para a posição desejada. Um campo inserido num formulário tem
duas componentes: O nome do campo (que pode ser alterado) e o espaço
(rectangular) onde são apresentados os dados do campo.

Figura II.7.13 Processo de inserção de um campo de informação na área do formulário

Com o ponteiro do rato podemos clicar sobre um campo inserido no


formulário e manipulá-lo conforme desejarmos. Podemos arrastá-lo para
outra posição, expandir ou reduzir as respectivas caixas.

7.8.3 Criar outros controlos

No friso, seleccionar o separador ESTRUTURA e, em seguida, premir um


dos botões que se encontram na secção CONTROLOS. Se quisermos criar
controlos independentes ou de cálculo, normalmente usamos a respectiva
FOLHA DAS PROPRIEDADES que tem um papel fundamental para a sua per-
sonalização.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 301

Grupo de opções objectos


Rectângulo
Caixa de combinação Botões de alternar
Linha
Caixa de listagem Quebra de página

Seleccionar

Assistentes
de controlo
Mais controlos

Subformulário/Subrelatório Imagem

Moldura de objecto Controlo separador


dependente
Caixa de verificação
Botão de opções

Figura II.7.14 Configuração da secção CONTROLOS existente no friso

7.8.4 Criar controlos que calculem valores

Quando desejamos mostrar um valor que seja o resultado de um cálculo,


usa-se uma expressão como tipo de dados para um controlo. Cada vez
que abrimos o formulário o Access calcula os valores correctos com base
nos últimos dados disponíveis e actualizados (ver secção 7.8.10).
Para criar uma caixa de texto calculado devemos:
1. No friso, seleccionar o separador ESTRUTURA e, de seguida,
premir o botão CAIXA DE TEXTO que se encontra na secção
CONTROLOS.
2. Inserir a CAIXA DE TEXTO no formulário clicando no seu interior e,
em seguida, ajustar para o tamanho desejado.
3. Colocar o ponteiro do rato dentro da CAIXA DE TEXTO, clicando no
seu interior.
4. Escrever o sinal de igual seguido da expressão que faz parte desta
CAIXA DE TEXTO.
302 BASES DE DADOS COM MICROSOFT ACCESS 2007

7.8.5 Criar controlos tipo etiqueta

As etiquetas são controlos utilizados para mostrar um texto descritivo como


título, legenda ou resumo de instruções. As etiquetas não mostram valores
de campos ou expressões e são sempre ilimitadas. São também estáticas,
ou seja, nunca se alteram sempre que se abre um formulário, ao contrário
dos registos ou valores calculados. A etiqueta pode servir tanto de etiqueta
de um campo como de etiqueta de uma caixa de texto.

Normalmente os controlos utilizados para mostrar texto devem apresen-


tar o mesmo tipo de formatação. Assim sendo, podemos seleccionar
(com o rato) vários controlos ao mesmo tempo pressionando a tecla
CTRL e, em seguida, aplicar um formato (tamanho, cor, tipo de letra,
etc.) que seja aplicado a todos.

Como criar uma etiqueta:


1. No friso, seleccionar o separador ESTRUTURA e premir o botão
RÓTULO que se encontra na secção CONTROLOS.
2. Criar uma etiqueta, transportando-a para o local pretendido no
formulário.

Como ligar uma etiqueta a um controlo


1. No friso, seleccionar o separador ESTRUTURA e, posterior-
mente, premir o botão RÓTULO que se encontra na secção
CONTROLOS.
2. Inserir a etiqueta no formulário, clicando no seu interior.
3. No botão que aparece posicionado à esquerda do controlo,
seleccionar a opção ASSOCIAR RÓTULO A UM CONTROLO…

Figura II.7.15 Processo de associação de um rótulo a um CONTROLO na VISTA DE ESTRUTURA


do formulário
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 303

4. Na janela que aparece no ecrã, seleccionar o campo do formulário


ao qual será associada a etiqueta.

Figura II.7.16 Caixa de diálogo que possibilita a escolha de


um campo para associar a um rótulo

5. Finalmente, clicar em OK.

7.8.6 Alterar as propriedades de um controlo já existente

Depois de criarmos um formulário podemos alterar as propriedades de


alguns controlos. Para mudar as propriedades de um controlo existente
devemos:
1. No friso, seleccionar o separador ESTRUTURA e, só
depois, premir o botão FOLHA DE PROPRIEDADES que
se encontra na secção FERRAMENTAS.

Figura II.7.17 Processo de alteração das propriedades do CONTROLO nome

2. No topo do quadro das propriedades pode-se escolher a categoria


de propriedades que se deseja configurar. As diferentes categorias
de propriedades são apresentadas na tabela seguinte:
304 BASES DE DADOS COM MICROSOFT ACCESS 2007

Propriedade Descrição

Tudo Mostra todas as propriedades do controlo.

Dados Determina as características dos dados que são mos-


trados no controlo, como o valor por omissão, o nú-
mero de casas decimais, o formato dos dados, etc.

Acontecimentos Especifica uma macro ou procedimentos (procedures)


que o Access executa quando a acção decorre.

Formato Define as características de aparência do controlo,


como o tamanho ou cor do controlo.

Outra Mostra características adicionais do controlo, como o


nome, a descrição que aparece no rodapé, etc.

Figura II.7.18 Tabela com a descrição das diferentes categorias de propriedades

3. Na FOLHA DE PROPRIEDADES, seleccionar a propriedade que se


deseja alterar ou inserir (caso esta esteja em branco). Pode apare-
cer uma lista de opções para esta propriedade ou, então, pode
existir um valor por omissão que poderá ser alterado.

Caso queiramos alterar as propriedades de um conjunto de controlos,


basta seleccionar esse conjunto e proceder da mesma forma que se pro-
cede para a alteração das propriedades de um único controlo.

7.8.7 Grupo de Opções

Um GRUPO DE OPÇÕES é um controlo que tem como objectivo facilitar a


escolha de dados no formulário. As escolhas feitas pelo utilizador podem
ser feitas através de um clique do rato, em vez de digitar um conjunto de
caracteres.
Podemos usar um GRUPO DE OPÇÕES para um conjunto limitado de alterna-
tivas que ficam necessariamente associadas a um campo de uma tabela.
As alternativas de um GRUPO DE OPÇÕES podem ser apresentadas em
BOTÕES DE OPÇÃO, CAIXAS DE VERIFICAÇÃO ou BOTÕES DE ALTERNAR, em-
bora apenas uma possa ser activada.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 305

Como exemplo, vamos construir um GRUPO DE OPÇÕES no formulário


Revendedores. Neste sentido, vamos facilitar o processo de escolha das
designações das Regiões de onde são originários os Revendedores.

Como criar um Grupo de Opções com o assistente


1. Abrir o Formulário Revendedores em VISTA DE ESTRUTURA e, em
seguida, eliminar o controlo que representa a Região (este controlo
irá ser substituído pelo GRUPO DE OPÇÕES que vamos criar).
2. No friso, seleccionar o separador ESTRUTURA e, posterior-
mente, premir o botão ASSISTENTE DE CONTROLOS que se en-
contra na secção CONTROLOS.
3. No mesmo separador premir o botão GRUPO DE OPÇÕES que
se encontra na secção CONTROLOS.
4. Desenhar um rectângulo na área desejada do formulário. Automati-
camente o Assistente do GRUPO DE OPÇÕES irá ser despoletado.
Em alternativa, arrastar para a área do formulário o campo Região,
do painel LISTA DE CAMPOS.
5. Na primeira caixa de diálogo deve-se digitar os nomes que preten-
demos para cada opção. Considerando o nosso exemplo, digitamos
as três possibilidades para a Região do Revendedor.

Figura II.7.19 Assistente do GRUPO DE OPÇÕES que permite a entrada do


nome das opções

6. Na caixa de diálogo seguinte, indicar a opção que deve estar selec-


cionada por predefinição. No nosso exemplo, não pretendemos que
isso aconteça, pelo que seleccionamos a segunda opção.
306 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.7.20 Assistente do GRUPO DE OPÇÕES que permite a escolha da


opção predefinida

7. Na caixa de diálogo, indicar quais os valores que ficarão armazena-


dos na tabela, consoante a opção seleccionada pelo utilizador.

Figura II.7.21 Assistente do GRUPO DE OPÇÕES que permite a introdução


de valores para as opções

8. Em seguida, indicar o nome do campo da tabela que irá armazenar


o valor seleccionado. O campo que deverá armazenar a opção es-
colhida, no nosso exemplo, é o campo Região.

Figura II.7.22 Assistente do GRUPO DE OPÇÕES que permite a escolha do


campo que irá armazenar os dados
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 307

9. Escolher o estilo que irá estar associado ao GRUPO DE OPÇÕES,


tanto ao nível do formato dos botões como ao nível do contorno
exterior.

Figura II.7.23 Assistente do GRUPO DE OPÇÕES que permite a escolha do


estilo associado ao grupo de opções

10. Na última caixa de diálogo, indicar o nome que irá caracterizar o


GRUPO DE OPÇÕES e premir o botão CONCLUIR.

Depois de concluir o processo de criação do GRUPO DE OPÇÕES, verificar


se o funcionamento está correcto e se o aspecto respeita as opções esco-
lhidas.

Figura II.7.24 Aspecto final de um GRUPO DE OPÇÕES com três


opções

7.8.8 Caixa de Listagem e Caixa de Combinação

As CAIXAS DE LISTAGEM e as CAIXAS DE COMBINAÇÃO são utilizadas nos


formulários para disponibilizarem uma lista de opções. Estes controlos têm
funções muito semelhantes e podem-se revelar muito úteis em procuras
rápidas de informação.
A escolha por um dos controlos depende do tipo de informação que dese-
jamos mostrar nas linhas da lista. Com a ajuda do assistente podemos
escolher uma de três opções para definir a informação a apresentar nas
linhas das caixas, nomeadamente:
308 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Podemos mostrar os dados directamente de uma tabela ou de uma


consulta.

• Podemos inserir os valores exactos que desejamos mostrar na lista


de valores.
• Podemos ainda apresentar os dados a partir de um ou mais cam-
pos de uma tabela, em que o valor seleccionado irá fazer com que
os outros registos do formulário sejam automaticamente actualiza-
dos.

Como exemplo, vamos construir uma CAIXA DE COMBINAÇÃO ou de


LISTAGEM que apresente as designações das colecções de Livros editadas
e que facilite a respectiva escolha na altura do registo de um novo livro.

Como criar uma CAIXA DE LISTAGEM ou CAIXA DE COMBINAÇÃO usando o


assistente
1. Abrir o Formulário Livros em VISTA DE ESTRUTURA e, em seguida,
eliminar o controlo que representa o código da colecção (este con-
trolo irá ser substituído pela CAIXA DE COMBINAÇÃO ou de LISTAGEM
que vamos criar).
2. No friso, seleccionar o separador ESTRUTURA e, posterior-
mente, premir o botão ASSISTENTE DE CONTROLOS, que se en-
contra na secção CONTROLOS.

3. No mesmo separador do friso, seleccionar o botão CAIXA DE


COMBINAÇÃO ou CAIXA DE LISTAGEM que se encontra na secção
CONTROLOS.
4. Desenhar um rectângulo na área desejada do formulário. Automati-
camente o Assistente da CAIXA DE LISTAGEM ou CAIXA DE COM-
BINAÇÃO irá ser executado. Em alternativa, arrastar para a área do
Formulário o campo CodColecção do Painel LISTA DE CAMPOS
5. Na primeira caixa de diálogo, indicar a origem dos dados a apre-
sentar na CAIXA DE COMBINAÇÃO ou de LISTAGEM. Considerando o
nosso exemplo, escolher a primeira opção.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 309

Figura II.7.25 Assistente da CAIXA DE COMBINAÇÃO que permite a entrada


da origem dos dados

6. Nas caixas de diálogo seguintes indicar o nome da tabela ou da


consulta onde os valores a apresentar na CAIXA DE COMBINAÇÃO es-
tão armazenados.

Figura II.7.26 Assistente da CAIXA DE COMBINAÇÃO que permite a escolha


da tabela ou consulta e respectivos campos

7. Escolher a sequência de ordenação que pretende para a lista.

Figura II.7.27 Assistente da CAIXA DE COMBINAÇÃO que possibilita a


escolha de um campo para a ordenação da lista

8. Em seguida, confirmar os dados a apresentar na CAIXA DE COMBI-


NAÇÃO e ajustar a largura da coluna.
310 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.7.28 Assistente da CAIXA DE COMBINAÇÃO que possibilita a


correcção da largura da coluna da lista

9. Na caixa de diálogo seguinte, indicar o nome do campo da tabela


ou da consulta que irá armazenar o valor seleccionado.

Figura II.7.29 Assistente da CAIXA DE COMBINAÇÃO que sugere a escolha


do campo que irá armazenar os dados

10. Finalmente, indicar o nome que irá caracterizar a CAIXA DE COMBI-


NAÇÃO e premir o botão CONCLUIR.

Depois de concluir o processo de criação da CAIXA DE COMBINAÇÃO ou de


LISTAGEM, podemos usufruir de um formulário que nos permita localizar de
uma forma fácil e rápida a descrição das colecções de livros editados.

Figura II.7.30 Aspecto final de uma CAIXA DE COMBINAÇÃO e de


uma CAIXA DE LISTAGEM com onze opções
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 311

A utilização destas ferramentas nem sempre se mostra útil quando os


valores listados têm valores duplicados. Nestes casos será conveniente
inserir na lista não apenas um campo, mas sim dois campos de infor-
mação.

7.8.9 Subformulários

Uma base de dados devidamente estruturada contempla um conjunto de


tabelas que se relacionam entre si. Os SUBFORMULÁRIOS são objectos que
podem tirar partido dessas relações para apresentar informação ligada.
Com efeito, um SUBFORMULÁRIO é usado para incluir num FORMULÁRIO
informação de mais do que uma tabela.
Um SUBFORMULÁRIO é um formulário dentro de outro formulário. No Access
o primeiro formulário é chamado formulário principal e entre estes dois
formulários é indispensável que haja uma ligação, normalmente uma rela-
ção do tipo um-para-muitos.
Como exemplo, vamos construir um SUBFORMULÁRIO que apresente a
informação dos livros editados por cada Autor. O SUBFORMULÁRIO a criar
terá de estar incluído no formulário principal da ficha do Autor. Neste
exemplo, iremos utilizar o “Cod. Autor” como campo de ligação entre os
Autores e os Livros por eles editados.

Como criar um Subformulário usando o assistente


1. Abrir o formulário Autores em VISTA DE ESTRUTURA.
2. No friso, seleccionar o separador ESTRUTURA e, posterior-
mente, premir o botão ASSISTENTE DE CONTROLOS que se en-
contra na secção CONTROLOS.
3. Ainda no separador ESTRUTURA, premir o botão SUBFORMU-
LÁRIO que se encontra na secção CONTROLOS.

4. Desenhar um rectângulo na área desejada do formulário (normal-


mente disponibiliza-se uma área considerável na zona inferior do
formulário principal). Automaticamente o Assistente do SUBFORMU-
LÁRIO irá ser despoletado.
312 BASES DE DADOS COM MICROSOFT ACCESS 2007

5. Na primeira caixa de diálogo, indicar que se vai utilizar uma tabela e


não uma consulta para a criação do SUBFORMULÁRIO.

Figura II.7.31 Assistente de SUBFORMULÁRIOS que sugere a entrada da


origem dos dados

6. Em seguida, indicar qual a tabela e quais os campos a incluir no


SUBFORMULÁRIO. Para o nosso exemplo, devemos seleccionar os
campos ISBN e Royalties (tabela: Autores/Livros) e Titulo e Data-
Edição (tabela: Livros).

Figura II.7.32 Assistente de SUBFORMULÁRIOS que sugere a escolha da


tabela ou consulta e respectivos campos

7. Na caixa de diálogo seguinte, o Access irá questionar qual o campo


de ligação entre o formulário e o SUBFORMULÁRIO. No nosso exem-
plo, devemos seleccionar a ligação reconhecida pelo Access.

Figura II.7.33 Assistente de SUBFORMULÁRIOS que permite definir o tipo de


ligação que será feita
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 313

7. Finalmente, na última caixa de diálogo, indicar o nome que irá


identificar o SUBFORMULÁRIO e premir o botão CONCLUIR.

Depois de concluir o processo de criação do SUBFORMULÁRIO, podemos


usufruir de um formulário que nos permita localizar facilmente os livros
editados por cada Autor, tal como se demonstra na figura.

Figura II.7.34 Aspecto final de um formulário Ficha de Autores com um


SUBFORMULÁRIO que apresenta os respectivos livros editados

7.8.10 Cálculos num formulário

Para criar um campo calculado no FORMULÁRIO vamos utilizar como exem-


plo o cálculo dos dias de edição de um determinado livro, ou seja, vamos
impor o cálculo do número de dias entre a data de edição e o dia de hoje.

Criação de um cálculo no FORMULÁRIO:


1. Abrir o formulário Livros em VISTA DE ESTRUTURA.
2. No friso, seleccionar o separador ESTRUTURA e, posterior-
mente, premir o botão CAIXA DE TEXTO que se encontra na
secção CONTROLOS.

Figura II.7.35 Inserção de uma CAIXA DE TEXTO na área de detalhe de um


formulário
314 BASES DE DADOS COM MICROSOFT ACCESS 2007

3. Activar a CAIXA DE PROPRIEDADES. Alterar as propriedades


Nome, Origem de controlo, Formatar e Casas de-
cimais de acordo com a figura.

Figura II.7.36 Alteração das propriedades Nome, Origem de controlo,


formatar e casas decimais

4. Ainda na CAIXA DE PROPRIEDADES, seleccionar o RÓTULO da CAIXA


DE TEXTO e alterar a sua propriedade Legenda para “Dias de Edi-
ção”.
5. Gravar as alterações no FORMULÁRIO e activá-lo em modo VISTA DE
FORMULÁRIO. Será apresentado o conjunto de campos referentes à
informação de cada livro, bem como o novo campo calculado “Dias
de edição”.

Figura II.7.37 Aspecto final de um cálculo efectuado para apresentar o número de dias de
edição de um livro

7.8.11 Cálculos num subformulário

Para criar um campo calculado no SUBFORMULÁRIO vamos utilizar como


exemplo um campo que calcula a média das comissões atribuídas aos au-
tores de cada livro editado.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 315

Criação de um cálculo no SUBFORMULÁRIO:


1. Abrir o formulário Autores em VISTA DE ESTRUTURA e, posterior-
mente, seleccionar o subformulário “Autores/Livro”.
2. Na sua área interior, abrir a zona RODAPÉ DO FORMULÁRIO e inserir
o controlo que se encontra no friso (seleccionar o separador
ESTRUTURA, em seguida premir o botão CAIXA DE TEXTO que se
encontra na secção CONTROLOS).

Figura II.7.38 Inserção de uma CAIXA DE TEXTO na área de rodapé de um


formulário

3. Activar a FOLHA DE PROPRIEDADES. Alterar as propriedades Nome,


Origem de controlo e Formatar de acordo com a figura.

Figura II.7.39 Alteração das propriedades Nome, Origem de controlo e


formatar

4. Ainda na FOLHA DE PROPRIEDADES, seleccionar o RÓTULO da CAIXA


DE TEXTO e alterar a sua propriedade legenda para “Média dos
Royalties”.
5. Seleccionar o canto superior esquerdo do SUBFORMULÁRIO e car-
regar no botão direito do rato. Activar a CAIXA DE PROPRIEDADES do
SUBFORMULÁRIO e alterar a propriedade Vista predefinida.
316 BASES DE DADOS COM MICROSOFT ACCESS 2007

,
Figura II.7.40 Processo de activação da CAIXA DE PROPRIEDADES do SUBFORMULÁRIO e
posterior alteração da propriedade Vista predefinida

6. Gravar as alterações no formulário e activá-lo em modo VISTA DE


FORMULÁRIO. Confirmar se o valor apresentado reflecte a média dos
royalties dos diferentes livros editados por um Autor.

Figura II.7.41 Aspecto final de um cálculo efectuado para apresentar a média dos Royalties
de um Autor atribuído aos diferentes livros editados

Se num Subformulário a disposição dos controlos for EMPILHADA, na maio-


ria das vezes será conveniente alterar para uma disposição TABULAR.
Neste caso, devemos seleccionar todos os controlos e, em seguida, premir
o botão direito do rato. No menu rápido escolher a opção ESQUEMA e pos-
teriormente a opção TABULAR.

Figura II.7.42 Opções do menu rápido para alterar a disposição dos campos de Empilhada
para Tabular
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 317

7.8.12 Botões de comandos

As acções que um BOTÃO DE COMANDO pode executar são muito diversifi-


cadas. Se optarmos pelo Assistente na criação do BOTÃO DE COMANDO,
vamos deparar com um conjunto de categorias, cada uma das quais apre-
sentando um conjunto de acções. Contudo, podemos ainda alargar o leque
de escolhas, alterando as propriedades deste controlo ou recorrendo à
configuração de uma macro.
Normalmente usamos um BOTÃO DE COMANDO num formulário para iniciar
uma acção. Podemos criar assim um BOTÃO DE COMANDO para aumentar a
rapidez de execução de tarefas.
Como exemplo, vamos criar no formulário Autores um botão que possibi-
lite, através de um clique, fechar este formulário.

Criação de um botão de comando com Assistente:


1. Abrir o formulário Autores em VISTA DE ESTRUTURA.
2. No friso, seleccionar o separador ESTRUTURA e, posterior-
mente, premir o botão ASSISTENTE DE CONTROLOS que se en-
contra na secção CONTROLOS.
3. No mesmo separador premir o botão BOTÃO que se encontra
na secção CONTROLOS.
4. Premir com o rato no local onde se deseja colocar o canto superior
esquerdo do BOTÃO DE COMANDO. Automaticamente o Assistente
irá ser executado.
5. Na caixa de diálogo é possível escolher a CATEGORIA e a respectiva
ACÇÃO que o botão irá desempenhar. No nosso exemplo devemos
seleccionar a CATEGORIA Operações de Formulários e, poste-
riormente, seleccionar a ACÇÃO Fechar Formulário.

Figura II.7.43 Assistente de


BOTÕES DE COMANDO que
sugere a selecção do tipo
de acção que deve ter o
botão
318 BASES DE DADOS COM MICROSOFT ACCESS 2007

6. Na caixa de diálogo seguinte o Access sugere a escolha de uma


imagem ou texto que caracterize o botão. No nosso exemplo vamos
seleccionar o texto “Fechar formulário”.

Figura II.7.44 Assistente de BOTÕES DE COMANDO que sugere a escolha do


aspecto associado ao botão

6. Finalmente, na última caixa de diálogo, indicar o nome que irá iden-


tificar o BOTÃO DE COMANDO e premir o botão CONCLUIR.

É possível associar ao botão uma imagem de vários formatos (.bmp,


.jpeg, .gif). Contudo, deve ser uma imagem de tamanho reduzido para se
enquadrar nas dimensões do botão.

7.8.13 Quebras de página

Se acharmos conveniente associar uma quebra de página a um formulário,


para que determinada informação (que esteja abaixo da quebra) passe
para a página seguinte, devemos realizar esta tarefa com o recurso ao
controlo QUEBRA DE PÁGINA.

Como introduzir uma quebra de página num formulário:


1. Abrir o formulário com a VISTA DE ESTRUTURA.
2. No friso, seleccionar o separador ESTRUTURA e, posterior-
mente, premir o botão QUEBRA DE PÁGINA, que se encontra na
secção CONTROLOS.
3. Premir com o rato no local do formulário onde desejamos colocar a
quebra de página. O Access assinala a existência desta quebra
com uma pequena linha no lado esquerdo do formulário.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 319

7.8.14 Moldura de objecto dependente e independente

Um objecto é uma unidade de informação criada e manipulada numa apli-


cação do Windows. Um Objecto de Ligação Embutida (Object Linking
Embedding − OLE) pode ser toda a informação de um ficheiro ou apenas
parte dele. Na realidade, o OLE não só dá acesso a objectos criados nou-
tras aplicações como edita esses objectos directamente para um formulário
ou para um relatório.
No que diz respeito à manipulação de objectos, temos de considerar os
conceitos embutido e ligado. Quando embutimos um objecto num formulá-
rio ou num relatório este fica a fazer parte da base de dados (.accbd). Um
objecto ligado, por outro lado, fica apenas representado num formulário ou
num relatório, sendo armazenado no ficheiro em que foi criado.
Quando realizamos o acto de embutir ou ligar um objecto para um formulá-
rio ou para um relatório, este mostra um controlo chamado objecto tipo fi-
gura. Na verdade, existem dois tipos destes objectos:

• OBJECTOS INDEPENDENTES
Usados quando queremos um objecto OLE, num formulário ou num
relatório, sem que este seja apresentado como campo da tabela
que lhe serve de base. O objecto permanece constante sempre que
percorremos os registos do formulário ou do relatório.

• OBJECTOS DEPENDENTES
Usados quando queremos que um objecto OLE, num formulário ou
num relatório, seja armazenado num campo da tabela que lhe serve
de base. É apresentado um objecto diferente à medida que percor-
remos os registos do formulário ou do relatório

Para ligar ou embutir um objecto novo numa estrutura de objecto indepen-


dente devemos:
1. Abrir o formulário com a VISTA DE ESTRUTURA.
2. No friso, seleccionamos o separador ESTRUTURA e, posterior-
mente, premimos o botão MOLDURA DE OBJECTO INDEPEN-
DENTE que se encontra na secção CONTROLOS.
320 BASES DE DADOS COM MICROSOFT ACCESS 2007

4. No formulário, premimos com o rato no local onde pretendemos


colocar o canto superior esquerdo da estrutura de objecto (este po-
sicionamento pode ser alterado).
5. Seleccionamos a opção Criar novo. Na lista TIPO DE OBJECTO,
seleccionamos o tipo de objecto que desejamos inserir (figura II.7.
45).

Figura II.7.45 Janela para a definição do novo objecto que desejamos inserir no formulário

6. Se desejarmos mostrar o objecto no formulário como ícone, em vez


de objecto propriamente dito, devemos seleccionar a opção Mos-
trar como ícone.
7. Premir OK.
8. Criar o objecto (no nosso exemplo, vamos criar uma folha de cál-
culo).
9. Para voltar ao Access, escolhemos a opção SAIR no menu
FICHEIRO da aplicação onde o objecto foi criado. Se aparecer a
mensagem que pergunta se desejamos fazer a transformação
(update) do objecto, a resposta deve ser SIM.
10. Para ser possível abrir o documento através de um duplo clique te-
remos de alterar a sua propriedade ACTIVADO para Sim.

Por outro lado, para ligar ou embutir um objecto existente numa estrutura
de objecto independente devemos:
1. Abrir o formulário com a VISTA DE ESTRUTURA.
2. No friso, seleccionamos o separador ESTRUTURA e, posterior-
mente, premimos o botão MOLDURA DE OBJECTO INDEPEN-
DENTE que se encontra na secção CONTROLOS.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 321

3. No formulário, premimos com o rato no local onde irá ser colocado


o canto superior esquerdo da estrutura de objecto (este posiciona-
mento pode ser alterado).
4. Na janela da figura II.7.46 seleccionamos o botão Criar a par-
tir do ficheiro.

Figura II.7.46 Janela para a definição de um objecto já existente que desejamos inserir no
formulário

5. Na janela da figura II.7.46 inserirmos o nome e o caminho (path do


campo que contém o objecto que se deseja embutir ou ligar) em
FICHEIRO. Também se pode premir o botão PROCURAR para selec-
cionar o campo desejado.
6. Se desejarmos ligar um objecto em vez de o embutir, selecciona-
mos a opção Ligar.
7. Se desejamos mostrar o objecto no formulário como ícone, em vez
de objecto propriamente dito, devemos seleccionar a opção Mos-
trar como ícone.
8. Premir OK.
9. Para ser possível abrir o documento através de um duplo clique,
teremos de alterar a sua propriedade ACTIVADO para Sim.

7.9 TABELAS DINÂMICAS

Os formulários estão preparados para comportar objectos que permitem


realizar acções de análise de dados de forma rápida e flexível. De facto,
através dos GRÁFICOS DINÂMICOS e das TABELAS DINÂMICAS é possível
analisar os dados da nossa base de dados com base em estruturas muito
simples e manuseáveis.
322 BASES DE DADOS COM MICROSOFT ACCESS 2007

Como exemplo das funcionalidades associadas à análise de dados vamos


criar uma TABELA DINÂMICA que forneça informação sobre as vendas de
cada livro da Editora. Assim sendo, vamos começar por:
1. Seleccionar a origem dos dados a analisar. No nosso exemplo,
seleccionamos a consulta Valor Vendas, existente no PAINEL DE NA-
VEGAÇÃO.

2. No separador CRIAR, clicamos no botão MAIS FORMU-


LÁRIOS e, posteriormente, seleccionamos TABELAS DI-
NÂMICAS.

3. Será visualizada a VISTA DE ESTRUTURA da Tabela Dinâmica. Com


o auxílio do rato arrastamos e largamos os campos (da janela LISTA
DE CAMPOS) para as respectivas zonas.

Figura II.7.47 VISTA DE ESTRUTURA da Tabela Dinâmica

4. No nosso exemplo pretendemos, numa primeira análise, cruzar os


títulos dos livros (linhas) com as vendas (dados do detalhe) anuais
(colunas).

Figura II.7.48 Inserção de campos na Tabela Dinâmica


II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 323

5. Se pretendemos alterar os cálculos associados aos campos inseri-


dos devemos seleccionar a zona de detalhe da nossa tabela e pos-
teriormente accionar o botão CÁLCULO AUTOMÁTICO.

Figura II.7.49 Inserção de cálculos na Tabela Dinâmica

Níveis de visualização de dados

A excelente flexibilidade desta ferramenta permite, apenas com o auxílio


do rato, incrementar ou diminuir os níveis de visualização de dados. Com
efeito, tanto para as linhas como para as colunas, podemos utilizar os
sinais e para aumentar ou diminuir o detalhe da informação a apre-
sentar na tabela.

Filtragem dos campos

Podemos também, de uma forma directa, filtrar a informação a apresentar


na tabela. Para isso acontecer, devemos simplesmente seleccionar a caixa
de combinação associada a um dos campos cuja informação se pretende
filtrar, tal como se apresenta na seguinte figura.
324 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.7.50 Filtragem dos campos na Tabela Dinâmica

7.10 EFEITOS ESPECIAIS DE CONSTRUÇÃO

Existem vários efeitos gráficos que podem ajudar a melhorar o aspecto de


um formulário, nomeadamente rectângulo, linha, imagem, cores, linhas
limítrofes, etc. Não obstante, todos estes efeitos poderem ser formatados
com base em procedimentos que são comuns a todas as aplicações do
Microsoft Office vamos exemplificar alguns destes procedimentos recor-
rendo às funcionalidades da nova versão do Access.

7.10.1 Como obter uma grande selecção de cores

A formatação das cores dos controlos representados nos formulários pode


ser feita de uma forma rápida através das opções disponíveis na secção
TIPO DE LETRA do friso. Contudo, se desejarmos aceder a um conjunto
mais alargado de cores devemos aceder às propriedades do controlo, tal
como se descreve a seguir.
1. Seleccionamos os controlos ou as suas secções, aos quais deseja-
mos atribuir uma cor.
2. Abrimos a janela de PROPRIEDADES.
3. Seleccionamos a propriedade que reflecte as cores que pretende-
mos alterar (ex. cor dos limites, cor do fundo, cor do
primeiro plano)

4. Premimos o botão Compilar depois de ter escolhido a proprie-


dade.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 325

5. Escolhemos a cor desejada.


6. Premimos o botão OK.

7.10.2 Formatação dos controlos do Formulário

No Access é possível utilizar um conjunto de formatações predefinidas que


permitem melhorar o aspecto do nosso formulário. Esta melhoria passa
pela aplicação de uma determinada cor de fundo, tipos de letra, limites ou
até formatos específicos para cada objecto do formulário. Para activar esta
opção de formatação automática, devemos:
1. Abrir o formulário em VISTA DE ESTRUTURA.
2. No friso, seleccionamos o separador DISPOR e premimos o botão
FORMATAÇÃO AUTOMÁTICA que se encontra na secção com o mes-
mo nome.

Figura II.7.51 Quadro com diferentes estilos pre-configurados


que podemos associar a um formulário

3. Se pretendermos usar o ASSISTENTE DE FORMATAÇÃO AUTOMÁTICA


devemos seleccionar a última opção do quadro apresentado na fi-
gura II.7.51.

Figura II.7.52 Janela para a formatação automática


326 BASES DE DADOS COM MICROSOFT ACCESS 2007

7.10.3 Caixas de informação para os controlos

Com o objectivo de proporcionar ao utilizador um complemento de infor-


mação sobre cada um dos controlos, nomeadamente dos campos das res-
pectivas tabelas, o Access disponibiliza dicas no ecrã, que surgem quando
o apontador do rato se desloca sobre determinado controlo.
Vamos utilizar o campo “Data de Edição” de um livro para exemplificar este
procedimento. Assim, devemos:
1. Na VISTA DE ESTRUTURA do formulário Livros seleccionar a caixa de
texto “Data de Edição”.
2. Activar a FOLHA DE PROPRIEDADES e alterar a sua propriedade
Texto da descr. do controlo, digitando o texto “Data em
que o livro começou a ser comercializado”, tal como é apresentado
na figura II.7.53

Figura II.7.53 Folha de Propriedades com a inserção de texto em Texto da descr. do


controlo

3. Activar o formulário e posicionar o rato sobre o controlo.

Figura II.7.54 Exemplo da utilização de uma caixa de informação no campo DataEdição


II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 327

7.11 EXERCÍCIO GUIADO

Dando continuidade ao desenvolvimento da nossa aplicação, vamos agora


criar um conjunto alargado de formulários que representem tanto as nos-
sas tabelas como as nossas consultas. Assim sendo, vamos começar por
criar alguns formulários simples, que serão feitos, cada qual, a partir de
uma única tabela.
Na nossa base de dados Editora temos um conjunto de tabelas primárias
em relação às quais podemos criar formulários simples, que nos permitirão
não só visualizar os dados com uma melhor apresentação, como também
fazer sempre que necessário a sua manipulação. Nesta perspectiva, va-
mos criar vários formulários com a mesma estrutura e com o mesmo
aspecto gráfico. Vamos exemplificar este procedimento recorrendo ao as-
sistente de formulários para a tabela Autores.

Criação de formulários com o assistente


Para criar um formulário simples que apresente a informação dos autores
temos de seleccionar, no friso, o separador CRIAR e, em seguida, premir o
botão MAIS FORMULÁRIOS que se encontra na secção FORMULÁRIOS. No
menu que aparece no ecrã seleccionamos a opção ASSISTENTE DE FORMU-
LÁRIOS.

Depois de arrancar com o assistente seleccionamos a consulta “Autores


Nacionais” que contém os dados que serão apresentados no formulário e,
posteriormente, inserimos todos os campos no formulário clicando em .

Figura II.7.55 Quadro do assistente usado para possibilitar a escolha de campos a inserir
no formulário

No quadro seguinte do assistente de formulários escolhemos o esquema


de apresentação dos dados em colunas. Depois, escolhemos o estilo de
328 BASES DE DADOS COM MICROSOFT ACCESS 2007

apresentação gráfica “Escritório” que configura os dados e o fundo do for-


mulário. Finalmente, atribuímos o nome “Autores” a este formulário.
Para as restantes tabelas primárias da nossa base de dados, vamos utili-
zar exactamente os mesmos procedimentos adoptados na tabela “Autores”
exceptuando a escolha do esquema gráfico que poderá ser tipo “Tabela”
quando o número de campos é reduzido como é o caso das tabelas “Re-
vendedores”, “Nacionalidades”, “Localidade” e “Colecção”.

Figura II.7.56 Aspecto final de dois formulários com esquemas diferentes

Alteração de formulários através da vista de estrutura


Para personalizar os formulários criados através do Assistente temos ao
dispor um conjunto bastante alargado de procedimentos que são disponibi-
lizados pelo Access. A título de exemplo podemos aumentar a área de de-
talhe, para alterar a disposição dos campos da tabela.

Figura II.7.57 Procedimento adoptado para aumentar a área de DETALHE do formulário

Podemos também seleccionar, mover, redimensionar, alinhar e formatar os


controlos que fazem parte do formulário.
Com o intuito de melhorar a aparência dos formulários, o Access oferece
25 novos temas profissionais que serão imediatamente aplicados depois
de seleccionados. Para o efeito, seleccionamos a VISTA DE ESTRUTURA e,
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 329

em seguida, clicamos numa das opções (ver figura II.7.58) apresentadas


na secção FORMATAÇÃO AUTOMÁTICA do separador DISPOR, do friso.

Figura II.7.58 Escolha da FORMATAÇÃO AUTOMÁTICA adoptada nos


formulários da Base de dados Editora

Inserir cabeçalho
A inserção do cabeçalho nos formulários é feita na área CABEÇALHO DO
FORMULÁRIO. Como o processo de criação de um formulário simples apre-
senta esta área fechada, a primeira tarefa a realizar será a de utilizar o rato
para criar algum espaço de forma a inserir um título.

Figura II.7.59 Procedimento adoptado para aumentar a área do CABEÇALHO


DO FORMULÁRIO

Depois de disponibilizar espaço na área CABEÇALHO DO FORMULÁRIO,


vamos seleccionar o controlo RÓTULO (na secção CONTROLOS do sepa-
rador ESTRUTURA do friso) e accioná-lo na referida área com o objectivo de
digitar o título que identifique a informação do nosso formulário. Inserimos
também o logótipo da editora com o recurso ao controlo IMAGEM. Na
perspectiva de uniformizar o aspecto dos formulários da nossa base de
dados, devemos repetir estes procedimentos para todos os formulários que
criarmos.
330 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.7.60 Aspecto final do CABEÇALHO DO FORMULÁRIO adoptado nos


formulários da base de dados Editora

Criação de formulários a partir de várias tabelas


Os próximos formulários que iremos criar têm o objectivo de facilitar o
acesso e manipulação das tabelas de ligação, ou seja, tabelas que resul-
tam do desdobramento entre tabelas primárias com relações de muitos-
-para-muitos.
Desta forma, pretendemos criar um formulário que nos apresente dados
relativos às vendas da Editora. As tabelas que pretendemos incluir são as
Vendas, Revendedores e Venda/Livro.
Depois de accionarmos a opção ASSISTENTE DE FORMULÁRIOS (na secção
FORMULÁRIOS do separador CRIAR do friso), começamos por seleccionar a
tabela Vendas e todos os seus campos. Em seguida, na caixa “TABELAS/
CONSULTAS”, seleccionamos individualmente as outras tabelas e os cam-
pos que pretendemos incluir no formulário.

Figura II.7.61 Sequência de passos para criar um formulário com base em várias tabelas

No quadro seguinte temos de definir a estrutura do formulário, definindo


qual a tabela que ficará no formulário principal e as que irão para o
SUBFORMULÁRIO. O Assistente apresenta várias alternativas para a estrutu-
ração do formulário. A nossa escolha deverá recair na estrutura definida na
figura II.7.62 que coloca no formulário principal a tabela Vendas e no
SUBFORMULÁRIO os restantes campos.
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 331

Figura II.7.62 Definição da estrutura de dados do formulário definido com


base em várias tabelas

Após a escolha do esquema em TABELA e do estilo em PADRÃO, gravamos


o formulário e o SUBFORMULÁRIO resultantes deste procedimento.

Inserir cálculos no Subfomulário e Formulário


Para complementar este formulário vamos introduzir novos campos que
serão alvo de cálculos. Por exemplo, vamos inserir um novo campo numa
nova coluna do SUBFORMULÁRIO que apresente o valor da venda de um
livro.
Depois de acedermos, em modo VISTA DE ESTRUTURA, ao formulário Ven-
das, posicionamo-nos no SUBFORMULÁRIO. Na sua área interior, aumenta-
mos a sua dimensão através do procedimento descrito na figura II.7.57. Já
com espaço disponível, inserimos o controlo que se encontra no friso
(seleccionar o separador ESTRUTURA e o botão CAIXA DE TEXTO da secção
CONTROLOS). Em seguida, acedemos à FOLHA DE PROPRIEDADES para alte-
rar as propriedades Nome e Origem de controlo.

Figura II.7.63 Inserção de um campo calculado

Na propriedade Origem de controlo clicamos em para aceder ao


CONSTRUTOR DE EXPRESSÕES e introduzimos a respectiva expressão, tal
como é apresentada na figura II.7.64.
332 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.7.64 Configuração da propriedade Origem de controlo através do


CONSTRUTOR DE EXPRESSÕES

Na figura seguinte, apresentamos o aspecto final do formulário Vendas.

Figura II.7.65 Aspecto final do formulário Vendas

Criação de um Painel de Navegação com inserção de botões


Os painéis de navegação são formulários que proporcionam um fácil
acesso às diversas funções da base de dados. Com um Painel de Nave-
gação bem estruturado e explícito, podemos visualizar e imprimir os dados
da base de dados, bem como executar as respectivas macros.
O Painel de Navegação que vamos criar será constituído por um formulá-
rio, onde incluiremos alguns controlos do tipo RÓTULO (texto para os títu-
los) uma IMAGEM, CONTROLO SEPARADOR e BOTÕES DE COMANDO (para ac-
tivar macros).
Vamos começar por criar um novo formulário em modo VISTA DE
ESTRUTURA. Antes de inserir os novos controlos vamos maximizar a área
II.7 CONSTRUIR UMA INTERFACE COM FORMULÁRIOS 333

de DETALHE do formulário. Em seguida, vamos inserir na parte superior


desta área um objecto (imagem) recorrendo ao botão . Depois de accio-
nar este botão e de definir a respectiva área onde a imagem será inserida,
vamos deparar com uma janela onde podemos encontrar o ficheiro que
identifica a imagem. Na figura II.7.66 encontramos também um título na
área de detalhe do formulário que deverá ser introduzido através do botão
RÓTULO.

Figura II.7.66 Configuração da parte superior do Painel de Navegação

Depois de configurar a parte superior do nosso formulário, vamos criar um


conjunto de procedimentos que permitam um acesso fácil às funcionalida-
des da nossa aplicação. Assim, vamos utilizar o CONTROLO SEPARADOR
para agrupar as diferentes opções da nossa base de dados. Depois de
seleccionar este controlo, devemos desenhar um rectângulo na área do
formulário. O CONTROLO SEPARADOR deverá apresentar três páginas dife-
rentes com os formatos e as legendas que são apresentados na figura.

Figura II.7.67 Controlo separador com três páginas para o agrupamento de opções

Depois de concluir o processo de configuração do CONTROLO SEPARADOR,


vamos inserir um conjunto de botões que permitam abrir os formulários
baseados nas tabelas e consultas assim como os relatórios da nossa apli-
cação. Para inserir estes botões, procedemos do modo descrito neste
capítulo na scção ”Botões de Comandos”. No final, teremos um formulário
semelhante ao que é ilustrado na figura seguinte.
334 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.7.68 Aspecto final do formulário Menu Principal

Considerando este formulário como o Menu Principal de toda a aplicação,


que possibilitará o acesso a toda a informação da nossa base de dados,
será conveniente que este apareça logo de início quando executamos o
Access e a partir do qual centralizamos todas as operações. Assim sendo,
devemos aceder ao BOTÃO DO OFFICE. No menu respectivo, encontramos o
botão OPÇÕES DO ACCESS e, na caixa que aparece no ecrã, seleccionamos
a opção BASE DE DADOS ACTUAL que se encontra na lista da esquerda.
Finalmente, na secção OPÇÕES DA APLICAÇÃO, seleccionamos o formulário
“Menu Principal” na caixa MOSTRAR FORMULÁRIO.

Figura II.7.69 Janela OPÇÕES DO ACCESS onde é possível definir o “Menu Principal” como
formulário de arranque da base de dados
II.8
Impressão de Relatórios

Um Relatório é um objecto do
Access que permite converter a in-
formação contida numa base de da-
dos em documentos. De facto, a
apresentação dos dados num relató-
rio é normalmente feita sob a forma
de um documento impresso que po-
derá ter vários tamanhos e formas.
Os relatórios constituem uma forma de mostrar os dados das tabelas ou
das consultas com uma melhor apresentação e disponibilizam ao utilizador
uma variedade de artifícios gráficos (cores, texto, figuras, etc.) e um con-
junto de funcionalidades (agrupamento de dados, execução de cálculos,
sumarização dos dados) que facilitam a sua leitura e interpretação.

8.1 APLICAÇÃO DE RELATÓRIOS

Um relatório funciona como uma folha de papel onde podemos construir


uma estrutura para a informação. As inúmeras ferramentas de construção
disponíveis ajudam-nos a criar relatórios com base em diversas caracterís-
ticas, designadamente:

• Apresenta os dados de uma forma atractiva com tipos de letra


especiais, linhas, figuras e outros efeitos gráficos como cores ou
sombras;
• Assemelha-se a uma folha de papel com os respectivos cabeçalhos
e rodapés;
• Organiza os dados em grupos;
• Calcula totais simples, grupos de totais e percentagens de totais;
336 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Permite a execução de pesquisas de informação com a introdução


de critérios de selecção ou filtragem;

• Apresenta dados de mais do que uma tabela ou consulta;


• Faz a impressão dos dados em etiquetas.

8.2 MODOS DE CRIAÇÃO DE RELATÓRIOS

Antes de criarmos um relatório temos que considerar os dados que farão


parte do mesmo, ou seja, a tabela ou consulta que lhe servirá de base.
Contudo, podemos ter ainda relatórios que não sejam suportados por uma
tabela ou uma consulta, como uma carta ou um relatório que tenha Subre-
latórios, apesar desta segunda situação poder contemplar indirectamente
tabelas ou consultas.
No Access, os relatórios podem ser configurados de diferentes maneiras e
assumir formas muito diversificadas. As diferentes formas de criação de
um relatório incluem:

• Criação Rápida
• Assistente
• Em branco
• Vista de estrutura

Embora a primeira opção seja bastante prática e fácil de utilizar, a verdade


é que nem sempre é a mais indicada porque apresenta insuficiências e
limitações na personalização de relatórios. O processo de criação mais
utilizado é a criação de relatórios com base num assistente. Este processo
permite criar desde uma simples listagem em colunas até à criação de
relatórios que representam informações oriundas de várias tabelas, com
múltiplos agrupamentos e ordenações. No entanto, sempre que este pro-
cesso não cumpra com os objectivos propostos é inevitável o recurso à
utilização da VISTA DE ESTRUTURA.
II.8 IMPRESSÃO DE RELATÓRIOS 337

Tal como os outros objectos, podemos criar um relatório com ou sem


ASSISTENTE DE RELATÓRIOS. No entanto, com o ASSISTENTE DE RELATÓRIOS
a sua construção é muito mais rápida, tendo apenas o inconveniente de
estar limitada a certas estruturas e não possibilitar uma grande liberdade
na sua criação.

8.3 RELATÓRIO DE CRIAÇÃO RÁPIDA

O relatório de Criação Rápida é a forma mais simples de criação de um


relatório. Normalmente, é utilizado quando necessitamos de obter rapida-
mente uma listagem de uma tabela ou consulta.

Quando usamos um relatório para visualizar dados devemos conectar o


relatório a uma tabela ou consulta que fornecerá os dados. Esta forma
de criação de relatório apresenta todos os campos e registos existentes
na tabela ou consulta previamente escolhida. Contudo, não é possível
ao utilizador durante o processo de criação fazer qualquer tipo de perso-
nalização.

Para criar um Relatório de Criação Rápida devemos seguir os seguintes


passos:
1. No PAINEL DE NAVEGAÇÃO, seleccionar a tabela ou consulta que
pretendemos usar no relatório.
2. No separador CRIAR do friso, seleccionar o botão
RELATÓRIO na secção RELATÓRIOS.

Depois de seleccionado o botão RELATÓRIO, automaticamente aparecerá


no ecrã um relatório com a informação da tabela (ou consulta) devida-
mente organizada em colunas e linhas. Como podemos comprovar, os
campos de informação são dispostos na mesma ordem pela qual foram
inseridos na tabela (ou consulta) original. Contudo, a sua disposição e
dimensão poderão ser facilmente alterados como se mostra na seguinte
figura.
338 BASES DE DADOS COM MICROSOFT ACCESS 2007

Clicar, arrastar e largar


as colunas para alterar a
sequência

Figura II.8.1 Procedimentos adoptados na disposição das colunas do relatório

Opcionalmente, podemos alterar o formato do texto, seleccionando uma


das opções (tamanho, fonte, alinhamento, cor, etc.) da secção TIPO DE LE-
TRA do friso.

Figura II.8.2 Secção TIPO DE LETRA do friso para alterar o


formato do texto do relatório

Depois de construído o relatório, podemos gravá-lo através do botão


GUARDAR. Na próxima vez que o abrirmos poderemos constatar que o
Access apresentará o relatório com as mais recentes alterações aos
dados.

8.4 RELATÓRIOS USANDO O ASSISTENTE

O ASSISTENTE DE RELATÓRIOS permite criar automaticamente os relatórios


com base num conjunto de opções como a selecção de campos das tabe-
las ou consultas e criação de uma estrutura personalizada. De facto, com
esta opção podemos ser mais selectivos na escolha dos campos que apa-
recerão no relatório. Esta modalidade de criação de relatórios apresenta
um número elevado de opções, facilitando assim uma personalização bas-
tante mais detalhada.
II.8 IMPRESSÃO DE RELATÓRIOS 339

Para criar um novo relatório com o assistente devemos:


1. No friso, seleccionar o separador CRIAR e premir o
botão ASSISTENTE DE RELATÓRIOS que se encontra
na secção RELATÓRIOS.
2. Na caixa de diálogo que aparece no ecrã seleccionamos a origem
dos dados para o relatório. Na caixa TABELA/CONSULTA selecciona-
mos a tabela ou consulta que contém os dados que serão apre-
sentados no relatório. Inserir campo a campo através do botão ,
ou todos os campos através do botão . No exemplo seguinte,
vamos utilizar a tabela de Autores.

Figura II.8.3 Primeiro quadro do assistente, onde se podem


escolher os campos a inserir no relatório.

Se desejarmos incluir no relatório campos de várias tabelas, não


devemos seleccionar o botão SEGUINTE enquanto não tivermos todos os
campos na caixa da direita. Assim, devemos proceder repetidamente à
selecção da TABELA/CONSULTA e à adição dos seus respectivos campos.

3. Na janela seguinte verificar se existe algum tipo de agrupamento de


dados. Esta opção permite uma melhor estruturação dos dados e
pode ser utilizada para o cálculo de subtotais em dados numéricos.
Por exemplo, se escolhermos o campo “CodNacionalidade” para
estabelecer o agrupamento, será apresentado um bloco de Autores
com a mesma nacionalidade.
340 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.8.4 Janela para a selecção do campo de agrupamento de dados

4. Posteriormente, seleccionar o campo de ordenação dos registos do


relatório. Existe a possibilidade de definir a ordenação crescente e
decrescente para quatro campos diferentes.

Figura II.8.5 Janela para a definição da sequência de ordenação dos registos

5. Definir o tipo de esquema e a orientação da folha para a impressão


do relatório.

Figura II.8.6 Janela para a selecção do esquema a adoptar no relatório


II.8 IMPRESSÃO DE RELATÓRIOS 341

6. Escolher o estilo de apresentação gráfica que configura os dados.

Figura II.8.7 Janela para a selecção do estilo do relatório

7. Finalmente, introduzir o nome a dar ao relatório. O relatório obtido é


apresentado na figura seguinte.

Figura II.8.8 Relatório elaborado com a ajuda do assistente, com o qual é possível listar os
Autores agrupados pela Nacionalidade

8.5 RELATÓRIOS EM BRANCO

Em alternativa aos processos de criação anteriormente abordados pode-


mos usar a ferramenta do Access RELATÓRIO EM BRANCO. Este processo
também pode ser bastante rápido e fácil, especialmente quando planea-
mos construir um relatório com poucos campos. Os procedimentos
seguintes explicam como podemos criar um relatório com RELATÓRIO EM
BRANCO:
342 BASES DE DADOS COM MICROSOFT ACCESS 2007

1. No friso, seleccionamos o separador CRIAR e,


posteriormente, premimos o botão RELATÓRIO EM
BRANCO que se encontra na secção RELATÓRIOS.
Surgirá uma janela com espaço em branco para ser usado na construção
do relatório.

Figura II.8.9 Janela com espaço em branco para ser usado na construção do
relatório

2. No quadro LISTA DE CAMPOS seleccionamos o ícone +


para desdobrar os campos da tabela/consulta que
pretendemos inserir no relatório. Se este quadro não estiver visível,
seleccionar o botão ADICIONAR CAMPOS EXISTENTES que se encon-
tra no friso.

Figura II.8.10 Quadro LISTA DE CAMPOS

Neste exemplo escolhemos os campos nome e telefone da tabela autor.

Figura II.8.11 Disposição dos campos nome e telefone da tabela autor, depois de
arrastados da LISTA DE CAMPOS
II.8 IMPRESSÃO DE RELATÓRIOS 343

3. Utilizar as ferramentas e os controlos existentes na barra de forma-


tação para melhorar a aparência do relatório.

Figura II.8.12 Ferramentas e os controlos existentes na barra de formatação a utilizar na


melhoria da aparência do relatório

Na perspectiva de melhorar a aparência dos relatórios, o Access oferece


25 novos temas profissionais que serão imediatamente aplicados depois
de seleccionados. Para o efeito, seleccionamos a VISTA ESQUEMA e, em
seguida, clicamos numa das opções apresentadas na secção FORMATAÇÃO
AUTOMÁTICA do friso.

Figura II.8.12 Opções de formatação automática disponíveis na


secção FORMATAÇÃO AUTOMÁTICA do friso

8.6 RELATÓRIOS USANDO A VISTA DE ESTRUTURA

Se desejarmos construir um relatório totalmente feito por nós podemos


começar com uma folha em branco e, a partir daí, adicionar os campos de
informação, quadros, imagens, controlos, e tudo o mais que desejarmos
inserir.
O modo VISTA DE ESTRUTURA é uma forma diferente de olharmos para um
relatório. Ao contrário da VISTA DE ESQUEMA, nesta vista não visualizamos
a informação da nossa base de dados, mas sim referências aos campos
da mesma. Esta forma de trabalhar com relatórios dá-nos uma grande li-
berdade para a sua criação e configuração.
344 BASES DE DADOS COM MICROSOFT ACCESS 2007

Para criar um novo relatório sem o assistente devemos:


No friso, seleccionar o separador CRIAR e, posteriormente,
premir o botão ESTRUTURA DO RELATÓRIO que se encontra
na secção RELATÓRIOS.
Surgirá uma janela com espaço em branco para ser usado na construção
do relatório.

Figura II.8.12 Aspecto da janela do Access para a construção de um relatório na VISTA DE


ESTRUTURA

Como a grelha do relatório se encontra completamente vazia, teremos de


ser nós a incluir todos os elementos que quisermos apresentar no relatório.
Tal como no modo VISTA DE ESTRUTURA dos formulários, aqui também
temos uma Barra de Ferramentas (friso) que nos disponibiliza um vasto
leque de opções que nos permitem inserir no relatório, texto ou outros gra-
fismos e objectos.

As linhas verticais e horizontais da grelha que aparecem apenas na


VISTA DE ESTRUTURA do relatório são usadas para ajudar o utilizador a
inserir os diferentes componentes do relatório de uma forma precisa,
alinhada e organizada.

8.6.1 Secções do relatório

O modo VISTA DE ESTRUTURA do objecto Relatório apresenta um conjunto


de zonas de introdução de controlos que se assemelha a uma folha de
papel com os respectivos corpo, cabeçalhos e rodapés.
Quando é criado um novo relatório, o Access apresenta apenas três sec-
ções. Contudo, em função dos dados inseridos, poderão aparecer outras
II.8 IMPRESSÃO DE RELATÓRIOS 345

secções. Efectivamente, podemos complementar o relatório juntando mais


secções. O Access disponibiliza, no máximo, sete secções para um relató-
rio − aqui reside uma das poucas diferenças que o distingue de um formu-
lário. Vamos agora descrever cada uma destas secções:

• CABEÇALHO DO RELATÓRIO
Esta secção é usada normalmente para o título do formulário, data
ou logótipos. O seu conteúdo irá aparecer no topo da primeira pági-
na do relatório.

• CABEÇALHO DA PÁGINA
Utilizada para apresentar o nome das colunas do relatório. O seu
conteúdo irá aparecer no topo de cada página do relatório.
• CABEÇALHO DO AGRUPAMENTO
Mostra a informação que descreve o agrupamento de dados. O seu
conteúdo irá aparecer no início de cada agrupamento de dados.

• DETALHE
É o corpo do relatório. Mostra principalmente os controlos que re-
presentam os registos.
• RODAPÉ DO AGRUPAMENTO
Apresenta informação que sumaria os dados de cada agrupamento.
O seu conteúdo irá aparecer no final de cada agrupamento de
dados.
• RODAPÉ DA PÁGINA
Normalmente utilizado para apresentar o número de página ou no-
me do autor. O seu conteúdo irá aparecer na parte inferior de cada
página do relatório.
• RODAPÉ DO RELATÓRIO
Normalmente esta secção é utilizada para apresentar os totais
gerais de campos numéricos impressos no relatório. O seu con-
teúdo irá aparecer na parte inferior da última página do relatório.
346 BASES DE DADOS COM MICROSOFT ACCESS 2007

Para redimensionar uma secção deve-se mover o rato para a extremidade


da mesma. Quando o cursor alterar o seu formato, arrastá-lo para cima ou
para baixo até a secção ficar com a área pretendida.

Figura II.8.13 Procedimento adoptado para redimensionar as secções do Relatório

Se não desejarmos usar uma determinada secção do relatório devemos


reduzir a zero a sua dimensão, ou seja, redimensionamos a área da
secção até ela deixar de existir.

8.6.2 Controlos em relatórios

Tal como nos formulários, também nos relatórios os controlos são bastante
importantes, pois embora não sejam a base de um relatório, são os ele-
mentos que fazem com que um relatório tenha mais sentido e não seja
apenas uma simples visualização de dados, tal como é uma tabela ou uma
consulta. Na verdade, o Access representa tudo num relatório através dos
controlos.
Estes controlos podem ser um campo da tabela base, ou então podem ser
um título ou uma legenda. Os controlos podem também ser de cálculo re-
presentando um papel muito importante, pois nos relatórios são frequente-
mente apresentados totais (são estes controlos que realizam os cálculos
para chegar a esses totais).

Adicionar controlos ao Relatório


Alguns controlos são criados automaticamente, como por exemplo os con-
trolos dependentes criados quando adicionamos um campo do PAINEL
LISTA DE CAMPOS. Muitos outros podem ser criados através da sua selec-
ção no separador ESTRUTURA do friso. A próxima figura apresenta os
II.8 IMPRESSÃO DE RELATÓRIOS 347

diferentes controlos independentes disponibilizados pelo Access, para a


construção de Relatórios.

Botões para
adicionar limites
Botões para adicionar
logótipo, título, nº
página e data Botões para adicionar
controlos diversos

Figura II.8.14 Controlos independentes disponibilizados pelo Access

Lembramos que a definição de controlos dependentes, independentes e de


cálculo é semelhante à definição que já foi feita para os formulários (ver
mais informações no capítulo 7).

Adicionar campos do PAINEL LISTA DE CAMPOS


• Para adicionar um simples campo arrastamos o mesmo da lista
para a secção do relatório onde desejamos que ele seja apresen-
tado.
• Para adicionar vários campos de uma só vez pressionamos a tecla
CTRL e seleccionamos os campos pretendidos. Em seguida, ar-
rastamos os campos seleccionados para o relatório.

Figura II.8.15 Procedimento para adicionar campos ao relatório através do PAINEL LISTA DE
CAMPOS

Criar um controlo através do friso


1. Clicamos no botão (disponível no separador ESTRUTURA do friso)
referente ao controlo desejado. Por exemplo, para criar uma CAIXA
DE VERIFICAÇÃO, seleccionamos o botão .
348 BASES DE DADOS COM MICROSOFT ACCESS 2007

2. Clicamos na grelha do relatório e no local exacto onde desejamos


que o controlo seja inserido. O controlo será apresentado com uma
dimensão pré-definida. Para alterar essa dimensão seleccionamos
o controlo e efectuamos o seu redimensionamento através dos qua-
dradinhos apresentados nos seus limites.

Seleccionar, mover, apagar e colar controlos


Dentro da mesma secção, podemos mover o controlo para qualquer local,
bastando apenas seleccioná-lo e com o rato movê-lo para o local dese-
jado. Se desejarmos mover esse controlo para outra secção, teremos que
copiar o controlo e colá-lo no local desejado.

Definir o tamanho de um controlo


Para definir o tamanho de um controlo é necessário apenas seleccioná-lo e
colocar o rato num dos diversos quadradinhos que delimitam o controlo,
clicando e arrastando de seguida.

8.7 FILTRAGEM, ORDENAÇÃO E AGRUPAMENTO

No contexto da manipulação de relatórios, o Access disponibiliza um


objecto que oferece um conjunto de funcionalidades similares às ofereci-
das na utilização das FOLHAS DE DADOS (ver 5.6.5 e 5.6.6). Adicionalmente,
esta ferramenta disponibiliza um conjunto de opções muito úteis no agru-
pamento de dados e no cálculo de subtotais.
De salientar que o agrupamento de dados é uma ferramenta indispensável
para o tratamento de grandes volumes de dados, pois através da criação
de pequenos grupos será possível tornar a informação mais fácil de anali-
sar e interpretar.

8.7.1 Filtragem de um relatório

O processo de filtragem de informação num relatório é similar ao adoptado


na filtragem das FOLHAS DE DADOS. Assim, temos duas possibilidades para
aplicar filtros directamente no relatório:
II.8 IMPRESSÃO DE RELATÓRIOS 349

• Se desejarmos construir um filtro rápido baseado num valor exis-


tente no relatório, seleccionamos esse valor e, em seguida, clica-
mos no botão direito do rato. O menu rápido que aparece no ecrã
apresenta um conjunto de filtros associados a esse valor.

• Se pretendermos mais flexibilidade na construção do filtro seleccio-


namos novamente um valor numa coluna do relatório e, em segui-
da, clicamos no botão direito do rato. O menu rápido que aparece
no ecrã apresenta uma opção (por exemplo FILTROS DE TEXTO,
FILTROS DE NÚMERO, …) através da qual acedemos a um submenu
com um conjunto de filtros mais detalhados que nos permitem criar
uma variedade de expressões de filtragem.

Figura II.8.16 Procedimento para filtrar um relatório através de um valor previamente


seleccionado

8.7.2 Ordenação de dados

Quando se imprime um relatório normalmente gostamos de ter uma orde-


nação na listagem dos registos por ordem alfabética ou numérica. A forma
mais rápida de estabelecer uma ordenação num relatório é executar um
procedimento muito semelhante ao adoptado numa FOLHA DE DADOS, ou
seja, na VISTA DE ESQUEMA seleccionamos o campo a usar na ordenação e
clicamos no botão direito do rato. No menu rápido que aparece seleccio-
namos uma das opções de ordenação.
350 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.8.17 Procedimento para ordenar um relatório através de um campo previamente


seleccionado

Neste caso só podemos estabelecer uma ordenação com base em apenas


um campo de informação. Se pretendermos estabelecer uma ordenação
mais complexa devemos adoptar outro procedimento, que passa pela exe-
cução dos seguintes passos:
1. Abrir o relatório no modo VISTA DE ESQUEMA.
2. No friso, escolher a opção AGRUPAR E ORDENAR que se
encontra na secção AGRUPAMENTO E TOTAIS.
3. Seleccionar o botão que aparece na parte inferior
da VISTA DE ESQUEMA.
4. Escolher os campos de informação a utilizar para a ordenação.
5. Na mesma linha onde seleccionamos o campo e no parâmetro da
direita devemos especificar se a ordenação dos dados é ascenden-
te ou descendente.
6. Se pretendermos adicionar um novo campo para ordenação (será a
chave secundária), seleccionamos novamente o botão
e repetimos os passos 4 e 5.

Figura II.8.18 Procedimento para ordenar um relatório através da opção ADICIONAR UMA
ORDENAÇÃO
II.8 IMPRESSÃO DE RELATÓRIOS 351

No exemplo ilustrado na figura II.8.18, a ordenação principal será feita de


forma decrescente pelo código de nacionalidade e a ordenação secundária
será feita de forma crescente pelo nome do autor.

8.7.3 Agrupamento dos dados

Para muitos relatórios a ordenação dos registos não é suficiente para uma
boa estruturação dos dados. Na verdade, em muitos casos será conve-
niente agrupar os registos de uma tabela ou consulta, através da informa-
ção de um campo que os caracterize na globalidade. Um agrupamento de
dados é constituído pelo cabeçalho, pelo corpo e pelo rodapé. O cabeçalho
do grupo contém dados que identificam o grupo, enquanto que o rodapé
normalmente sumaria os registos apresentados no corpo do agrupamento.

Para estabelecer um agrupamento nos dados do nosso relatório devemos


percorrer os seguintes passos:
1. Abrir o relatório no modo VISTA DE ESQUEMA.

2. No friso, escolher a opção AGRUPAR EORDENAR que


se encontra na secção AGRUPAMENTO E TOTAIS.

3. Seleccionar o botão que aparece na parte inferior da


VISTA DE ESQUEMA
4. Escolher os campos de informação a utilizar no agrupamento.
5. Na mesma linha onde seleccionamos o campo e no parâmetro da
direita devemos especificar se a ordenação dos dados dentro do
agrupamento é ascendente ou descendente.
6. Ainda na mesma linha no parâmetro da direita devemos especificar
o tipo de agrupamento que será variável em função do tipo de da-
dos do campo de informação.
7. Se pretendermos adicionar um novo campo para agrupamento (se-
rá o agrupamento secundário), seleccionamos novamente o botão
e repetimos os passos 4, 5 e 6.
352 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.8.19 Procedimento para os agrupar dados de um relatório através da opção


ADICIONAR UM GRUPO

No exemplo ilustrado na figura II.8.19 o agrupamento das vendas é feito


pela data, sendo apresentados grupos de registos para cada trimestre.
8. Continuando na mesma linha no parâmetro da direita, podemos
adicionar totais e subtotais associados aos agrupamentos. Selec-
cionamos o parâmetro TOTAIS e definimos o campo usado para o
efeito.

Subtotal

Total Geral

Figura II.8.20 Exemplo de um relatório com agrupamento de dados e respectivos subtotais


e totais

Para este exemplo, optamos por escolher o campo Valor para totalizar o
valor das vendas trimestrais.
Como vimos, o nosso relatório não está limitado a apenas um agrupa-
mento de dados. Com efeito, podemos adicionar quantos níveis de orde-
II.8 IMPRESSÃO DE RELATÓRIOS 353

nação e agrupamento desejarmos, com o intuito de partir a informação em


partes mais pequenas e, assim, mais fáceis de analisar.

8.8 GRÁFICOS EM RELATÓRIOS

Tal como nos formulários, também nos relatórios é possível inserir gráfi-
cos, quer tenham ligação às tabelas quer não tenham.
De salientar que o gráfico inserido nos relatórios e nos formulários é um
objecto criado e manipulado a partir da aplicação Microsoft Graph que está
associada a todas as aplicações do Microsoft Office.
Para exemplificar a utilização deste objecto, tão útil na análise de dados,
vamos incluir no relatório Valor de Vendas (criado no ponto anterior) um
gráfico de barras que apresente as vendas trimestrais da nossa editora.
Para atingir este objectivo, deveremos considerar as seguintes etapas:
1. Abrir o relatório (Valor Vendas) em VISTA DE ESTRUTURA.
2. Com o auxílio do rato, aumentar consideravelmente a secção RO-
DAPÉ DO RELATÓRIO para poder receber o gráfico a inserir

3. Seleccionar o botão INSERIR GRÁFICO que se encontra na sec-


ção CONTROLOS do separador ESTRUTURA.
4. Com o auxílio do rato, definir na secção RODAPÉ DO RELATÓRIO a
área onde o gráfico será construído.
5. Na primeira caixa de diálogo do ASSISTENTE DE GRÁFICOS escolher
a origem dos dados para a criação do gráfico (no nosso exemplo
escolhemos a consulta Valor Vendas).

Figura II.8.21 Selecção da origem dos dados no Assistente de Gráficos


354 BASES DE DADOS COM MICROSOFT ACCESS 2007

6. No passo seguinte do assistente escolhemos os campos que con-


têm os dados a representar no gráfico (Data e Valor).

Figura II.8.22 Selecção dos campos no Assistente de Gráficos

7. Em seguida escolhemos o tipo de gráfico.

Figura II.8.23 Selecção do tipo de gráfico no Assistente de Gráficos

8. No quadro seguinte, verificamos a disposição dos dados em rela-


ção aos eixos do gráfico. Como o intervalo temporal definido é o
Mês, fazemos duplo clique em de forma a alterar para
Trimestre.

Figura II.8.24 Disposição dos dados no gráfico e alteração do agrupamento de dados


II.8 IMPRESSÃO DE RELATÓRIOS 355

9. Desactive os campos de ligação entre o gráfico e o relatório para


que sejam apresentados neste último todos os dados de todos os
registos da nossa base de dados.

Figura II.8.25 Desactivar campo de ligação entre o gráfico e o relatório

10. No último quadro atribuímos um nome ao gráfico e seleccionamos


o botão CONCLUIR.

Figura II.8.26 Última página do Relatório em modo de PRÉ-VISUALIZAÇÃO

Depois de concluir este processo, será aconselhável fazer duplo clique


no gráfico em VISTA DE ESTRUTURA de forma a aceder ao Microsoft
Graph e assim poder personalizá-lo, ou seja, alterar legendas, cores, ta-
manhos e tipos de letras, etc.
356 BASES DE DADOS COM MICROSOFT ACCESS 2007

Ao activar o relatório em modo de PRÉ-VISUALIZAÇÃO podemos constatar


que o gráfico aparecerá no final do mesmo com dados que reflectem a
informação impressa.

8.9 ETIQUETAS COM RELATÓRIOS

Se tivermos na nossa base de dados tabelas com informação de moradas


(ex. clientes, fornecedores, autores, alunos, empresas, etc.) o Access dis-
ponibiliza um assistente que nos facilita o processo de mailing, colocando
essas moradas sob a forma de etiquetas numa folha de papel.
Se pretendermos criar etiquetas usando campos de informação de dife-
rentes tabelas, teremos inicialmente de criar uma consulta que contemple
esses campos e só depois acedemos ao ASSISTENTE DE ETIQUETAS.
Os procedimentos seguintes explicam como podemos criar etiquetas com
o respectivo assistente:
1. Seleccionamos a tabela/consulta onde se encontra a informação a
inserir nas etiquetas. No nosso exemplo seleccionamos a tabela
Autores.
2. No friso, seleccionamos o separador CRIAR e,
posteriormente, premimos o botão ETIQUETAS que
se encontra na secção RELATÓRIOS.

Surgirá uma janela que apresenta vários tipos de tamanhos e disposições


para as etiquetas. Será possível escolher uma dimensão padrão ou definir
uma dimensão personalizada.

Figura II.8.27 Janela para a selecção da dimensão das etiquetas


II.8 IMPRESSÃO DE RELATÓRIOS 357

3. No quadro seguinte estabelecemos a formatação (tipo de letra, di-


mensão e cor) para o texto que será impresso nas etiquetas.

Figura II.8.28 Janela para a formatação do texto a imprimir nas etiquetas

4. Definimos o conteúdo das etiquetas através da escolha de um con-


junto de campos. Se necessário inserir texto (por exemplo, Exmo.
Sr.) ou espaços entre os campos de informação.

Figura II.8.29 Janela para a definição dos campos a inserir nas etiquetas

5. Indicamos o campo de informação através do qual será feita a


ordenação das etiquetas.

Figura II.8.30 Janela para a definição do campo usado na ordenação da impressão das
etiquetas

6. Finalmente, atribuímos um nome ao relatório. O processo está con-


cluído.
358 BASES DE DADOS COM MICROSOFT ACCESS 2007

8.10 IMPRESSÃO DE UM RELATÓRIO

Embora seja possível imprimir tabelas, consultas ou formulários, são nor-


malmente os relatórios que representam o output em papel da informação
de uma base de dados.
Para imprimir um relatório devemos prioritariamente aceder à vista PRÉ-
VISUALIZAR, pois esta vista dá-nos uma perspectiva real da impressão.
Com esta vista podemos ver se as colunas estão todas alinhadas, se os
espaços entre elas estão correctos, se não fica nada de fora, etc. Podemos
ainda usar esta vista para ter uma visão geral de toda a página, ou para ter
uma visão específica de um ponto do relatório.
Para imprimir um relatório temos de aceder ao BOTÃO DO OFFICE. No menu
respectivo encontramos a opção de impressão que disponibiliza três op-
ções adicionais:

• Impressão com possibilidade de escolher e configurar a impressora;


• Impressão imediata em que o relatório seleccionado será enviado pa-
ra a impressora sem possibilidades de alterações;

• Pré-visualização da impressão, que possibilita um conjunto completo


de configurações conhecidas de outras aplicações do Office.
A figura seguinte apresenta o relatório Autores no modo PRÉ-VISUALIZAÇÃO
de impressão. Nesta figura, podemos confirmar que o friso inclui um
conjunto alargado de botões que facilitam o processo de configuração das
páginas antes de efectuarmos a impressão.

Figura II.8.31 Janela que apresenta um relatório modo PRÉ-VISUALIZAÇÃO de impressão


II.8 IMPRESSÃO DE RELATÓRIOS 359

Não precisamos de abrir um relatório para o imprimir. Precisamos apenas


de o seleccionar no PAINEL DE NAVEGAÇÃO e, posteriormente, escolher a
opção de impressão no BOTÃO DO OFFICE. Contudo, sem passar na pré-
visualização de impressão não nos podemos assegurar que o resultado da
impressão será o melhor.

8.11 EXPORTAR RELATÓRIOS

O Access suporta um conjunto de formatos para


a exportação de um relatório. Esses formatos
incluem, entre outros, documentos em Word,
HTML, PDF ou XPS. Independentemente do for-
mato pretendido, devemos entrar na PRÉ-
VISUALIZAÇÃO do relatório e, em seguida, escolher
o botão que permita executar a exportação. Esse botão encontra-se na
secção DADOS do friso.
Depois de escolher a respectiva opção, devemos inserir no quadro seguin-
te o nome do documento de destino.

Figura II.8.32 Janela que permite exportar um relatório para um documento HTML

Lembramos que exportar um relatório é o mesmo que imprimir, ou seja,


a informação contida no relatório será exactamente aquela que existe no
momento. Se desejarmos mais tarde aceder a informação mais recente,
deveremos repetir o processo de exportação.
360 BASES DE DADOS COM MICROSOFT ACCESS 2007

Enviar o relatório como mensagem de e-mail


Podemos enviar um relatório para vários destinatários através de uma
mensagem de e-mail, em alternativa à sua impressão. Para o efeito, deve-
mos:
1. No PAINEL DE NAVEGAÇÃO, seleccionar o relatório e, em seguida, cli-
car no BOTÃO DO OFFICE.
2. Seleccionamos a opção CORREIO ELECTRÓNICO.
3. Na caixa de diálogo ENVIAR OBJECTO COMO, seleccionamos o tipo
de formato de ficheiro que pretendemos usar.

Figura II.8.33 Janela ENVIAR OBJECTO COMO que permite seleccionar o


formato para enviar um relatório como mensagem de e-mail

4. Na nossa aplicação de e-mail, digitar os detalhes da mensagem e,


finalmente, enviá-la.

8.12 EXERCÍCIO GUIADO

Na nossa base de dados Editora temos um conjunto de tabelas primárias


em relação às quais podemos criar relatórios simples que nos permitirão
imprimir os dados sempre que necessário.

Relatórios de criação rápida


Para iniciar a criação de relatórios na nossa base de dados, vamos utilizar
a opção RELATÓRIO DE CRIAÇÃO RÁPIDA para as diferentes tabelas da
nossa base de dados. Nesta perspectiva, vamos criar vários relatórios com
a mesma estrutura e com o mesmo aspecto gráfico. Vamos exemplificar
este procedimento recorrendo à informação associada à Tabela Livros.
II.8 IMPRESSÃO DE RELATÓRIOS 361

Assim sendo, no PAINEL DE NAVEGAÇÃO, seleccionamos a


tabela Livros. No separador CRIAR do friso, selecciona-
mos o botão RELATÓRIO da secção RELATÓRIOS.
Para as restantes tabelas primárias da nossa base de dados vamos utilizar
exactamente os mesmos procedimentos adoptados para a tabela Livros.

Criação de relatórios no assistente a partir de uma consulta


A criação de um relatório a partir de uma consulta poderá ser idêntica à
criação de um relatório a partir de uma tabela, caso a consulta tenha sido
criada com base numa única tabela. Contudo, se a consulta tiver sido
criada com base em várias tabelas teremos uma situação mais complexa,
uma vez que deveremos compreender, à partida, a forma como devemos
estruturar os campos das diferentes tabelas e como os devemos dispor no
nosso relatório.
Para exemplificar esta última situação vamos criar um relatório a partir da
consulta “Valor Vendas”, anteriormente criada no capítulo 6, “Consultas”.
Por ser mais rápido e mais prático vamos utilizar o assistente de Relató-
rios.
Depois de arrancar com o assistente, seleccionamos a
consulta “Valor Vendas” que contém os dados que
serão apresentados no relatório e, posteriormente, inserimos todos os
campos no formulário clicando em .

Figura II.8.34 Primeiro quadro do assistente, onde escolhemos os campos a


inserir no relatório.

No quadro seguinte do assistente de relatórios escolhemos o tipo de agru-


pamento dos dados a introduzir no nosso relatório. Na perspectiva de listar
os livros vendidos em cada Venda, vamos escolher “por Vendas” como
campo de agrupamento.
362 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.8.35 Quadro do assistente, onde escolhemos o tipo de agrupamento


de dados

No quadro seguinte podemos indicar mais um critério de agrupamento,


seleccionando e incluindo um dos campos posicionados na lista do lado
esquerdo. Podemos, por exemplo, querer agrupar as vendas por data,
indicando o campo “Data”. Este novo agrupamento deverá ter a prioridade
máxima, ou seja, deverá ficar no topo da folha exemplo. Devemos também
clicar no botão para podermos alterar a configuração
da data de Mês para Ano. Desta forma, as vendas dos livros serão agru-
padas conforme se apresenta na figura.

Figura II.8.36 Quadros para estabelecer o agrupamento por Data de Venda

No quadro seguinte podemos definir a ordenação dos dados através dos


campos disponíveis. No nosso exemplo, vamos impor a ordenação des-
cendente por título. Podemos também mandar efectuar cálculos sobre os
campos dos agrupamentos, através do botão . Neste sen-
tido, vamos seleccionar o cálculo da soma para o campo “Valor”.
II.8 IMPRESSÃO DE RELATÓRIOS 363

Figura II.8.37 Quadros para estabelecer a ordenação dos dados e para impor cálculos aos
agrupamentos

Nos últimos quadros escolhemos a disposição dos dados no relatório


seleccionando o esquema “Bloco” e a orientação “horizontal” e escolhemos
também o estilo “Origem” para definir a sua apresentação gráfica. Para
concluir o processo atribuímos o nome “Mapa de Vendas” ao relatório.
Depois de visualizar o relatório em PRÉ-VISUALIZAÇÃO vamos constatar
que os campos e os seus rótulos não se encontram totalmente visíveis e
alinhados. Assim sendo, temos que entrar em modo VISTA DE ESTRUTURA
para fazer alguns melhoramentos.

Figura II.8.38 Aspecto do Relatório “Vendas” depois de concluído o processo de criação


através do assistente
364 BASES DE DADOS COM MICROSOFT ACCESS 2007

Alteração de relatórios através da vista de estrutura


Na personalização de relatórios criados através da VISTA DE ESTRUTURA
temos a possibilidade de utilizar um conjunto de procedimentos similares
aos utilizados nos formulários. Vamos, por exemplo, dimensionar e deslo-
car alguns RÓTULOS e CAIXAS DE TEXTO para que estes se apresentem visí-
veis e alinhados. Vamos, também, inserir na área CABEÇALHO DO RELATÓ-
RIO a imagem que inserimos no formulário “Menu Principal”, bem como o
título “Editora Centro Atlântico”.
No que diz respeito às legendas dos cálculos parciais e totais apresenta-
dos no relatório também podemos fazer ligeiras adaptações. Para simplifi-
car o relatório eliminamos o Rodapé NVenda, apagando o seu conteúdo.
Vamos ainda eliminar o controlo que apresenta um resumo detalhado do
cálculo e ajustar o posicionamento do Rótulo “Soma do Ano”.

Figura II.8.39 Processo de configuração do rodapé Data

No final, o relatório deverá ter uma configuração como a que é apresen-


tada na figura II.8.40.

Figura II.8.40 Aspecto do Final do Relatório “Vendas” depois de efectuados os


melhoramentos no modo VISTA DE ESTRUTURA
II.9
Macros

As macros permitem executar


um conjunto de acções que per-
mitem automatizar tarefas recor-
rentes na gestão das bases de
dados. O processo associado à
criação de macros está bastante
facilitado, pois este objecto do Access disponibiliza ao utilizador um com-
junto de acções predefinidas com múltiplas opções.
Uma macro é um pequeno programa que podemos criar e armazenar na
nossa aplicação de base de dados. As macros podem variar entre um sim-
ples comando que apresenta um formulário, até um conjunto complexo de
comandos que pode aferir a quantidade de um produto em stock e auto-
maticamente imprimir em duplicado um pedido de fornecimento. De facto,
uma macro pode ser composta por uma sequência de acções ou por um
grupo de macros. Pode também utilizar uma expressão condicional para
determinar se, em alguns casos, deve ser executada uma acção quando a
macro é accionada.
Embora de forma implícita, no decorrer deste livro já usamos macros. Com
efeito, no capítulo 7, criamos botões que de uma forma automática execu-
tavam tarefas simples, tais como abrir ou fechar formulários. Para criar
estas acções usamos o assistente de BOTÕES DE COMANDOS, que nos soli-
cita a escolha de algumas opções para gerar uma macro.

9.1 ACÇÕES E ARGUMENTOS

As macros são constituídas por acções ou comandos que permitem reali-


zar a tarefa que pretendemos automatizar. Abrir formulários, fechar uma
tabela e ordenar uma consulta, são exemplos de acções que podem ser
utilizadas nas macros.
366 BASES DE DADOS COM MICROSOFT ACCESS 2007

Depois de adicionar uma acção a uma macro, são definidos os argumentos


para a acção na parte inferior da janela de Macros no modo VISTA DE
ESTRUTURA. Contudo, devemos perceber que o número de argumentos e o
seu objectivo varia consoante a acção que for seleccionada.

Os argumentos são blocos adicionais de informações, necessários para


efectuar uma acção individual. Por exemplo, a acção de uma macro
“Abrir formulário” precisa de argumentos para identificar o nome do for-
mulário a abrir, bem como a vista em que ele será aberto.

Apresentamos algumas considerações sobre a utilização dos argumentos


de acção:

• Alguns argumentos são de preenchimento obrigatório, outros serão


facultativos;
• Em geral, será conveniente definir os argumentos de acção pela
ordem em que são listados, uma vez que as escolhas efectuadas
para um determinado argumento podem influenciar os argumentos
seguintes;
• Se adicionarmos uma acção à macro, arrastando um objecto da
base de dados do PAINEL DE NAVEGAÇÃO, o Access define automa-
ticamente argumentos adequados a essa acção;

• Podemos utilizar uma expressão antecedida de um sinal de igual


(=) para definir vários argumentos de acção.

9.2 CRIAÇÃO DE UMA MACRO

Antes de dar início ao processo de criação de uma macro, devemos estar


conscientes das acções que são necessárias para completar a tarefa que
pretendemos automatizar.
Uma vez que não existem assistentes que nos ajudem a criar a macro,
está será criada inserindo as acções e respectivos argumentos directa-
mente no modo VISTA DE ESTRUTURA.
II.9 MACROS 367

Para criar uma nova Macro, devemos:


1. No separador CRIAR do friso, seleccionamos o botão
MACRO na secção OUTROS.
2. Na janela de macros, no modo VISTA DE ESTRUTURA, selec-
cionamos a primeira linha da coluna ACÇÃO. Em seguida, activamos
a caixa de combinação que nos apresenta um conjunto diversifi-
cado de acções. No nosso exemplo, escolhemos a acção Abrir
Formulário.

Figura II.9.1 Selecção da primeira ACÇÃO na janela de macros no modo VISTA DE


ESTRUTURA

3. Na terceira coluna da janela de macros no modo VISTA DE ESTRU-


TURA escrevemos um comentário para descrever a acção (o preen-
chimento desta coluna é opcional).
4. Na parte inferior da mesma janela, configuramos os argumentos da
acção, nomeadamente o nome do formulário que está disponível na
caixa de combinação do argumento Nome do formulário.

Descrição do
argumento
seleccionado

Figura II.9.2 Configuração dos argumentos da acção no modo VISTA DE ESTRUTURA

5. Se pretendermos inserir novas acções temos de repetir os passos


2, 3 e 4. A macro realizará as acções pela ordem estabelecida na
listagem.
368 BASES DE DADOS COM MICROSOFT ACCESS 2007

6. Depois de criar a macro, devemos guardar o trabalho, atribuindo à


macro um nome que identifique as tarefas que esta executa.

Como podemos constatar, as macros são bastante mais recomendáveis do


que os assistentes de BOTÕES DE COMANDOS, pois estas oferecem um
conjunto mais alargado de acções que permitem uma maior personaliza-
ção do seu desempenho.

Podemos facilmente alterar a ordem de execução das acções de uma


macro, clicando na margem esquerda de acção e arrastando-a para a
nova localização. O Access automaticamente deslocará as restantes
acções para as posições seguintes.

9.3 EXECUÇÃO E TESTE DE UMA MACRO

Para que uma macro ponha em prática as acções que lhe estão associa-
das, temos que as executar. Existem essencialmente duas possibilidades
de execução de uma macro. Podemos executar as acções de uma macro
de uma só vez, ou podemos testar uma macro executando-a de acção em
acção, permitindo assim rever os resultados de cada uma e facilitando a
detecção de eventuais erros.

9.3.1 Executar uma macro a partir do PAINEL DE NAVEGAÇÃO

Para executar uma macro devemos:


1. No PAINEL DE NAVEGAÇÃO, seleccionar o nome da macro que dese-
jamos executar.

2. Fazer duplo clique no nome da macro, ou premir o botão direito do


rato e seleccionar a opção EXECUTAR.

Figura II.9.3 Menu rápido para executar uma macro

Se a macro encontrar uma acção que não consegue executar, aparecerá


uma caixa de mensagem indicando a referida acção. Depois de termos
II.9 MACROS 369

tomado conhecimento da falha da acção, devemos clicar no botão PARAR


TODAS AS MACROS.

Figura II.9.4 Caixa de mensagem com a indicação de uma acção que falhou

9.3.2 Executar uma macro com recurso a um botão de comando

Na perspectiva de facilitar o acesso à execução de uma macro é frequente a


definição de BOTÕES DE COMANDO posicionados nos respectivos formulários.

Na VISTA DE ESTRUTURA do formulário que incorporará o botão, devemos:


1. No friso, seleccionar o separador ESTRUTURA e, posterior-
mente, premir o botão ASSISTENTE DE CONTROLO que se en-
contra na secção CONTROLOS.
2. No mesmo separador do friso, seleccionar o botão BOTÃO DE
COMANDO que se encontra na secção CONTROLOS.
3. Premir o rato no local onde se deseja colocar o canto superior
esquerdo do botão de comando. Automaticamente o assistente do
BOTÃO DE COMANDO irá aparecer no ecrã.
4. Na caixa de diálogo é possível escolher a CATEGORIA e a respectiva
ACÇÃO que o botão irá desempenhar. No caso de executar uma
macro, devemos seleccionar a CATEGORIA Diversos e, posterior-
mente, seleccionar a ACÇÃO Executar macro.

Figura II.9.5 Assistente de BOTÕES DE COMANDO que sugere a selecção do tipo de acção
que deve ter o botão
370 BASES DE DADOS COM MICROSOFT ACCESS 2007

5. Em seguida, escolher a macro que se pretende executar.


6. Na caixa de diálogo seguinte, o Access sugere a escolha de uma
imagem ou texto que caracterize o botão.
7. Finalmente, na última caixa de diálogo, indicar o nome que irá iden-
tificar o BOTÃO DE COMANDO e premir o botão CONCLUIR.

9.3.3 Testar uma macro passo-a-passo

Ao testar uma macro passo-a-passo é possível confrontar os resultados


das acções com os resultados esperados e actuar em conformidade, quer
fazendo alterações quer deixando tudo na mesma.
Para executar uma macro passo-a-passo, devemos:
1. Visualizar a Macro no modo VISTA DE ESTRUTURA.
2. Activar o botão PASSO A PASSO no friso.
3. Clicar no botão EXECUTAR na mesma barra e na mesma secção
FERRAMENTAS.

4. Na janela PASSO INDIVIDUAL, clicar no botão PASSO para executar a


primeira acção na macro.

Figura II.9.6 Caixas de mensagens associadas ao procedimento para testar uma macro
passo-a-passo

5. Repetir o procedimento 4 até a macro terminar. Se a macro encon-


trar uma acção que não consegue executar, aparecerá uma janela
de mensagem que indicará a acção que falhou.

Identificação
do erro
II.9 MACROS 371

Quando um erro ocorre, teremos de parar o processo, clicando no botão


PARAR TODAS AS MACROS. Este processo identifica o número do erro
associado ao problema. Com esta informação podemos requerer ajuda
no Microsoft Online Knowledge Base.

9.4 CRIAÇÃO DE GRUPOS DE MACROS

Sempre que tivermos um conjunto de macros relacionadas e que devem


ser executadas em grupo, o Access disponibiliza-nos um processo que
permite gerir a base de dados mais facilmente: Criar Grupos de Macros.
Quando o processo de execução de um grupo de macros é iniciado, a pri-
meira macro no grupo será executada com base na sua primeira acção,
executando as acções seguintes até chegar ao nome de uma nova macro
ou à última acção da última macro.
Para criar Grupos de Macros devemos:
1. Visualizar a macro no modo VISTA DE ESTRUTURA.

2. Activar o botão NOMES DE MACRO no friso.


3. Escrever um nome para o grupo de macros
junto da primeira acção na coluna NOME DA MACRO.

Figura II.9.7 Janela de Macros no modo VISTA DE ESTRUTURA com um grupo de macros

4. Guardar as alterações.

O grupo de macros apresentado na figura II.9.7, denominado por “Ges-


taoMenu”, é constituído por duas macros relacionadas: “AbrirMenu” e
“FecharMenu”. A primeira executa as acções AbrirFormulário e Maxi-
372 BASES DE DADOS COM MICROSOFT ACCESS 2007

mizar, enquanto a segunda envia uma mensagem para o ecrã (CxMsg) e


fecha o formulário (Fechar).
Podemos executar uma macro de um grupo de macros escrevendo o
nome do grupo de macros seguido de um ponto final e, em seguida, o
nome da macro. No exemplo anterior, para referir a macro “FecharMenu”
no grupo de macros “Gestão Menu”, deve escrever GestaoMenu.
FecharMenu e, de seguida, pressionar OK.

Figura II.9.8 Procedimento para executar uma macro de um grupo de macros

9.5 CRIAR MACROS CONDICIONADAS

Este tipo de macros utiliza-se quando pretendemos executar uma acção,


ou uma série de acções, numa macro, apenas se uma determinada condi-
ção for verdadeira. As condições podem ser definidas utilizando nomes de
campos, controlos, fórmulas e funções do Access.
Por exemplo, podemos criar uma macro que só imprima um relatório se o
número de registos a imprimir for maior que zero. Se utilizarmos uma
macro condicional devemos definir uma expressão que seja alvo de uma
avaliação por parte do Access. Assim, o Access só executa a acção se a
referida expressão for verdadeira.
Para criar Macros Condicionadas devemos:
1. Visualizar a Macro no modo VISTA DE ESTRUTURA.
2. Activar o botão CONDIÇÕES existente na secção
MOSTRA/OCULTAR do friso.
3. Activar o botão CONSTRUTOR existente na secção FER-
RAMENTAS para abrir o construtor de expressões.
II.9 MACROS 373

Figura II.9.9 Janela do CONSTRUTOR DE EXPRESSÕES

4. Inserir uma expressão que o Access possa avaliar como verdadeira


ou falsa. No nosso exemplo vamos inserir a expressão DCon-
tar(“*”;”Vendas”)>0 que verifica se o número de registos da
tabela Vendas é superior a zero.
5. Guardar as alterações.

Quando executamos a macro, o Access avalia a primeira expressão condi-


cional. Se a condição for verdadeira, executa a acção nessa linha e todas
as acções imediatamente a seguir que sejam precedidas de reticências (...)
na coluna CONDIÇÃO. Se a condição for falsa, o Access ignora a acção e
todas as acções imediatamente a seguir que sejam precedidas por reticên-
cias na coluna CONDIÇÃO. Em seguida, serão executadas as outras acções
na macro que tenham a coluna CONDIÇÃO em branco até chegar a outra
expressão, ao nome de uma macro ou ao fim da macro.

Figura II.9.10 VISTA DE ESTRUTURA da Macro que contém uma condição


374 BASES DE DADOS COM MICROSOFT ACCESS 2007

9.6 ATRIBUIR MACROS A ACONTECIMENTOS

Consideremos um acontecimento como uma acção específica que ocorre


num objecto ou com um determinado objecto. Os acontecimentos poderão
ser uma qualquer actividade despoletada pelo utilizador como mover o
rato, fazer clique ou duplo clique sobre um controlo, abrir ou fechar um for-
mulário, etc.
Por exemplo, clicar num objecto ou num controlo é o acontecimento Ao
fazer clique (este acontecimento poderá ocorrer no objecto botão). Po-
deremos também atribuir o acontecimento Ao entrar que ocorre quando
um utilizador entra num campo clicando nele.
Se pretendermos executar uma macro, como resposta a um aconteci-
mento, teremos de configurar as propriedades do objecto, onde serão
apresentados todos os acontecimentos aplicáveis ao objecto em causa.
Depois de depararmos com a janela das propriedades (figura II.9.11), es-
colhemos um acontecimento e, em seguida, especificamos a macro que irá
ser executada quando ocorrer este acontecimento.

Figura II.9.11 Janela com as propriedades do controlo CódAutor com os


respectivos acontecimentos

9.6.1 Atribuir uma macro a um acontecimento

Este procedimento é normalmente utilizado quando a execução de uma


macro é activada quando surge uma determinada alteração num controlo.
Para atingir este objectivo devemos:
1. Visualizar o objecto no modo VISTA DE ESTRUTURA.
2. Seleccionar o objecto e clicar no botão FOLHA DE
PROPRIEDADES existente na secção FERRAMENTAS do friso.
II.9 MACROS 375

3. Clicar no separador ACONTECIMENTO.


4. Seleccionar a caixa do acontecimento que pretendemos utilizar.
5. Clicar na caixa de combinação e, em seguida, clicar na macro que
se pretende associar ao objecto (figura II.9.12).

Figura II.9.12 Selecção de uma macro na janela com as propriedades de um objecto

9.6.2 Criar uma nova macro para um acontecimento

No caso de pretendermos associar um acontecimento a uma macro que


ainda não foi criada devemos:
1. Visualizar o objecto no modo VISTA DE ESTRUTURA.
2. Seleccionar o objecto e clicar no botão FOLHA DE
PROPRIEDADES existente na secção FERRAMENTAS
do friso.
3. Clicar no separador ACONTECIMENTO.
4. Clicar no acontecimento ao qual pretende atribuir uma macro.
5. Seleccionar o botão CONSTRUTOR.

Figura II.9.13 Opções do construtor


376 BASES DE DADOS COM MICROSOFT ACCESS 2007

6. Fazer duplo clique em CONSTRUTOR DE MACROS.


7. Escrever um nome para a macro e definir as acções da macro tal
como foi explicado em 9.2.

9.7 EXERCÍCIO GUIADO

Para exemplificar a utilização de macros na base de dados Editora, vamos


criar uma macro que execute um conjunto de acções de uma forma auto-
mática. O objectivo final desta macro será o de imprimir o relatório Mapa
de Vendas.

Criar uma macro


No separador CRIAR do friso seleccionamos o botão MACRO na secção
OUTROS. Depois de depararmos com a janela de Macros no modo VISTA DE
ESTRUTURA, colocamos o cursor na primeira linha da coluna “Acção” e
seleccionamos a caixa de combinação de forma a escolher o tipo de acção
que pretendemos utilizar. Considerando o nosso exemplo, vamos escolher
a acção AbrirRelatório e escrever um comentário para descrever a
acção.
Devemos também especificar alguns argumentos para esta acção,
nomeadamente o nome do relatório e a vista a utilizar para a sua visualiza-
ção.

Figura II.9.14 Definição da acção AbrirRelatório para a macro de Impressão do


relatório

Em seguida, vamos introduzir a acção Maximizar que permite visualizar o


relatório em toda a extensão da janela da base de dados. Em seguida,
inserimos a acção CxMsg que terá um papel informativo. Na verdade, esta
II.9 MACROS 377

acção provocará o aparecimento de uma caixa que apresentará uma men-


sagem que antecede a impressão do relatório.

Figura II.9.15 Definição da acção CxMsg para a macro de Impressão do relatório

Finalmente, inserimos a acção que irá efectuar a impressão do relatório.

Figura II.9.16 Definição da acção Imprimir para a macro de Impressão do relatório

Agora que concluímos o processo de criação, vamos gravar a nossa macro


com o nome “Impressão de Mapa de Vendas”.

Executar a macro com o recurso a um botão de comando


Na perspectiva de facilitar o acesso à execução desta macro, vamos inserir
um botão de comando no menu principal. Assim sendo, na VISTA DE ES-
TRUTURA do formulário “Menu Principal”, devemos:
1. No friso, seleccionar o separador ESTRUTURA e, posterior-
mente, premir o botão ASSISTENTES DE CONTROLO que se
encontra na secção CONTROLOS.
2. No mesmo separador, premir o botão BOTÃO DE COMANDO que
se encontra na secção CONTROLOS.
378 BASES DE DADOS COM MICROSOFT ACCESS 2007

3. Premir o rato no local onde se deseja colocar o canto superior


esquerdo do botão de comando. Automaticamente o Assistente do
BOTÃO DE COMANDO irá aparecer no ecrã.

Figura II.9.17 Procedimentos adoptados no ASSISTENTE DE BOTÕES DE COMANDO para


associar um botão a uma macro

4. Na primeira caixa de diálogo seleccionar a CATEGORIA Diver-


sos e, posteriormente, seleccionar a ACÇÃO Executar macro.
5. Na segunda caixa de diálogo escolher a “Impressão de Mapa
de Vendas”.
6. Na caixa de diálogo seguinte, escolher uma imagem ou texto
que caracterize o botão.
7. Finalmente, na última caixa de diálogo, indicar o nome que irá
identificar o BOTÃO DE COMANDO e premir no botão CONCLUIR.

Atribuir Macros a acontecimentos


Vamos agora criar uma nova macro associada a um acontecimento. Como
exemplo, vamos considerar o processo de registo de um novo livro na
base de dados Editora. Suponhamos que ao introduzirmos a identificação
do livro (ISBN) deverá ser inserida de uma forma automática a data de
edição do mesmo, supostamente no dia em que este registo é feito.
Para salvaguardar esta situação, teremos de criar uma macro associada
ao acontecimento de inserção do ISBN do Livro. Assim, devemos abrir o
formulário “Livros” em VISTA DE ESTRUTURA e, em seguida, seleccionamos
a caixa de texto referente ao ISBN e clicamos no botão FOLHA DE PROPRIE-
DADES existente na secção FERRAMENTAS do friso.
II.9 MACROS 379

Figura II.9.18 Definição do acontecimento Depois de actualizar referente ao controlo


“ISBN”

Na janela das propriedades do controlo “ISBN” devemos seleccionar o


acontecimento Depois de actualizar (figura II.9.18) e, em seguida,
clicar no botão CONSTRUIR. Na janela (figura II.9.13) que aparecerá no
ecrã seleccionamos CONSTRUTOR DE MACROS para termos a possibilidade
de criar uma nova macro.
Antes de definir as acções que compõem a macro atribuímos-lhe o nome
“Actualizar DataEdição”.

Figura II.9.19 Janela que permite gravar a macro com o nome


Actualizar DataEdição

Em seguida, vamos introduzir duas acções, a primeira apresentará um


aviso com uma informação que antecipará a actualização da data de edi-
ção e a segunda efectuará essa actualização. Configure a macro com as
acções e respectivos argumentos, tal como é apresentado na figura II.9.20.
380 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.9.20 Definição das acções CxMsg e DefinirValor para a macro de actualização
da Data de Edição

Quando activar o formulário “Livros” e proceder à inserção de um novo


registo, através da inserção de um novo ISBN do livro, visualizará a caixa
de diálogo e depois de fazer OK será feita a alteração automática da “Data
de Edição”.

Figura II.9.21 Resultado da execução da macro depois de inserido um novo livro


II.10
Gestão da Base de Dados

10.1 SISTEMA DE NAVEGAÇÃO

Uma das principais preocupações de quem desenvolve um Sistema de


Gestão de Base de Dados é o de facilitar o acesso aos diferentes objectos
da mesma. Em vez de obrigarmos os utilizadores a percorrer a LISTA DE
NAVEGAÇÃO à procura do objecto pretendido, devemos disponibilizar um
género de menu que permita escolher as opções através de um conjunto
de botões (processo alternativo foi abordado em 7.11). Este tipo de menu
será desenvolvido através de um formulário e será muito útil especialmente
para os utilizadores que não tenham muita facilidade na utilização do
Access.

10.1.1 Construção do Painel de Navegação

Este formulário funcionará como menu principal da aplicação. Nesse sen-


tido vamos criar um painel de navegação com um conjunto de botões que
permitam aceder a alguns objectos anteriormente criados:
1. No friso, seleccionar o separador FER-
RAMENTAS DA BASE DE DADOS e, posterior-
mente, premir o botão GESTOR DE PAINÉIS DE
NAVEGAÇÃO que se encontra na secção FERRAMENTAS DA BASE DE
DADOS.
2. Na primeira vez que efectuamos este procedimento na nossa base
de dados, o Access, como não encontra nenhum Painel de Nave-
gação, pergunta se pretendemos criar um painel. Clicamos em SIM.
382 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.10.1- Caixa informativa que alerta para o facto de não existir Painel de Navegação

3. Se o Painel já existir, aparecerá no ecrã uma caixa de diálogo que


nos permite criar um novo, editar ou eliminar um já existente.

Figura II.10.2 Janela do Gestor de Painéis de Navegação

4. Para acedermos à página do Painel, premimos o botão EDITAR. Em


seguida, premimos o botão NOVO para incluir as opções de menu.

Figura II.10.3 Escolha de um comando que será associado ao Painel de Navegação

5. Para criar um novo comando no menu devemos inserir dois tipos


de informação: texto que aparece como legenda e o comando que
o Access executará quando o respectivo botão for accionado.
II.10 GESTÃO DA BASE DE DADOS 383

6. Repetimos os passos 4 e 5 até criarmos os comandos necessários


e só depois devemos premir o botão FECHAR.

Em resultado da criação do menu principal, poderemos ter um formulário


com o seguinte aspecto:

Figura II.10.4 Aspecto final de um menu de opções criado com o Gestor de Painéis de
Navegação

Um painel de navegação funciona como um simples formulário. Assim


sendo, podemos utilizar todo o tipo de procedimentos abordados no capí-
tulo 7, de forma a impor ao painel uma configuração personalizada.

10.1.2 Designação do Sistema de Navegação como formulário


de arranque da aplicação

Depois de concluirmos o desenvolvimento da aplicação, e no sentido de


usarmos o Sistema de Navegação (Painel de Navegação) como plataforma
para o acesso a todos os objectos anteriormente criados, será conveniente
apresentar este menu de uma forma automática e imediata quando arran-
carmos com o Access. Assim, devemos:
1. Aceder ao BOTÃO DO OFFICE.
2. No menu respectivo encontramos o botão OPÇÕES DO ACCESS.
3. Na caixa que aparece no ecrã, seleccionar a opção BASE DE DADOS
ACTUAL que se encontra na lista da esquerda.
384 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.10.5 Janela OPÇÕES DO ACCESS onde é possível definir o “Painel de Navegação”
como formulário de arranque da base de dados

4. Na secção OPÇÕES DA APLICAÇÃO seleccionar o nome do formulário


de arranque na caixa MOSTRAR FORMULÁRIO.

Cada vez que executamos uma tarefa na nossa aplicação devemos


retornar ao menu principal de forma a continuar o nosso trabalho. Para
facilitar este processo devemos adicionar em cada formulário um botão
que nos permita retornar ao menu principal.

10.2 FAZER CÓPIAS DE SEGURANÇA

O processo automático de gravação pode trazer problemas quando efec-


tuamos uma alteração errada na nossa base de dados. Se formos rápidos
na percepção desse erro, sempre podemos recorrer ao comando
DESFAZER disponível na BARRA DE FERRAMENTAS DE ACESSO RÁPIDO.
Contudo, este comando só recupera as últimas acções, não sendo útil
quando fechamos a nossa base de dados e a voltamos a abrir.
Por esta razão será conveniente fazer regularmente cópias de segurança
da nossa base de dados. Para fazer estas cópias de segurança só temos
de fazer a gravação numa nova pasta ou fazer uma gravação com outro
nome.
Para efectuar a gravação de uma cópia de segurança devemos:
1. Seleccionar o BOTÃO MICROSOFT OFFICE.
II.10 GESTÃO DA BASE DE DADOS 385

2. No menu, escolher a opção GERIR.


3. Finalmente, escolher CRIAR CÓPIA DE SEGURANÇA DA BASE DE DA-
DOS no respectivo submenu.

Figura II.10.6 Opção para a criação de uma cópia de segurança da base de dados

O Access criará uma cópia da nossa base de dados com o nome e com a
localização que nós definirmos na janela da figura II.10.7.

Na janela de gravação, o Access propõe um nome muito sugestivo para


a nossa base de dados, pois inclui o nome original e a data em que a
cópia de segurança foi feita. Desta forma, se tivermos várias cópias de
segurança podemos facilmente saber qual é a mais recente.

Figura II.10.7 Janela para a gravação da base de dados na localização pretendida

10.3 UTILIZAR UMA PALAVRA-PASSE PARA ENCRIPTAR UMA BD

O objectivo desta ferramenta de encriptação no Access 2007 é o de tornar


os dados ilegíveis por parte de outras ferramentas bem como obrigar os
utilizadores a identificar-se (introduzir uma palavra-passe) para utilizar a
386 BASES DE DADOS COM MICROSOFT ACCESS 2007

base de dados. De salientar que a encriptação aplicada no Access 2007


utiliza um algoritmo mais forte do que aquele que é utilizado em versões
anteriores do Access.

10.3.1 Encriptação utilizando uma palavra-passe

Os passos seguintes explicam como criar e aplicar uma palavra-passe a


uma base de dados do Office Access 2007.
1. Abrir a base de dados que pretendemos encriptar em modo
exclusivo. Para isso, devemos clicar no BOTÃO MICROSOFT
OFFICE e, em seguida, seleccionamos a opção ABRIR.
2. Na caixa de diálogo ABRIR, seleccionamos o ficheiro que pretende-
mos abrir.
3. Clicamos na seta junto ao botão ABRIR e seleccionamos a opção
ABRIR EM MODO EXCLUSIVO.

Figura II.10.8 Menu da opção ABRIR

4. No separador FERRAMENTAS DA BASE DE


DADOS da secção FERRAMENTAS DA BASE
DE DADOS, seleccionamos o botão ENCRIPTAR COM PALAVRA-PASSE.

5. Na caixa PALAVRA-PASSE, escrever a palavra-passe e voltar a es-


crevê-la no campo CONFIRMAR.

Figura II.10.10 Caixa de diálogo para definir a Palavra-passe da base de dados

6. Finalizamos clicando no botão OK.


II.10 GESTÃO DA BASE DE DADOS 387

10.3.2 Desencriptar e abrir uma base de dados

Obviamente que é fundamental que nos recordemos da palavra-passe,


pois no caso de a esquecermos não existe nenhum método para a recu-
perar. Assim, para desencriptar e abrir uma base de dados devemos:
1. Abrir a base de dados encriptada da mesma forma que abrimos
qualquer outra base de dados.
2. Escrever a palavra-passe na caixa INTRODUZA A PALAVRA-PASSE DA
BASE DE DADOS.

Figura II.10.11- Caixa de diálogo para introduzir a palavra-passe necessária

3. Finalizamos clicando no botão OK.

10.3.3 Remover uma palavra-passe

Quando removemos uma palavra-passe de uma base de dados, podere-


mos restaurá-la em qualquer altura (ou utilizar outra palavra-passe) repe-
tindo os passos enunciados em 10.3.1. Os passos seguintes permitem re-
mover uma palavra-passe:
1. Abrir a base de dados que pretendemos encriptar em modo
exclusivo. Para isso, devemos clicar no BOTÃO MICROSOFT
OFFICE e, em seguida, seleccionar a opção ABRIR.
2. Na caixa de diálogo ABRIR, seleccionamos o ficheiro que pretende-
mos abrir.
3. Clicamos na seta junto ao botão ABRIR e seleccionamos a opção
ABRIR EM MODO EXCLUSIVO.

4. No separador FERRAMENTAS DA BASE DE DA-


DOS da secção FERRAMENTAS DA BASE DE
DADOS, seleccionamos o botão DESENCRIPTAR BASE DE DADOS.
5. Na caixa PALAVRA-PASSE, escrever a palavra-passe e clicar em OK.
388 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.10.12 Caixa de diálogo para anular a palavra-passe

10.4 SEGURANÇA PARA BASES DE DADOS DISTRIBUÍDAS

Quando uma base de dados é usada localmente, ou seja, numa rede local
ou num computador pessoal, temos a possibilidade de controlar quem lhe
acede quer numa perspectiva de utilização quer numa perspectiva de de-
senvolvimento. Contudo, quando a nossa base de dados é distribuída para
o exterior, então é bem provável que possamos perder esse controlo.
Por razões de segurança é possível criar uma base de dados executável
(ACCDE) que impossibilite a alteração das suas características estruturais.
Na verdade, a criação de um ficheiro ACCDE tem também como conse-
quência o facto de este diminuir o tamanho da base de dados e optimizar o
respectivo desempenho.

Embora através de um processo semelhante, as anteriores versões do


Access representavam as bases de dados executáveis por ficheiros com
extensão MDE (Microsoft Database Executable). Com o Access 2007 as
bases de dados executáveis são representadas por ficheiros com ex-
tensão ACCDE.

De salientar que esta acção de gravação de uma base de dados em for-


mato ACCDE impede a ocorrência de vários procedimentos, designada-
mente:
• Visualizar, editar e criar Formulários, Relatórios e Módulos na Vista
de Estrutura;

• Importar ou exportar Formulários, Relatórios ou Módulos;


• Alterar ou eliminar referências a outros objectos da base de dados;
• Modificar código VBA.

Para criar uma base de dados em formato ACCDE devemos:


II.10 GESTÃO DA BASE DE DADOS 389

1. No friso, seleccionar o separador FER-


RAMENTAS DA BASE DE DADOS e, posteriormente,
premir o botão CRIAR ACCDE que se encontra na secção FER-
RAMENTAS DA BASE DE DADOS.

2. Na caixa de diálogo (GUARDAR COMO) que aparece no ecrã, deve-


mos indicar o nome da base de dados.

Figura II.10.13- Caixa de diálogo GUARDAR COMO

Quando o Access cria uma base de dados executável, representa grafica-


mente a mesma com um cadeado azul em cima do ícone padrão do
Access, tal como se apresenta na figura seguinte.

Figura II.10.14 Representação através de um ícone de uma base de dados executável

10.5 DIVISÃO DE BASE DE DADOS

Com o Access é possível dividir uma base de dados em dois ficheiros: um


que contenha as tabelas e um que contenha as consultas, formulários,
relatórios, macros e módulos. Desta forma, os utilizadores que precisem de
aceder aos dados podem personalizar os formulários, relatórios, páginas e
outros objectos, mantendo uma única origem de dados na rede.
390 BASES DE DADOS COM MICROSOFT ACCESS 2007

Com o intuito de evitar erros com consequências graves na divisão da


base de dados, devemos certificar-nos que todos os objectos que a com-
põem estão efectivamente fechados.
Sugere-se ainda que antes de iniciar o processo de divisão seja criada
uma cópia de segurança da base de dados, por forma a salvaguardar a
estrutura original.

Para dividir uma base de dados devemos:


1. Abrir a base de dados que pretendemos dividir.
2. No friso, seleccionar o separador FERRAMENTAS DA BASE
DE DADOS e, posteriormente, premir o botão BASE DE
DADOS DO ACCESS que se encontra na secção MOVER DADOS.
3. Será despoletado o ASSISTENTE DIVISOR DE BASE DE DADOS. Na pri-
meira caixa de diálogo, confirmamos o objectivo de dividir a base
de dados.

Figura II.10.15 Janela que permite confirmar a divisão da base de dados

4. Em seguida, indicamos qual o local onde deverá ser criada a base


de dados que irá conter a tabela de dados (Back-end).

Figura II.10.16 Janela para criar a base de dados Back-end


II.10 GESTÃO DA BASE DE DADOS 391

5. A informação apresentada no quadro seguinte confirma-nos que a


divisão foi feita com sucesso.

Figura II.10.17 Janela confirma que a divisão foi feita com sucesso

Depois de concluir o processo de divisão, podemos confirmar que


existem dois ficheiros .accbd em ligação e que os PAINÉIS DE NAVEGA-
ÇÃO do mesmo apresentam as seguintes configurações.

Figura II.10.18 Configurações dos PAINÉIS DE NAVEGAÇÃO das


bases de dados divididas

10.6 ANALISAR O DESEMPENHO

Utilizando as potencialidades mais avançadas do Access na gestão da


base de dados podemos, em qualquer altura, avaliar o desempenho dos
respectivos objectos. Efectivamente, as possibilidades de análise distri-
buem-se por qualquer objecto em particular ou por todos simultaneamente.
O Analisador de desempenho apresenta uma lista de três tipos de resulta-
dos da análise: RECOMENDAÇÃO, SUGESTÃO e IDEIA. O tratamento destes
resultados é feito quando clicamos num item na lista RESULTADOS DA
ANÁLISE. Nessa altura são apresentadas informações sobre a optimização
proposta, na caixa NOTAS DA ANÁLISE existente por baixo da lista.
Para executar esta funcionalidade devemos:
1. Abrir a base de dados do Access que desejamos optimizar.
392 BASES DE DADOS COM MICROSOFT ACCESS 2007

2. No separador FERRAMENTAS DA BASE DE DADOS,


seleccionar a opção ANALISAR DESEMPENHO.
3. Clicar no separador que corresponde ao tipo de objecto que deseja-
mos optimizar. Em alternativa, clicar no separador TODOS OS TIPOS
DE OBJECTO para ver uma lista de todos os objectos de base de da-
dos ao mesmo tempo.

Figura II.10.19 Selecção dos objectos a analisar

4. Seleccionar os nomes dos objectos da base de dados que deseja-


mos optimizar. Em alternativa, clicar no botão SELECCIONAR TUDO
para seleccionarmos todos os objectos de bases de dados exis-
tentes na lista.
5. Repetir os passos 3 e 4 até seleccionar todos os objectos que de-
sejamos optimizar e, em seguida, clicamos em OK.

Figura II.10.20 Resultados da análise de desempenho da base de dados Editora

6. Na janela com os resultados da análise, seleccionamos uma ou


mais optimizações do tipo RECOMENDAÇÃO ou SUGESTÃO que dese-
jamos efectuar e, em seguida, clicamos em OPTIMIZAR.
II.10 GESTÃO DA BASE DE DADOS 393

O ANALISADOR DE DESEMPENHO efectua as optimizações e, em seguida,


marca-as como CORRIGIDO. Continuamos este processo até que o
ANALISADOR DE DESEMPENHO tenha concluído todas as RECOMENDAÇÕES e
SUGESTÕES que desejamos que sejam efectuadas.
Para efectuar todas as optimizações do tipo RECOMENDAÇÃO ou SUGESTÃO
clicamos em SELECCIONAR TUDO e, em seguida, clicamos em OPTIMIZAR.
Para efectuar uma optimização do tipo IDEIA, clicamos na optimização e,
em seguida, tratamos as instruções apresentadas na caixa NOTAS DA
ANÁLISE.

10.7 ANALISAR TABELAS

O Access disponibiliza um assistente bastante útil para os utilizadores que


tenham dificuldade na estruturação de dados e que se deparam com
tabelas de grande dimensão. Efectivamente, se a nossa base de dados
contiver uma tabela enorme, com informações repetidas num ou mais
campos, podemos utilizar o assistente ANÁLISE DE TABELAS para dividir os
dados em tabelas relacionadas. Este processo é baseado na técnica de
estruturação de dados denominada Normalização e que foi abordada na
primeira parte deste livro.
Com efeito, a ANÁLISE DE TABELAS divide uma tabela que contém informa-
ções repetidas, em tabelas separadas mais pequenas, nas quais cada tipo
de informação é armazenado apenas uma vez. De referir também que as
relações entre as tabelas resultantes serão implementadas automatica-
mente (ou com o auxílio do utilizador).
Para explicar a utilização deste assistente, vamos utilizar uma tabela que
contém os nomes dos revisores de livros da Editora e cuja informação as-
sociada, contempla apenas a Localidade onde estes residem e as respec-
tivas áreas de investigação.

Figura II.10.21 Tabela adoptada na utilização do assistente ANALISAR TABELAS


394 BASES DE DADOS COM MICROSOFT ACCESS 2007

Como podemos constatar na tabela apresentada na figura II.10.21, embora


esta seja muito pequena, existe informação repetida que contraria os bons
princípios da estruturação de dados. A sua optimização será feita com ba-
se nos seguintes passos:
1. Abrir a base de dados do Access que contém a tabela que deseja-
mos optimizar.
2. No separador FERRAMENTAS DA BASE DE DADOS,
seleccionamos a opção ANALISAR TABELA.
3. Nas duas primeiras caixas de diálogo do assistente devemos ler os
objectivos a atingir por esta opção. Se necessário, devemos tam-
bém consultar os exemplos que fundamentam essa explicação.

Figura II.10.22 Caixas do assistente com carácter informativo

4. Em seguida, indicamos o nome da tabela que será analisada.

Figura II.10.23 Caixa que permite seleccionar a tabela a analisar

5. Na caixa seguinte, devemos decidir sobre a forma de realizar a


“divisão” da tabela. Se deixarmos o assistente decidir, o Access
fará a análise ao conteúdo dos campos da tabela. Nos campos
II.10 GESTÃO DA BASE DE DADOS 395

onde encontrar repetições, fará a cópia dos mesmos para novas


tabelas onde serão criadas chaves primárias que salvaguardam as
relações entre tabelas.

Figura II.10.24 Caixa de diálogo do assistente que permite seleccionar o modo da operação
da optimização da tabela

6. No seguinte quadro, constatamos que o Access dividiu a original


em várias tabelas, consagrando a existência de novos campos
chave primária e de ligação (um-para-muitos).

Figura II.10.25 Caixa de diálogo do assistente que apresenta a sugestão do Access para a
optimização da Tabela1

7. Devemos ainda alterar o nome das tabelas resultantes da divisão


proposta pelo Access, seleccionando a tabela e clicando no botão
. No caso de pretendermos ajuda ou sugestões do Access se-
leccionamos o botão .
396 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura II.10.26 Caixa de diálogo do assistente que apresenta a sugestão do Access com os
novos nomes para as tabelas

8. Finalmente, o Access sugere a criação de uma consulta para facili-


tar a utilização das tabelas relacionadas em futuros formulários e
relatórios, preservando a tabela original.

Figura II.10.27 Caixa de diálogo do assistente que apresenta as opções finais


PARTE III

O VBA (Microsoft Visual Basic for Applications) é uma linguagem


de programação que permite manipular os diversos objectos exis-
tentes na Base de Dados. A sua utilização permite ao utilizador
mais experiente a realização de tarefas tais como a tomada de
uma decisão e a repetição de várias acções, tarefas estas que são
impossíveis de realizar sem o recurso a uma ferramenta de pró-
gramação. Neste capítulo são abordados os vários conceitos da
estrutura VBA e sua metodologia, que permitirão ao utilizador, de
uma forma clara, usar o recurso à informação, quer para pesquisa,
alteração ou aperfeiçoamento com o objectivo de tornar mais efici-
ente e amigável o tratamento de dados.
III.1
Introdução à programação em VBA

O objectivo desta Parte III é fornecer um conjunto de noções básicas e


exemplos de programação em VBA que permitam ao leitor, com uma
razoável experiência na utilização do Microsoft Access 2007, construir pe-
quenos programas que aumentem a eficiência e optimização das suas ba-
ses de dados.
Ao longo deste capítulo serão abordados, de uma forma detalhada, os
vários aspectos de programação em Visual Basic for Applications, bem
como situações de programação que, embora associadas ao contexto da
base de dados exemplo – “Editora Centro Atlântico” (figura III.1.1), facil-
mente se adaptarão às bases de dados a criar pelo leitor.

Figura III.1.1 Abertura da Base de Dados “Editora Centro Atlântico”


III.2
Características da programação em VBA

2.1 PROGRAMAÇÃO ORIENTADA POR OBJECTOS

Com a utilização do VBA, o utilizador estará a tomar conhecimento dos


diversos objectos existentes no VBA – Object Basic (derivado do Visual
Basic), o qual é também a base do Visual Basic for Applications (VBA),
que é, actualmente, o suporte de programação nas principais aplicações
do Microsoft Office. Deste modo, aumenta-se a eficiência do programador
que encontrará métodos semelhantes no Word, Excel, Project, Access
2007, etc.
O utilizador que já possua alguma experiência de programação irá encon-
trar muitos conceitos e estruturas familiares, como variáveis, condições e
ciclos repetitivos, entre outros. O VBA é uma linguagem de programação
estruturada que permite gerir as estruturas de dados e os objectos conce-
bidos pelo próprio Access.
Uma das necessidades mais importantes é a alteração da forma de pensar
do programador. Torna-se fundamental ter sempre presente que o VBA no
Access 2007 manipula objectos que vão desde a própria base de dados,
passando pelos nossos conhecidos formulários, relatórios e consultas, até
janelas, caixas de diálogo, folhas de cálculo do Excel e documentos do
Word. Por outro lado, encontra-se uma filosofia de eventos (acções reco-
nhecidas por um objecto), aos quais se associam determinados métodos,
instruções e funções de VBA, que já se encontram disponíveis na própria
linguagem, como por exemplo:
• Efectuar um cálculo num formulário, após a escolha de uma deter-
minada opção (OnClick) ou depois de passar com o rato sobre um
botão (OnMouseMove);

• Verificar se um valor é ou não válido, após a sua alteração (After


Update);
402 BASES DE DADOS COM MICROSOFT ACCESS 2007

• Activar um conjunto de configurações do ambiente de trabalho,


quando é aberto um determinado formulário (OnOpen);

No entanto, e porque este capítulo parte do princípio de que o utilizador


não é um programador experiente, serão abordados todos os conceitos bá-
sicos necessários.

2.2 O AMBIENTE DE DESENVOLVIMENTO DO VBA

Como já referimos, o Microsoft Access 2007 suporta a linguagem de pro-


gramação orientada por objectos – VBA, possuindo para tal estruturas
próprias, tais como: colecções, objectos, propriedades, métodos e eventos
(figura III.2.1), que passaremos a descrever.

OBJECTOS
OBJECTS
Têm Têm
Associadas Podem Associados
Responder a

PROPRIEDADES MÉTODOS
PROPERTIES METHODS

EVENTOS
EVENTS CÓDIGO
Que constitui a
resposta a cada evento

Fig III.2.1 Forma esquemática de alguns dos elementos fundamentais da programação em VBA

2.2.1 Objectos e Classes

O Visual Basic for Applications é uma linguagem de programação


orientada por objectos, como já foi referido. Os objectos são entidades das
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 403

mais diversas origens, tais como carros, telemóveis, vídeos, etc. Os ob-
jectos no VBA possuem propriedades, executam métodos e respondem a
eventos.
Os objectos, tal como acontece na vida real, são agrupados por modelos
ou espécies (um Nokia 9200, Nokia 9300, Nokia 9500 pertencem à classe
dos telemóveis), também em VBA os objectos, por exemplo, Texto1,
Texto2, Texto3, num formulário, pertencem todos à classe Caixa de Texto
(TextBox).
O objecto Aplicação (Application) é considerado o objecto de mais alto
nível da aplicação de base de dados, e a ele são acopladas todas as co-
lecções de objectos abertos no momento: Formulários (Forms), Relatórios
(Reports) e Módulos (Modules). Cada um dos formulários e relatórios
contém, por sua vez, uma colecção de controlos.
O objecto Aplicação possui ainda dois objectos especiais: o objecto
Screen1 e o objecto DoCmd2. O objecto Screen possui algumas proprieda-
des particularmente importantes e úteis: ActiveControl, ActiveDataSheet,
ActiveForm, ActiveReport, PreviousControl e MousePointer. O objecto
DoCmd permite executar a maior parte das acções das macros no VBA (fi-
guras III.2.2 e III.2.3).

Figura III.2.2 Código exemplificativo da utilização dos objectos Screen e DoCmd

1
O objecto “Screen” pode ser utilizado para referenciar em particular um formulário, relató-
rio ou controlo, que esteja activo naquele momento.
2
O objecto “DoCmd” permite que ao serem utilizados os vários métodos deste objecto pos-
samos executar diversas acções do Microsoft Access 2007 a partir do Visual Basic for
Applications. Por exemplo, podemos utilizar o método “OpenForm” do objecto “DoCmd”
para abrir um formulário.
404 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.3 Resultado do formulário na utilização dos objectos Screen e DoCmd

2.2.2 Propriedades e Métodos

Em programação, o conceito de objecto tem associado a si não apenas o


conceito de propriedade como também o conceito de método.
As propriedades e os métodos caracterizam a aparência e o comporta-
mento dos objectos. As propriedades assumem valores e os métodos fa-
zem executar operações.
A forma (sintaxe) de interligar um método ou uma propriedade a um
objecto3 é a seguinte: objecto.propriedade ou objecto.método. Por
exemplo, TxtCodigo.BackColor especifica a propriedade da cor de fundo
do objecto caixa de texto (TextBox) TxtCodigo num determinado formulá-

3 O termo objecto está aqui referido no sentido de objecto individual (controlo) ou como co-
lecção de objectos.
III.2 CARACCTERÍSTICAS DA PROOGRAMAÇÃO EM VBA
V 405

rio. Outtro exemploo será Form


ms.Item (0)), que se re
efere ao primeiro formu-
lário da colecção.
O Micro osoft Accesss 2007 numera os ob bjectos denntro de umaa colecção a
partir de
e zero (0) até
a NomeCo olecção.Co ount - 1. Po
or exemplo,, poderíamo
os
determinar o núme ero de form
mulários abe
ertos por re
eferência à propriedad
de
Count dad Colecção Formuláriios: Forms..Count.
Podemo os ter acessso às prop priedades de
d um obje ecto da basse de dadoos
quando nos encon ntramos no modo de exibição
e – Modo Des sign (Desig
gn
View) e opção “F Folha de Propriedad
P des” ou enttão, clicamos no men nu
“Ferrammentas de Base de Dados” D e op
pção “Folha
a de Proprriedades” (fi-
gura III.2.4 e figura
a III.2.5, respectivamennte).

Fiigura III.2.4 Acesso às prop


priedades dos objectos pela
a barra de ferrramentas
406 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.5 Acesso às propriedades dos objectos através do menu

Quando se pretende aplicar uma acção a um objecto da base de dados


(por exemplo, abrir uma consulta como um conjunto de registos ou passar
para a linha seguinte de um conjunto de registos), aplica-se um método de
objecto ou de uma variável de objecto, que esteja definido para referenciar
o objecto.
III.2 CARACCTERÍSTICAS DA PROOGRAMAÇÃO EM VBA
V 407

Os métodos (relaccionados co om os objecctos) são menos


m evide
entes que a as
proprieddades. Enquanto as prropriedadess de um objjecto podem m ser visuaali-
zadas numa
n caixaa própria para isso exxistente na fase de desenho, nã ão
existe no
n ambiente e de trabalhho nada se emelhante que
q nos perrmita identifi-
car os métodos
m dee cada objeecto. No enttanto, o Editor de Visuual Basic d do
Microsooft Access 20072 (figura
a III.2.6) offerece-nos uma ajuda bastante ú útil
nesta questão. Quando escre evemos o no ome de um objecto numa instruçã ão
de códiggo, associa ado a um evvento, na fa ase de deseenho, o Edittor de Visu
ual
Basic dod Microsofft Access 20 007 faz apa arecer uma
a caixa de listagem com
todas as proprieda ades e méto odos previsstos para o tipo de obje
ecto em cau-
sa (figura III.2.7).

F
Figura III.2.6 Acesso ao Ed
ditor de Visual Basic do Miicrosoft Accesss 2007

Figu
ura III.2.7 Caixxa de listagem
m com propried
dades e métodos referente ao objecto
40
08 BASES
A DE DADOS CO
OM MICROSOFT ACCESS
C 2007

Muuitos métoddos aceitamm parâmetrros que permitem esp pecificar meelhor o


moodo de actuuação do método
m sobrre o objecto
o. Por exemmplo, pode-sse indi-
4
car ao método OpenRec cordset see este está a criar um conjunto de
e regis-
toss de uma ta
abela local, um conjuntto dinâmico ou apenass uma cópiaa só pa-
ra leitura.
Umm outro exemplo espe ecialmente importante
e é o objec cto DoCmd d, visto
intteragir com uma grand de quantida
ade de métodos a utilizar por qu ualquer
utilizador noss vários está
ágios do de
esenvolvimeento dos se eus program mas. O
DooCmd posssui muitos métodos, tais como o, Close, OpenForm,
O , Goto
Coontrol, FinddRecord, RunComma
R and e muito
os outros (fig
gura III.2.8)).

Figura IIII.2.8:Alguns Métodos


M do ob
bjecto DoCmd
d

Muuitos dos métodos


m do DoCmd re equerem arggumentos que
q especifficam a
forrma de actuar do méttodo e, porr vezes, req querem tammbém argum mentos
op
pcionais. Se
empre que o utilizadorr não especcifique valoores para oss argu-
meentos opcio
onais, o méttodo utiliza os valores por omissã
ão para o parâme-

4
E
Este método permite
p acedeer/abrir os registos de uma tabela atravé és do objecto Record-
sett. O objecto Recordset
R é a representação dos regisstos de uma tabela numa base de
daddos. Para utiliizar o objecto Recordset te erá que recorrrer-se a um outro
o objecto, de nível
supperior, que é o Database. Este
E objecto re
epresenta uma base de dad dos aberta. Po
or exem-
plo
o, para abrir a tabela “TPacientes” implicaa as seguintess instruções:
set BasseDeDados=O
OpenDatabase
e(“Editora.mdb
b);
Set Tab
belaAutores=B
BaseDeDadoss.OpenRecord
dset(“Autores”,,dbOpenTable
e).
Ass variáveis Ba
aseDeDados e TabelaAuto ores são variááveis que refferenciam os objectos
Daatabase e Rec cordset, logo designam-se por variáveis--objecto. Este
e e outros obje
ectos se-
rão
o alvo de estud
do mais aproffundado no po
onto III.3 (Mod
delo de Objec ctos) deste ca
apítulo.
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 409

tro. Por exemplo, sempre que haja necessidade de fechar um formulário no


Microsoft Access 2007, podemos utilizar o método Close do objecto Do
Cmd. Este método possui dois argumentos obrigatórios e um opcional. O
primeiro argumento obrigatório indica o tipo de objecto a fechar.
Quando se pretende fechar um formulário utiliza-se acForm (acForm é
uma constante intrínseca5. Estas constantes são fornecidas pelo Microsoft
Access 2007, VBA, ADO ou DAO). O segundo argumento requer o nome
do formulário. O argumento opcional diz ao Microsoft Access 2007 se deve
ou não gravar qualquer alteração que tenha sido feita no formulário, atra-
vés de acSaveYes, caso se pretenda gravar, ou acSaveNo caso contrário.
Podemos invocar o método Close (figura III.2.9) utilizando a seguinte sin-
taxe:

DoCmd.Close acForm, "Menu Principal – EDITORA CENTRO


ATLÂNTICO", acSaveYes

Figura III.2.9 O método Close e os seus argumentos

Muitos dos métodos do DoCmd estão direccionados para um objecto indi-


vidual (controlo), como por exemplo o método GotoControl que atribui o
focus6 a um controlo específico no formulário. Também poderíamos utilizar
o método SetFocus com o mesmo objectivo.

5
As constantes intrínsecas são constantes fornecidas pelo Microsoft Access 2007, VBA,
ADO ou DAO. Quando são fornecidas pelo Microsoft Access 2007, os dois primeiros
caracteres iniciam-se com “ac”, que quer dizer Access. Se são do Visual Basic for Applica-
tion iniciam-se com os caracteres “vb”, que quer dizer Visual Basic, etc. Estas constantes
estão disponíveis no localizador de objectos (Object Browser) que se encontra no menu
“Ver” (View) da janela VBE (Editor de Visual Basic).
6
Focus é o nome dado ao estado de um controlo, quando este se encontra activo.
410 BASES
A DE DADOS CO
OM MICROSOFT ACCESS
C 2007

2.2
2.3 Evento
os

Emm VBA um evento é basicamentte uma ressposta de um u objecto a uma


orddem ou acçção do utilizzador, a partir de códig
go escrito previamente
p e e que
co
onstitui o prrocedimento o (procedu ure). O evento Click, por exemplo, que
utilizamos naa nossa aplicação, ressponde à prressão do dedo d do utilizador
obre a tecla esquerda do
so d rato em cima do co ontrolo – Bootão de Com
mando,
exxecutando o código que e lhe foi inserido.
Ca
ada objecto possui um conjunto de eventos associados.
a . Para sabe
er quais
ba
asta um cliqque na seta
a colocada à direita da
a caixa de eventos,
e na
a janela
de
e código, accção que ab
bre uma lista
a de evento
os.

Figura
a III.2.10 Algun
ns Eventos po
ossíveis do obj
bjecto Formulá
ário (“Form”)

Essta lista de eventos poode ser perccorrida comm recurso à barra de de esloca-
me ento. Para além
a do eveento Click, temos muittos outros eventos
e com
mo, por
exxemplo, qua ando se trab
balha com formulários
f e se preten
nde validar dados,
acctivar ou desactivar controlos, troccar o controolo que pos ssui o focus, abrir
umm formulário o e fechar um formulá ário. A títullo de exemmplificação, vamos
criar um proccedimento de d evento associado a um Rótu ulo (Label) com o
evvento MouseMove:

Fig
gura III.2.11 Evento
E MouseM
Move aplicado
o ao objecto Rótulo24
R
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 411

Sempre que se passe com o ponteiro do rato por cima (MouseMove) do


objecto Rótulo (“Editora”) que contém o texto “Editora – Centro Atlântico”)
por acção do método Move, este desloca-se em conformidade com os
valores aleatórios (Função RND) arbitrados pelos argumentos do método
(figura III.2.12).

Rótulo24.Move Int((1000 - 700 + 1) * Rnd + 700), Int((2300 - 1300 + 1)


* Rnd + 1300), 2380, 500
Figura III.2.12 Código associado ao método Move

Este método apresenta quatro parâmetros: esquerda (left), superior (top),


largura (width), altura (Height). O primeiro é obrigatório e os restantes três
são facultativos. Neste exemplo, para os valores destes parâmetros utili-
zamos duas funções – RND e INT – de forma a gerar valores aleatórios
para estes quatro parâmetros.
Como a função RND gera valores decimais entre zero e um, houve neces-
sidade de recorrer à função INT para converter os valores decimais para
inteiros. Também tivemos que enquadrar valores, por exemplo, para o
parâmetro esquerda necessitamos de valores aleatórios não entre zero e
um, mas sim entre mil (1000) e setecentos (700). O resultado apresenta-se
nas figuras III.2.13 e III.2.14:

Figura III.2.13 Aplicação do evento MouseMove


412 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.14 Resultado da aplicação do evento e método Move

2.3 PROCEDIMENTOS E MÓDULOS

Um conjunto de instruções escritas em Visual Basic for Application é


criado no interior de unidades designadas por procedimentos. Existem três
tipos de procedimentos: SubProcedimentos (Sub) ou SubRotinas, Funções
(Functions) e Propriedades Procedimentais (Property Procedures). Es-
tes últimos não fazem parte do âmbito deste livro.
Os procedimentos contêm dentro de si conjuntos de instruções que exe-
cutam determinadas acções sobre os objectos, controlos ou dados da
Base de Dados. O código elaborado em VBA, existente em procedimen-
tos, é armazenado no interior de Módulos. O Microsoft Access 2007 ofe-
rece-nos tipos de módulos distintos: Módulos pertencentes à classe de
objectos do Microsoft Access 2007 (Microsoft Office Access Class Ob-
jects), Módulos Padrão e Módulos de Classe.
Os módulos pertencentes à classe de objectos do Microsoft Access 2007
estão normalmente associados a formulários e relatórios, sendo muitas
vezes designados por módulo de formulário ou módulo de relatório. Esta
característica é designada por “Code Behind Forms”. Sendo assim, pode-
mos associar a cada um destes objectos, e por sua vez aos seus contro-
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 413

los, um conjunto de procedimentos que serão carregados em memória


sempre que o formulário ou relatório seja activado.
Estes procedimentos são associados a eventos de determinados controlos,
pelo que serão designados de procedimentos de eventos (figura III.2.15).

Figura III.2.15 Módulo de Classe ou Módulo de Formulário

Os Módulos Padrão são módulos criados como objectos da Base de


Dados onde é armazenado código que pretendemos utilizar a qualquer
momento, em qualquer objecto da Base de Dados. Podemos também as-
sociar a estes módulos um conjunto de procedimentos, isto é, o código de
programação em VBA deve ser desenvolvido em procedimentos, que se-
rão guardados dentro destes módulos (figura III.2.16).

Figura III.2.16 Módulo Padrão

Os módulos de Classe são utilizados quando se pretende criar novas clas-


ses. Estes módulos podem conter a definição de um novo objecto. Quando
é criada uma nova instância de uma classe, é criado o novo objecto. Os
procedimentos definidos nestes módulos tornam-se as propriedades e os
métodos desse objecto (figura III.2.17).
414 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.17 Módulo de Classe

Concluindo, em VBA podemos utilizar Módulos pertencentes à classe de


objectos do Microsoft Access 2007, Módulos de Classe e Módulos Padrão,
sendo todos eles constituídos por procedimentos que podem ser Funções,
SubProcedimentos ou Propriedades de Procedimentos, conforme repre-
sentado na figura seguinte (figura III.2.18):

Projecto em
Visual Basic
for Application

Módulos Módulos pertencentes à Módulos


de Classe classe de objectos do Padrão
Microsoft Access 2007

Procedimentos

Funções SubProcedimentos Prop. de Procedimentos

Figura III.2.18 Organização do Código em Visual Basic for Applications


III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 415

2.3.1 SubProcedimentos

São procedimentos que executam uma determinada acção, não devol-


vendo qualquer valor. Estes procedimentos consistem numa série de ins-
truções em VBA que se encontram entre a palavra reservada SUB e END
SUB. A palavra reservada SUB obriga a dar o nome para o SubProcedi-
mento, sendo automático quando este se encontra ligado a um evento de
um determinado objecto (figura III.2.19).

Figura III.2.19 SubProcedimento e SubProcedimento ligado a evento

Os nomes dos SubProcedimentos devem iniciar-se com uma letra e não


podem conter mais do que 255 caracteres. Também não é possível usar
palavras reservadas do VBA e nomes de funções. Os SubProcedimentos
podem conter parâmetros que serão colocados após o nome do SubPro-
cedimento entre parênteses. Caso contenha mais do que um parâmetro,
estes são separados por vírgulas.
Uma forma fácil, na familiarização de SubProcedimentos, consiste na utili-
zação de um assistente de botões de comando. Estes procedimentos des-
critos com base nas acções desejadas são geralmente simples e de fácil
compreensão, permitindo uma aprendizagem eficaz. Para tal o utilizador só
tem que escolher o controlo – “Botão de Comando” – e de imediato o as-
sistente é activado permitindo escolher uma entre várias acções para uma
determinada categoria (figura III.2.20).
416 BASES
A DE DADOS CO
OM MICROSOFT ACCESS
C 2007

Figura III.2.20
I Assiste
ente de botõess de comando
o

m seguida, o assistentte cria um SubProced


Em dimento, on
nde gera o código
ne
ecessário pa
ara realizarr a acção pretendida
p em relação
o ao botão de co-
ma
ando escolhhido (figura III.2.21).

Figura IIII.2.21 SubPro


ocedimento ge
erado pelo Asssistente Botõe
es de Comand
do
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 417

Podemos criar procedimentos com instruções VBA através de duas for-


mas: ou abrimos a janela de código para um procedimento a realizar por
acção de um evento, ou então criamos um procedimento normal, sem ser
desencadeado por um evento. Neste caso, podemos optar pelo item “Fer-
ramentas”, existente no menu do Microsoft Access 2007, escolher a opção
Macro e em seguida optar pelo item Editor do Microsoft Visual Basic.
Podemos, ainda, estando situados no Editor de Visual Basic (VBE),
escolher a opção “Inserir” [Insert] existente no menu, em seguida escolher
a opção “Procedimento” [Procedure] e por último o item “SubProcedi-
mento” [Sub]. Devemos terminar esta opção escrevendo o nome para o
SubProcedimento (figuras III.2.22 e III.2.23).

Figura III.2.22 Criar um novo Procedimento

Figura III.2.23 Criar novo SubProcedimento


418 BASES DE DADOS COM MICROSOFT ACCESS 2007

A chamada a um SubProcedimento é realizada através da palavra reser-


vada do VBA – CALL – seguida do nome do SubProcedimento ou sim-
plesmente só o nome do SubProcedimento (figura III.2.24).

Invocar os SubProcedimentos

Figura III.2.24 Invocar um SubProcedimento

2.3.2 Funções

As funções são procedimentos que diferem dos SubProcedimentos, basi-


camente em dois sentidos. Em primeiro lugar, as funções são procedi-
mentos que devolvem valores, como resultado de um cálculo. Em segundo
lugar, as funções nunca são utilizadas para definir procedimentos desenca-
deados por eventos. Estas estão associadas a procedimentos que tenham
necessidade de retorno de valores, no caso das funções definidas pelo uti-
lizador ou mesmo as funções pré-definidas pelo VBA (figura III.2.25).
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 419

Figura III.2.25 Chamada à função “TotalVendas()” com retorno do valor da variável “soma”

Neste exemplo podemos ver o recurso à função “TotalVendas()” para cál-


culo do valor total das Vendas. Após o cálculo dentro da função, existe
necessidade que esta devolva o valor calculado para onde foi chamada, de
forma a colocar o resultado final (valor calculado) na caixa de texto (texto5).

Fig III.2.26 Resultado da função “TotalVendasl()” com retorno do valor da variável “soma”
420 BASES DE DADOS COM MICROSOFT ACCESS 2007

As funções são procedimentos realizados através de instruções VBA, en-


quadrados entre as palavras-chave “Function” e “End Function”. A cha-
mada a uma Função é realizada da seguinte forma:
variável = NomedaFunção ()

Figura III.2.27 Chamada à função “MostrarResultado()”

As funções podem conter argumentos, tal como os subprocedimentos.


Podem conter várias expressões de código, mas pelo menos uma delas
deve ser igualada ao nome da função de forma a poder devolver o valor
(figura III.2.25). É possível terminar a função utilizando a palavra reservada
“Exit Function”, mesmo que não tenhamos avaliado a totalidade das
expressões. Uma função pode conter mais do que um “Exit Function”.
Apesar de admitirmos que as funções são diferentes dos SubProcedimen-
tos, estas comportam-se como tal, se admitirmos não requerer a devolução
de valores, ficando o resultado na própria função (figura III.2.28). Uma
função pode ser criada utilizando a mesma metodologia dos SubProcedi-
mentos.
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 421

Figura III.2.28 Exemplo de função com comportamento idêntico a um SubProcedimento

Ao premir o botão (“Fechar Formulário através de código”) do formulário


“Autores” (figura III.2.29), o evento (“Ao clicar”) dá início ao conjunto de
acções definidas no procedimento, sendo uma das quais a solicitação da
função “MostrarValor”. O resultado será o seguinte (figura III.2.30):

Figura III.2.29 Botão de comando “Fechar Formulário através de código”

Figura III.2.30 Resultado da aplicação da função


422 BASES DE DADOS COM MICROSOFT ACCESS 2007

No exemplo da figura III.2.28 fica demonstrado que uma função tem o


mesmo comportamento que um SubProcedimento, visto que a função ao
ser chamada não necessita de devolver valores ao SubProcedimento de
onde foi chamada.
Contudo, a característica mais comum das funções é, sem dúvida, a pos-
sibilidade que estas têm de devolver valores ao procedimento de chamada
(figura III.2.31).

Figura III.2.31 Função com retorno de valores ao procedimento de onde foi chamada

No exemplo da figura III.2.31, a função “Validar” devolve a frase “Livro


editado antes de 2006” ou “Livro editado entre 2006 e 2007” de acordo
com o parâmetro de entrada (Valor), para o procedimento de onde foi
chamada. No caso específico do ano ser 2006, obtido através da função
ano (“Year”), o resultado será o seguinte:
III.2 CARACCTERÍSTICAS DA PROOGRAMAÇÃO EM VBA
V 423

Figura III.2.3
32 Resultado da
d função Vallidade

2.4 JANELAS
A O EDITOR DE VISUA
DO AL BASIC – VBE WINDOWS
I

Para criar código no


n Microsofft Access 2007
2 é neceessário abrir o ambiente
alho do Vis
de traba sual Basic, no caso cooncreto a jan
nela do edittor do Visu
ual
Basic (figura
( III.2..35). A abe
ertura desta
a janela implica um do os seguintees
procedimentos:
• Entrar no menu
m “Ferra
amentas de Base de Dados”
D e opção ícone d
do
Visual Bassic (figura III.2.33);
ou

• Clicar na colecção
c de objectos “Formulá-
rios” ou “Reelatórios” e, em seguidda, através
d menu “IIniciar” esccolher a opçção “Modo
do
D
Design” e ícone
í “Exibir Código” (figura
( III.2.
3
34);
Figura III.2.33 Ícone VB
42
24 BASES
A DE DADOS CO
OM MICROSOFT ACCESS
C 2007

Figurra III.2.34 Ícon


ne VB

ou

• Entrarr em modo de estrutura


a de um forrmulário ou relatório e, recor-
rendo às proprieedades de qualquer objecto
o ou controlo,
c esscolher
qual o evento a associar.
a P fim atravvés do construtor de expres-
Por e
sões , escolh o “Construtor de Códiigo”. Nesta última
her a opção
opçãoo podemos sempre esccolher um procedimen
p nto já existeente no
eventoo determina
ado.

esta janela (figura III.2.35) existem


Ne uais estão associ-
m muitas outras, as qu
ad
das a diferen
ntes funçõe es, em conteexto de programação.

Figura III.2.35
I Janela
a do Editor de Visual Basic
c

Ja
anela de Código
C (Co
ode Windo
ow)

Essta janela (ffigura III.2.3


36) é utiliza
ada para esscrever ou alterar código em
Vissual Basicc sob a form ma de proccedimentos:: SubProcedimentos ou o Fun-
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 425

ções. Podem existir várias janelas de código dependendo do número de


módulos existentes.

Figura III.2.36 Janela de Código

Janela do Explorador de Projectos (Project Explorer Window)

Nesta janela (figura III.2.37) são apresentados, hierarquicamente, todos os


projectos existentes e todos os objectos neles contidos.

Figura III.2.37 Explorador de Projectos


426 BASES DE DADOS COM MICROSOFT ACCESS 2007

Janela Folha de Propriedades (Properties Window)

Esta janela (figura III.2.38) mostra-nos todas as propriedades dos objec-


tos/controlos seleccionados e a sua configuração actual.

Figura III.2.38 Propriedades

A Janela Imediato (Immediate Window)

Esta janela (figura III.2.39) permite de imediato testar o código de VBA


nela digitado.

Figura III.2.39 Janela Imediato


III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 427

Janela Local (Locals Window)

Nesta janela (figura III.2.40) são apresentadas todas as variáveis declara-


das no procedimento corrente, bem como os seus valores actuais.

Figura III.2.40 Janela Local

Janela de Localização de Objectos (Object Browser Window)

Nesta janela (figura III.2.41) encontram-se todos os objectos: módulos,


classes, métodos, propriedades dos objectos, constantes ou variáveis de
uma determinada base de dados, do VBA, do Microsoft Access 2007, etc.

Figura III.2.41 Janela de localização de objectos


428 BASES DE DADOS COM MICROSOFT ACCESS 2007

Janela de Controlo (Watch Window)

Esta janela (figura III.2.42) surge automaticamente quando são detectadas


expressões (numa secção de código identificado como “Watch Expres-
sion”) que correspondem a uma determinada condição, implicando a para-
gem do código nesse preciso ponto.

Figura III.2.42 Janela de Controlo

2.5 CONCEITOS E ESTRUTURAS DE CONTROLO EM VBA

Já ficamos a conhecer algumas das características principais do Visual


Basic for Applications e o seu ambiente de desenvolvimento. É agora
necessário conhecer os conceitos e estruturas fundamentais da programa-
ção em Microsoft Access 2007.

2.5.1 Tipos de dados

Em Visual Basic for Applications existem sete tipos fundamentais de


dados:
Tipo de dados Sufixo Memória Ocupada Valores

Integer % 2 bytes de -32.768 a 32.767

Long & 4 bytes de -2.147.483.648 até 2.147.483.647

Negativos: de -3,402823E38 a
Single ! 4 bytes -1,401298E-45
Positivos: de 1,401298E-45 a 3,402823E38
Negativo: de -1,797693E308

Double # a -4,940656E-324
8 bytes
Positivos: de 4,940656E-324 a
1,797693E308
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 429

Tipo de dados Sufixo Memória Ocupada Valores

Currency @ 8 bytes de -922.337.203.685.477.5808


a 922.337.203.685.477.5807
String $ 8 bytes de 0 a 65.635 caracteres

Variant 1 byte por caracter Qualquer valor numérico (até double) ou string

Figura III.2.43 Tipos de dados predefinidos do Visual Basic Applications

De uma forma geral, os tipos de dados do VBA são suficientes para refe-
renciar os tipos de campos existentes nas tabelas do Microsoft Access
2007, mas por vezes é necessária uma certa adaptação, como se pode ver
pela tabela seguinte:
Tipo de Campo na Tabela Tipos de Dados no VBA
Numeração Automática (AutoNumber) Long
Moeda (Currency) Currency
Data/Hora (Date/Time) Date
Memo String
Número: Byte (Number: Byte) Byte
Número: Inteiro (Number: Integer) Integer
Número: Inteiro Longo (Number: Long Integer) Long
Número: Simples (Number: Single) Single
Número: Duplo (Number: Double) Double
Objecto OLE (OLE Object) Byte
Texto (Text) String
Sim/Não (Yes/No) Boolean
Hiperligação (Hyperlink) String

Figura III.2.44 Tipo de dados das tabelas e correspondente tipo de dados no VBA

Os dados são representados sob a forma de variáveis ou constantes.

2.5.2 Variáveis e Constantes

Para além de utilizarmos código VBA para trabalhar com os controlos de


qualquer formulário ou relatório aberto, podemos declarar e utilizar variá-
430 BASES DE DADOS COM MICROSOFT ACCESS 2007

veis no código VBA, para armazenar temporariamente valores (dados),


calcular resultados ou lidar com qualquer objecto da base de dados:

Figura III.2.45 Declaração de variáveis

As variáveis devem ser declaradas e utilizadas respeitando as seguintes


regras: iniciar-se por uma letra, ter a dimensão máxima de 255 caracteres,
ser única no seu âmbito de aplicação e não ser uma palavra reservada do
VBA. Outra forma de guardar dados no VBA é utilizando constantes. Uma
constante representa um conjunto de dados fixo, não existindo qualquer
alteração ao longo do programa. Sempre que se utilizam constantes
devemos colocar antes do nome da constante a palavra-chave CONST:
CONST Nome_do_Autor= ”António Abreu”.

2.5.3 Variáveis declaradas e não declaradas

O VBA permite utilizar variáveis declaradas ou não declaradas. Sempre


que se pretenda utilizar variáveis declaradas é necessário defini-las no iní-
cio do programa. As variáveis não declaradas podem simplesmente ser uti-
lizadas durante as instruções de VBA sem as declarar.
O VBA possui uma opção que obriga a declarar as variáveis no início do
programa, sempre que seja activada a opção “Requerer declaração de
variáveis” (“Require Variables Declaration”) no menu “Ferramentas”
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 431

(“Tools”) e item “opções” (“Options”), como se apresenta no quadro da


figura III.2.46.

Figura III.2.46 Menu de declaração de variáveis

Esta opção só é de facto activada quando se inicia um novo projecto ou


módulo. Na zona de declaração de variáveis irá aparecer “Option
Explicit”, que significa que o utilizador é obrigado a declarar explicitamente
todas as variáveis (figura III.2.47). No caso de a opção não estar activada,
as declarações das variáveis serão feitas implicitamente.

Figura III.2.47 Declaração obrigatória de todas as variáveis


432 BASES DE DADOS COM MICROSOFT ACCESS 2007

2.5.4 Âmbito das variáveis e constantes

A declaração de uma variável (figura III.2.48) determina se essa variável é


conhecida apenas num procedimento, em todos os procedimentos de um
módulo ou em todos os procedimentos da base de dados.

Âmbito Declaração
Local Dim, Static ou ReDim (dentro de um procedimento).
Dim (na secção Declarations de um módulo Padrão ou de
Módulo
um módulo de Classe – Formulário/Relatório)
Público Public (na secção Declarations de um módulo Padrão).

Figura III.2.48 Declaração de uma variável

Ao declarar uma variável dentro de um procedimento, esta apenas é


conhecida dentro deste, ou seja, não é reconhecida por outros procedi-
mentos. É utilizada em geral para realizar cálculos temporariamente. Por
exemplo, podemos declarar com um mesmo nome uma variável dentro de
uma série de procedimentos, pois cada variável é local ao seu procedi-
mento. Cada procedimento poderá alterar a sua variável local sem que por
isso sejam afectadas as outras variáveis denominadas da mesma forma e
existentes nos outros procedimentos, como é o caso da variável “Total” na
figura III.2.49.

Figura III.2.49 Declaração de variáveis a nível local


III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 433

Nos procedimentos deste exemplo (figura III.2.49) declara-se a variável


TOTAL, que será local a cada um dos procedimentos. Cada variável
TOTAL de cada procedimento recebe um valor diferente. A variável TOTAL
declarada no procedimento “sub multiplicar()” terá um valor de cem (100),
ao passo que a variável TOTAL declarada no procedimento “sub soma()“
terá o valor de vinte (20).
As variáveis locais só existem e mantêm valor enquanto se encontram
dentro do seu âmbito o procedimento onde foram declaradas, mas perdem
o valor e são destruídas quando o procedimento finaliza.
Existe outro tipo de variáveis de âmbito local, que são denominadas estáti-
cas (static). Estas diferem das anteriores na medida em que mantêm o
seu valor e não são destruídas até a aplicação terminar, mas continuam a
ser locais e nenhum outro procedimento poderá aceder a elas (figuras III.2.
50 e III.2.51).

Figura III.2.50 Procedimento com utilização de uma variável estática

Figura III.2.51 Resultado da utilização de uma variável estática


434 BASES DE DADOS COM MICROSOFT ACCESS 2007

Neste exemplo (figura III.2.50) a variável estática “contagem” permite acu-


mular o número de vezes que o utilizador venha a clicar no botão de co-
mando “Autores” (figura III.2.51) sem sair da aplicação, mostrando em se-
guida o resultado no controlo com o nome “Rótulo34”.
Caso pretendamos criar uma variável que seja reconhecida pelos vários
procedimentos dentro de um mesmo módulo, devemos defini-la na zona
“Declarações” (Declarations) do objecto módulo com a palavra reservada
“Dim” ou “Private”. Estas variáveis partilham informação através de todos
os procedimentos do mesmo módulo, quer seja módulo padrão ou módulo
de classe de objectos (formulário/relatório). A nível de módulo padrão as
variáveis são preservadas enquanto a aplicação estiver aberta, ao passo
que as variáveis declaradas a nível de módulo de classe de objectos (for-
mulário/relatório) serão preservadas enquanto o formulário/relatório estiver
carregado em memória (figura III.2.52). No exemplo da figura III.2.52
podemos observar o comportamento das variáveis definidas a nível de
módulo de classe de objectos (formulário/relatório). Como estão definidas
na zona de declarações do módulo, serão acedidas por qualquer procedi-
mento que venha a ser criado.

Figura III.2.52 Variáveis declaradas a nível de módulo

Para declarar uma variável ou uma constante que possa ser utilizada por
todos os procedimentos da base de dados, devemos declarar essa variável
como pública, utilizando a palavra reservada “Public” na secção “declara-
ções” de um módulo. As variáveis declaradas com este âmbito são mais
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 435

abrangentes, isto é, o seu âmbito abrange toda a aplicação de tal modo


que estão disponíveis a partir de qualquer lugar da aplicação. Estas variá-
veis deverão ser criadas a nível de módulo padrão e nunca a partir de mó-
dulo de classe de objectos (formulário/relatório) (figura III.2.53).

Figura III.2.53 Variáveis declaradas a nível de âmbito geral

Na figura III.2.53 poderemos observar, como exemplo, os diferentes níveis


de declaração de variáveis no VBA.
No procedimento “função (Function) contar” é possível aceder às variáveis
“A”, “B”, “Var 1” e “X”, mas não pode aceder a “Var 2”, “Y” e “Z”. No proce-
dimento “sub somar” pode aceder às variáveis “A”, “B”, “Var 1” e “y”, mas
não pode aceder às variáveis “Var 2”, “X” e “Z”. No procedimento “função
(Function) multiplicar” pode aceder às variáveis “A”, “B”, “Var 2” e “Z”, mas
não pode aceder às variáveis “Var 1”, “X” e “y”.

2.5.5 Operadores

Os operadores são fundamentais na construção de expressões no Micro-


soft Access 2007 e no VBA. Existem várias categorias de operadores,
descritas nos quadros das figuras III.2.54, III.2.55, III.2.56, III.2.57 e III.2.
58).
436 BASES DE DADOS COM MICROSOFT ACCESS 2007

Aritméticos
* Multiplicação

+ Adição

- Subtracção

/ Divisão (Real)

\ Divisão (Inteira)

^ Exponencial

Figura III.2.54 Operadores – Aritméticos

Comparação Numérica
< Menor que

<= Menor ou igual a

> Maior que

>= Maior ou igual a

= Igual a

<> Diferente de

Figura III.2.55 Operadores – Comparação Numérica

Concatenação e Comparação de Strings


& Concatenação de strings

Like Comparação de strings

Figura III.2.56 Operadores – Concatenação e Comparação de strings


III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 437

Lógicos
And Conjunção

Eqv Equivalência

Imp Implicação

Not Negação

Or Disjunção

Xor Exclusão

Figura III.2.57 Operadores – Lógicos

Miscelânea
! Utilizado para separar as partes de um identificador, indicando que
o nome do objecto que o precede se refere a um objecto definido
pelo utilizador
. Utilizado para separar as partes de um identificador, precedendo o
nome do objecto, método ou propriedade.
Between...And Verifica se o valor de uma expressão está contido no intervalo
apresentado.
In Verifica se o valor de uma expressão é igual a algum dos valores
apresentados.
Is É utilizado em conjunto com a palavra reservada Null, de forma a
verificar se uma expressão é nula (não possui conteúdo; nulo não
é equivalente a 0).

Figura III.2.58 Operadores – Miscelânea

2.5.6 Estruturas de controlo

As estruturas de controlo (estruturas de decisão e ciclos) encontram-se


presentes ao longo de quase todo o código desenvolvido em VBA, prin-
cipalmente no código que exige vários tipos de soluções diferentes.
O VBA oferece-nos uma grande escolha na implementação deste tipo de
estruturas de controlo. As estruturas de controlo (figura III.2.59) costumam
dividir-se em: estruturas de decisão com base numa condição, estruturas
de decisão ou selecção com base numa expressão e estruturas de repeti-
438 BASES DE DADOS COM MICROSOFT ACCESS 2007

ção (ciclos) que, por sua vez, se dividem em ciclos com base num conta-
dor ou com base numa condição.
As secções seguintes fazem uma abordagem pormenorizada destas estru-
turas, recorrendo a vários exemplos práticos, de forma a permitir uma mai-
or familiarização com estas estruturas.

Estruturas de Controlo

De decisão De repetição

IF... THEN ... DO ...


<instruções> <instruções>
[ELSE] LOOP ...
<instruções>
ENDIF FOR ... TO ...
<instruções>
SELECT CASE ... NEXT
CASE ...
<instruções>
case ...
<instruções>

END SELECT

Figura III.2.59 Estruturas de controlo

Condições e Decisões

As estruturas de decisão avaliam uma condição, que poderá ser verda-


deira ou falsa, para em seguida executar um conjunto de instruções de
acordo com a condição (figura III.2.60)
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 439

Figura III.2.60 Estrutura de Decisão – If...Then ...Else

Com o exemplo prático que apresentamos de seguida (figura III.2.61) fica


exposta a forma como se comporta a estrutura de decisão com uma
condição.

Figura III.2.61 Estrutura de decisão a uma condição

Como se pode ver pela figura III.2.61, se as vendas totais (“Texto5”)


fossem inferior a 10.000€ então a cor de fundo da caixa de texto (“Texto5”)
mudava para azul – RGB(0,0,250) e a cor dos caracteres para branco –
440 BASES DE DADOS COM MICROSOFT ACCESS 2007

RGB(250,250,250), devido à utilização da função RGB e por alteração dos


parâmetros RGB(vermelho, verde, azul). Os valores dos parâmetros
devem ser valores inteiros, tendo todos eles como intervalo de aceitação
valores entre zero (0) e duzentos e cinquenta e cinco (255). Caso
contrário, a cor de fundo da caixa de texto mudava para branco –
RGB(250,250,250) e cor dos caracteres azul (RGB(0,0,250)) (figura III.2.
62).

Figura III.2.62 Resultado da aplicação da estrutura de decisão

Imaginemos agora para o formulário “Vendas por Revendedor” que a cor


de fundo da caixa de texto “Texto5” (Vendas Totais) varia segundo os
intervalos seguintes: 1<[Vendas Totais]<=1000 - cor azul, 1000< [Vendas
Totais]<=10000 - cor verde, [Vendas Totais]>10000 - cor vermelha. Nesta
situação existe mais do que uma condição para decidir a cor de fundo da
caixa de texto, dando origem a uma estrutura de decisão encadeada (fi-
gura III.2.63).
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 441

Figura III.2.63 Estrutura de decisão encadeada

Facilmente podemos notar que a caixa de texto “Texto5” irá ter fundos de
várias cores em conformidade com as condições impostas (figura III.2.64):

Valor a determinar para a caixa de texto Cor de fundo da caixa de texto “Texto5”
“Texto5” – Vendas Totais
1< Vendas Totais < = 1000 Azul
1000 < Vendas Totais <=10000 Verde
Vendas Totais > 10000 Vermelho

Figura III.2.64 Tabela de condições para impor a cor de fundo da caixa de texto

Vamos, então, desenvolver o código necessário para implementar esta


situação. Para isso utilizamos um procedimento de evento (“Sub
Form_Load()). Este procedimento permite que, ao carregar o formulário
em memória principal, as instruções realizadas sejam automaticamente
despoletadas de forma a realizar as acções pretendidas (figura III.2.65).
442 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.65 Estrutura de decisão encadeada

Neste exemplo, se o valor das Vendas Totais (“Texto5”) for superior a


10000,00€, então a cor de fundo da caixa de texto será cor-de-rosa. Se o
valor das Vendas Totais (“Texto5”) for superior a 1000, mas inferior ou
igual a 10000, então a cor de fundo da caixa de texto será roxo. Se as
Vendas Totais (“Texto5”) forem superior a 1, mas inferior ou igual a 1000,
então a cor de fundo da caixa de texto será verde como podemos ver pelo
resultado (figura III.2.66). Em qualquer dos casos a cor da letra (Carac-
teres) será sempre a branca (“RGB(250,250,250)”).

Figura III.2.66 Resultado da aplicação da estrutura de decisão encadeada

Na linguagem de programação VBA existe outra estrutura de decisão com


a designação SELECT CASE, que apresenta algumas vantagens relativa-
mente à estrutura de decisão IF ... THEN ... ELSE.
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 443

A instrução SELECT CASE (figura III.2.67) permite que, em vez de uma


série de IF’s encadeados, recorrendo à cláusula ELSEIF, possamos ter
uma listagem de “casos” previstos, bem como os procedimentos específi-
cos que o procedimento deve executar em cada um desses casos. Normal-
mente esta estrutura é utilizada quando existe um grande conjunto de situ-
ações possíveis.

Figura III.2.67 Estrutura de decisão SELECT CASE

Veremos, de seguida, um exemplo no qual utilizaremos esta nova estrutura


de programação, em vez de uma série de IF’s encadeados, aplicando as
condições indicadas na figura III.2.68.
Cor de fundo da caixa de texto Função do VBA Condições para decisão
(“Texto5”) (Valores monetários com
duas casas decimais)
Cor-de-Rosa RGB(250,100,250) [0 – 500,99]
Azul RGB(0, 0,250) ]500,99 – 1000,99]
Cor-de-Laranja RGB(250,110,20) ]1000,99 – 1500,99]
Amarelo RGB(255,255,0) ]1500,99 – 30000,99]
Verde RGB(0, 250,0) ]30000,99 – 60000]
Vermelho RGB(250,0, 0) > 60000

Figura III.2.68 Condições impostas ao exercício


444 BASES DE DADOS COM MICROSOFT ACCESS 2007

Utilizando um procedimento próprio, vamos criar as instruções neces-


sárias, utilizando a estrutura SELECT CASE, para resolver o exercício pro-
posto (figura III.2.69).

Figura III.2.69 Código de programação utilizando a estrutura SELECT CASE

Como se pode analisar pela figura III.2.69, a estrutura de decisão SELECT


CASE vai dar origem a vários fundos de cor diferente, para a caixa de
texto “Texto5” (figura III.2.70), de acordo com o resultado (valor monetário)
da caixa de texto “Texto5”, que representa o valor total de vendas. Em
qualquer dos casos a cor da letra (Caracteres) será sempre a cor branca
(“RGB(250,250,250)”).
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 445

Figura III.2.70 Resultado da aplicação da estrutura de decisão SELECT CASE

Estruturas repetitivas (Ciclos)

Estruturas repetitivas baseadas num contador (For...Next)

Neste tipo de ciclos as acções são executadas desde o ponto em que a


variável de controlo do ciclo tem o valor inicial até que adquira o valor limite
final. Esta estrutura permite repetir a execução de um conjunto de acções
um número determinado de vezes, de acordo com o contador do ciclo (fi-
gura III.2.71).
446 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.71 Ciclo For … Next

Quando a ordem For é executada, é atribuído o valor de início à variável


contador (i) e verifica-se se o valor dessa variável contador não é superior
ao valor final. Caso isso se verifique é executado o conjunto de acções e
passa-se para a instrução NEXT que provoca um incremento ou
decremento da variável contador (i), obrigando depois a executar de novo
a comparação entre o valor da variável contador e o valor final. O ciclo
finaliza quando o valor do variável contador ultrapassar o valor final, pro-
duzindo-se um salto para a instrução seguinte depois da ordem NEXT, não
voltando a executar o conjunto de acções dentro do corpo da estrutura
FOR...NEXT.
Neste exercício vamos criar um procedimento para calcular o número de
revendedores que a editora Centro Atlântico possui. Para tal vamos recor-
rer a uma estrutura repetitiva centrada num contador (For...Next), de forma
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 447

a contar o número de registos que a tabela “Revendedores” possui (figura


III.2.72).

Figura III.2.72 Procedimento com a estrutura repetitiva – For...Next

O Procedimento está associado ao evento “Load” do formulário “Revende-


dores”. Abrindo o formulário, em tempo de execução, é desencadeado
automaticamente o procedimento, dando origem ao resultado (Nº Total de
Revendedores = 40) apresentado na figura III.2.73.

Figura III.2.73 Resultado da aplicação do ciclo For...Next

Estruturas repetitivas baseadas numa condição (LOOP)

Uma estrutura repetitiva LOOP permite que um determinado bloco de ins-


truções seja executado enquanto que uma condição seja verdadeira.
448 BASES DE DADOS COM MICROSOFT ACCESS 2007

Vamos construir alguns programas (exercícios) para ilustrar a utilização


destas estruturas.

Ciclo Do While ... Loop / Do Loop While...


Esta estrutura permite que um conjunto de instruções sejam executadas
enquanto determinada condição for verdadeira. Existem duas formas bási-
cas para implementar um ciclo deste tipo. A primeira consiste em testar a
condição antes de executar o bloco de instruções (figura III.2.74). Caso a
condição se revele falsa à partida, o bloco de instruções nunca será exe-
cutado.

Figura III.2.74 Ciclo Do While … Loop

Neste exemplo vamos recorrer ao ciclo Do While Loop para sabermos


quantos livros editou um determinado autor nacional, como se pode ver
pelo conjunto de instruções desenvolvidas (figura III.2.75):

Figura III.2.75 Instruções de programação, utilizando o ciclo Do While Loop


III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 449

Na figura já referida, a realização das acções dentro do ciclo Do While são


possíveis enquanto a condição (Not TabAutNac.EOF) for verdadeira, isto
é, enquanto não se chegar ao último registo da tabela “Autores/Livro” tra-
duzida aqui pela variável objecto TabAutNac, as instruções serão repeti-
damente executadas. Quando a condição for falsa, termina o ciclo Do
While, não repetindo mais as acções, posicionando-se na linha de instru-
ção imediatamente a seguir à instrução fim de ciclo Loop, dando origem à
visualização da caixa de texto (Texto12) com o resultado (Nº Livros edita-
dos = 4), como se pode verificar pela figura III.2.76.

Figura III.2.76 Resultado da aplicação do ciclo Do While Loop

Na segunda forma de implementação do ciclo o bloco de instruções é exe-


cutado primeiro e a condição só é testada no fim (figura III.2.77). Neste ca-
so o bloco de instruções é sempre executado pelo menos uma vez.

Figura III.2.77 Ciclo Do Loop While …


450 BASES DE DADOS COM MICROSOFT ACCESS 2007

Podemos recorrer ao mesmo exemplo para testar este tipo de estrutura


(figura III.2.78):

Figura III.2.78 Código de programação com utilização do ciclo Do Loop While

O resultado obtido com a utilização deste ciclo, neste caso, é o mesmo da


figura III.2.76.

Ciclo Do Until ... Loop / Do Loop Until...


O ciclo Do Until ... Loop (figura III.2.79) avalia a condição antes de exe-
cutar qualquer acção do corpo de ciclo. Se a condição for verdadeira, exe-
cutará o conjunto de acções e continuará a fazê-lo até a condição ser
falsa.

Figura III.2.79 Ciclo Do Until ... Loop

No caso do ciclo Do Loop Until ... (figura III.2.80) é validada a condição


depois de executar o conjunto de acções. Se a condição for verdadeira,
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 451

voltará a executar o conjunto de acções e continuará a fazê-lo até a condi-


ção ser falsa.

Figura III.2.80 Ciclo Do Loop Until ...

Em síntese, qualquer ciclo possui normas próprias que devemos cumprir


para que o controlo da programação esteja sempre do lado do programa-
dor e não se produzam situações não desejadas, como por exemplo ciclos
infinitos, ou outras situações de erro que obriguem o programador a inter-
romper involuntariamente o ciclo através da combinação de teclas
CONTROL + BREAK.

2.6 FUNÇÕES DO VBA

Em diversos pontos anteriores deste capítulo criou as suas próprias fun-


ções e utilizou algumas das funções internas do VBA. Neste ponto apren-
derá a utilizar outras funções predefinidas pelo VBA. Estas funções estão
divididas por categorias, como por exemplo funções data e hora, estatísti-
cas, matemáticas, financeiras, etc. Vamos abordar algumas funções que
consideramos da maior importância para o utilizador e, caso este pretenda
utilizar outras, que não estejam aqui tratadas, poderá recorrer ao anexo II
“Funções do VBA” deste livro.
452 BASES DE DADOS COM MICROSOFT ACCESS 2007

Função MsgBox

Sempre que o utilizador pretenda receber respostas durante a execução


de qualquer procedimento, poderá recorrer à função MsgBox. Esta função
apresenta uma caixa de mensagem, mostrando os dados dentro de uma
janela de diálogo e opcionalmente associa um ícone apropriado bem como
botões de resposta para o utilizador (figuras III.2.81 e III.2.82).

Figura III.2.81 Função MsgBox Figura III.2.82 Função Msgbox

A função mostra a mensagem na janela de diálogo, ficando à espera que o


utilizador pressione um dos botões (figura III.2.81), devolvendo um valor
inteiro que indica qual o botão pressionado. Na figura III.2.82 não se pre-
tende saber o valor do botão pressionado mas simplesmente informar o
utilizador da mensagem pretendida. A sua sintaxe é a seguinte:
MsgBox prompt[, buttons] [, title] [,helpfile, context]

Na figura III.2.83 apresentam-se os parâmetros da função MsgBox.


Parâmetros Descrição
Parâmetro obrigatório. Possui a mensagem a mostrar ao utilizador. Esta mensa-
Prompt gem possui no máximo 1024 caracteres. Para se utilizar mais que uma linha na
Prompt devemos utilizar a constante do VBA vbCrLf.
Parâmetro opcional. É uma expressão numérica que é a soma do número e tipo
Buttons de botões a mostrar, o estilo do ícone, qual o botão que tem o focus e se o botão
é modal ou não. No caso de se omitir este parâmetro, ele tem o valor de zero.
Parâmetro opcional. Texto que aparece na barra de título da MsgBox. Se este
Title
parâmetro for omisso, irá aparecer o nome da aplicação – Microsoft Access.
Parâmetro opcional. Expressão do tipo string que mostra qual o ficheiro de ajuda
Helpfile (Help) a utilizar. Quando este parâmetro é utilizado, o utilizador terá também que
utilizar o parâmetro seguinte.
Parâmetro opcional. Ficheiro Help que irá aparecer ao utilizador. Terá que ser uti-
Context
lizado com o parâmetro anterior.

Figura III.2.83 Parâmetros da função MsgBox


III.2 CARACCTERÍSTICAS DA PROOGRAMAÇÃO EM VBA
V 453

Os valo ores que o parâmetro “Buttons” pode ter são


s os segu
uintes (figura
III.2.84)):
Valor nummé-
Co
onstante Descrição
D
rico
Número e tipo de botõ
ões a mostrar
vbOKOnly
y 0 Só o bottão OK
vbOKCancel 1 Botões OK
O e Cancel
vbAbortR
RetryIgnore 2 Botões Abort,
A Retry e Ig
gnore
vbYesNoC
Cancel 3 Botões Yes,
Y No e Canc
cel
vbYesNo 4 Botões Yes
Y e No
vbRetryCa
ancel 5 Botões Retry
R e Cancel
Estilo do íco
one

vbCritical 16
Mostra o ícone

vbQuestio
on 32
Mostra o ícone

VbExclam
mation 48
Mostra o ícone

vbInforma
ation 64
Mostra o ícone
Botão que tem o focus
vbDefaulttButton1 0 Primeiro
o botão tem o fo
ocus
vbDefaulttButton2 256 Segundo
o botão tem o fo
ocus
vbDefaulttButton3 512 Terceiro
o botão tem o focus
vbDefaulttButton4 768 Quarto botão
b tem o focu
us
É modal?
?
Modal em relação à aplicação. O utiliza
ador deve res-
vbApplica
ationModal 0 ponder à MsgBox antes de continuar a trabalhar na
aplicaçã
ão.
Modal em relação ao sistema operativo
o. Todas as
vbSystem
mModal 4096 ões ficam suspensas até que o utilizador res-
aplicaçõ
ponda à MsgBox.
Valores adicionais
vbMsgBox
xHelpButton 16384
4 Mostra botão
b Help
Especificca a janela da mensagem
m como janela de
vbMsgBox
xSetForegroun
nd 65536
6
Foregroound
vbMsgBox
xRight 524288
8 Alinha o texto à direita

Figura
a III.2.84 valore
es assumidos pelo parâmettro “Buttons”.
45
54 BASES
A DE DADOS CO
OM MICROSOFT ACCESS
C 2007

A tabela
t da figura III.2.85 mostra qu ual o valor inteiro de re
etorno ao pressio-
p
na
ar um dos botões
b existtentes na ja
anela de diáálogo da ca aixa de mennsagem
Ms
sgBox.

Co
onstante Valo
or numérico Descrição
vb
bOK 1 OK
vb
bCancel 2 Cancel
vb
bAbort 3 Abort
vb
bRetry 4 Retry
vb
bIgnore 5 Ignore
vb
bYes 6 Yes
vb
bNo 7 No

Figura III.2.8
85 Valor de re
etorno, após prressionar botã
ão da caixa de
e diálogo Msg
gBox.

O exemplo seguinte vai ajudar-noss a compreeender melh


hor a funçã
ão Msg
ox, sobretud
Bo do a aplicaçção dos seu
us parâmetrros.
Neeste exemp plo vamos utilizar
u a fu
unção MsgB Box para encerrar
e ou não a
applicação que
e está abertta no mome ento. Para tal
t vamos utilizar
u os parâme-
tro
os seguintess:

• Promp pt, contend


do a mensa
agem: “Prete
ende S A I R deste Fo
ormulá-
rio?”;
• Buttons, com oss valores ou
u constantess seguintes: Os botõess Yes e
No (vb
bYesNo), o ícone Infoormação (vbbInformatio on ou valorr numé-
rico 64
4- ), Titlle contendo
o a mensage
em: “Fechar Formulário
o”.

Poodemos verr a aplicação destes pa arâmetros da


d função MsgBox
M no proce-
dim
mento asso ociado ao evvento click do botão de
d comandoo (Comando
o28) na
figura III.2.86.
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 455

Figura III.2.86 Utilização da Função MsgBox no procedimento” sub Comando28_Click()”.

Em tempo de execução, ao clicar no botão “Fechar Formulário através de


Código”, aparecerá de imediato a caixa de mensagem da figura III.2.81,
obrigando o utilizador a decidir por um dos botões (Yes ou No). Como se
pode verificar irá existir um valor devolvido, consoante o utilizador clicar em
Yes ou No, sendo o valor guardado numa variável. A sintaxe para guardar
o valor numa variável será a seguinte:
variável = MsgBox(prompt[,buttons][,title][,helpfile,context]).

Em seguida devemos comparar o valor da variável com o valor esperado e


escrever a acção pretendida (figura III.2.87). Neste caso, se o valor da
variável for “VbYes” aparece uma segunda caixa de mensagem (figura
III.2.82) a agradecer a utilização da base de dados e em seguida ao pres-
sionar o botão OK fecha a aplicação. No caso de o valor da variável ser
“VbNo”, o utilizador continuará com a aplicação aberta, como se pode ver
pelo procedimento (“Function MostrarValor”) da figura III.2.87.

Figura III.2.87 Valor de retorno da MsgBox e posterior escolha


456 BASES DE DADOS COM MICROSOFT ACCESS 2007

Função InputBox

A função InputBox permite ao utilizador interagir com um determinado


procedimento, isto é, o utilizador fica habilitado a enviar valores para den-
tro do procedimento para um determinado cálculo. Esta interacção é feita
através de uma janela de introdução de dados gerada pela função Input-
Box.

Figura III.2.88 Função InputBox

A sintaxe da função InputBox é a seguinte:

InputBox (prompt [,title][,default][,xPos][,yPos][,helpFile, context]

Na figura III.2.89 apresentam-se os parâmetros da função InputBox.

Parâmetros Descrição
Parâmetro obrigatório. Possui a mensagem a mostrar ao utilizador. Esta mensa-
prompt gem possui no máximo 1024 caracteres. Para se utilizar mais que uma linha na
Prompt devemos utilizar a constante do VBA vbCrLf.
Parâmetro opcional. Texto que aparece na barra de título da InputBox. Se este
Title
parâmetro for omitido, irá aparecer o nome da aplicação – Microsoft Access.
Parâmetro opcional. Texto que aparece predefinido na caixa de texto, normal-
default mente um valor esperado, de forma a não obrigar sempre o utilizador a introduzir
o mesmo valor. Quando omitido o valor, a caixa de texto aparece vazia.
7
Parâmetro opcional. Expressão numérica que define, em twips , a distância
XPos horizontal entre o canto superior esquerdo da janela de diálogo e o canto superior
do ecrã. Se omitido a janela aparece centrada.

7
“Twips” é uma unidade de medida de ecrã independente que assegura que todos os
elementos a serem visualizados pelo dispositivo de saída (ecrã) tenham a mesma propor-
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 457

Parâmetros Descrição
Parâmetro opcional. Expressão numérica que define, em twips, a distância verti-
cal entre o canto superior esquerdo da janela de diálogo e o canto superior do
YPos
ecrã. Omitido, a janela aparece posicionada a um terço do ecrã, aproximada-
mente.
Parâmetro opcional. Expressão do tipo string que mostra qual o ficheiro de ajuda
helpFile (Help) a utilizar. Quando este parâmetro é utilizado, o utilizador terá também que
utilizar o parâmetro seguinte.
Parâmetro opcional. Ficheiro Help que irá aparecer ao utilizador. Terá que ser
context
utilizado com o parâmetro anterior.

Figura III.2.89 Descrição dos parâmetros da função InputBox.

Na tentativa de contextualizar a função “InputBox” no projecto “Editora –


Centro Atlântico”, vamos apresentar um exemplo.
No formulário Vendas (figura III.2.90), sempre que se ache oportuno, o
utilizador poderá alterar o nome do Revendedor em tempo de execução.

Figura III.2.90 Formulário Tratamento Geral

Para tal basta clicar em cima do botão “Alteração Nome Revendedor


Actual”, aparecendo de imediato a caixa de diálogo – InputBox – (figura
III.2.91) para introduzir o novo nome do revendedor.

ção para todos os sistemas. No Microsoft Access 2007 os objectos são medidos em
“Twips”. Por exemplo, se pretendermos o comprimento de um formulário, o seu resultado
será de 14205 “Twips”. Um “Twip” é aproximadamente 1/1440 polegadas.
458 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.91 Caixa de diálogo InputBox

Ficamos a saber da alteração pela caixa de mensagem, que em seguida


surgirá, com a mensagem: “Nome do revendedor alterado com sucesso”
(figura III.2.92).

Figura III.2.92 Caixa de diálogo com resultado da função InputBox

O código de programação que permite resolver o exemplo exposto nas


figuras anteriores encontra-se no procedimento: “Private Sub Comando15
_Click()” (figura III.2.93).
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 459

Figura III.2.93 Código de programação do procedimento sub comando15_click()

Em seguida, recorrendo ao SQL, mais precisamente às consultas de


acção e à instrução Update (consultas de actualização), irá ser alterado o
valor do registo para o campo “PreçoUnitário”, referente ao livro do ISBN
indicado (figura III.2.94).

Figura III.2.94 Resultado da aplicação depois da instrução UPDATE (SQL)

De facto podemos comprovar pela Tabela “Venda/Livro” que o valor inicial


foi alterado, logo após a aplicação da consulta de acção através da instru-
ção “Update” (figuras III.2.95 e III.2.96).
460 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.95 Tabela Venda/Livro antes da aplicação da instrução UPDATE (SQL)

Figura III.2.96 Tabela Venda/Livro depois da aplicação da instrução UPDATE (SQL), após
confirmação

Devemos ter algum cuidado na utilização deste tipo de consultas avança-


das, visto podermos mesmo eliminar, acrescentar ou actualizar registos
com valores não desejados. A pensar na eventual possibilidade de engano
por parte do utilizador quer na actualização, eliminação e inserção de valo-
res não desejados, o SQL nas consultas de acção, antes de realizar o
“UPDATE” (actualização), interroga o utilizador, no sentido de confirmar a
actualização. Esta interrogação é realizada através de uma caixa de diá-
logo (MsgBox), podendo o utilizador ter a última palavra no que concerne
à actualização ou não, através dos botões “sim” ou “não”.
O código VBA gerado para realizar este programa exemplo é o seguinte:

Figura III.2.97 código VBA desenvolvido para o exemplo solicitado


III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 461

NOTA: O carácter (_) em código de programação permite quebrar uma linha de


código, continuando numa outra imediatamente abaixo sem originar erro de pro-
gramação.

Função IIF

A função IIF() permite ao utilizador realizar diferentes acções consoante a


avaliação da condição (expressão), devolvendo uma das partes. A sua sin-
taxe é a seguinte:

IIF(expressão, ParteVerdadeira, ParteFalsa)

O parâmetro expressão representa a expressão que queremos avaliar. Os


parâmetros ParteVerdadeira e ParteFalsa, representam os valores de
retorno, caso a expressão seja verdadeira ou falsa, respectivamente (figura
III.2.100).

Funções categoria Data e Hora

As funções pertencentes a esta categoria assumem uma importância vital,


nomeadamente as funções “Date” e “Time”, quando se pretende saber a
hora e a data exacta em que um determinado registo foi introduzido ou
então introduzir num formulário/relatório a data e hora. Vamos então enu-
merar algumas dessas funções:

=Date() Esta função devolve um tipo de dados “Variant” contendo a


data de sistema.

=Time() Esta função devolve um tipo de dados “Variant” contendo a


hora de sistema.

=Now() Esta função combina as duas funções anteriores, devol-


vendo um valor “Variant” que especifica a data e a hora de
acordo com o relógio interno do computador.
462 BASES DE DADOS COM MICROSOFT ACCESS 2007

= DateDiff() Esta função devolve a diferença entre duas datas. A sua


sintaxe é a seguinte: DateDiff(interval,date1,date2)

O parâmetro Interval representa o tipo de intervalo que pretende adicionar.


Os valores são os apresentados na tabela da figura III.2.98.

Valor Período de tempo


yyyy Ano
q Quadrimestre
m Mês
y Dia do Ano
d Dia
w Dia da Semana (Domingo é 1, Segunda 2, Terça 3, etc.)
ww Semana
h Hora
n Minuto
s Segundo

Figura III.2.98 Valores assumidos pelo parâmetro Interval

Date1 e Date2 são os parâmetros que representam os valores das datas


para cálculo da diferença pretendida. Devemos ter em atenção que a data1
deverá ser superior à data2, caso contrário o resultado será negativo.
=DatePart() Esta função devolve parte de uma data, especificada pelo
parâmetro “Interval”. A sua sintaxe é a seguinte:
DatePart(interval,date).

Para o parâmetro interval os valores assumidos são iguais aos da função


anterior e o parâmetro date representa a data.
=Day(date) Esta função devolve um tipo de dados “Variant”, especifi-
cando um número entre 1 e 31, representando um dia do
mês. O parâmetro date representa uma data. Existem
outras duas funções Month(date) e Year(date) que funcio-
nam da mesma forma, devolvendo o mês e o ano, respecti-
vamente.
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 463

De uma forma sucinta, o exemplo seguinte apresenta a forma como traba-


lhar com as funções anteriores (figura III.2.99):

Figura III.2.99 Formulário Principal com aplicação das funções data e hora

O código VBA desenvolvido de forma a mostrar a data e hora actual, dia


da semana, mês e dia correspondente é o apresentado nas figuras III.2.
100 e III.2.101.

Figura III.2.100:Código VBA para chamada ao SubProcedimento “Relógio”


464 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.101 Código desenvolvido em VBA com referência às funções Data e Hora

A visualização da figura III.2.99 revela que a utilização da função


“DatePart” não é suficiente para o tipo de resultado pretendido. Como
referido anteriormente, esta função devolve um valor numérico representa-
tivo do dia e do mês, respectivamente, o que não estaria de acordo com o
resultado. Para tal houve necessidade de recorrer à estrutura de decisão
“Select Case”, de forma a validar o resultado de saída da função, isto é, se
o resultado de saída da função “DatePart” é igual a um (1), então o mês
correspondente será “Janeiro” e assim sucessivamente. O mesmo pro-
cesso será realizado para os dias da semana. Neste último caso recorreu-
se a uma estrutura de decisão “Se ...Então ..Senão”.

=Timer() Esta função devolve o número de segundos desde que o re-


lógio do computador marcou meia-noite.

Por exemplo, se necessitarmos de saber o tempo de duração de uma de-


terminada operação, devemos colocar a função Timer() antes e depois da
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 465

operação. No final calculamos a diferença entre o resultado dos segundos


antes da operação e os segundos depois da operação. O resultado da dife-
rença constituirá o tempo de duração da operação pretendida. Vamos
supor que a operação era a seguinte: “Quanto tempo demorou a decidir fe-
char ou não a aplicação, ou seja, o formulário Principal?” (figura III.2. 102).
É necessário ter em atenção que a diferença de segundos de uma determi-
nada operação só será válida tratando-se do mesmo dia.

Figura III.2.102 Caixa de mensagem com a duração em segundos da tarefa executada

Esta questão poderá ser facilmente satisfeita recorrendo à função


TIMER(), como se pode analisar pelo código seguinte:

Figura III.2.103 Código VBA para cálculo do tempo da operação fechar formulário

Funções categoria Texto

As funções desta categoria revestem-se de uma importância capital,


quando se pretende manipular cadeias de texto (strings) em variáveis ou
466 BASES DE DADOS COM MICROSOFT ACCESS 2007

campos das tabelas, cujo tipo de dados seja alfanumérico. Vamos então
enumerar algumas dessas funções, ou seja, as mais usuais:

=Len(string) Esta função devolve um valor Long, contendo o nú-


mero de caracteres numa string.

=Left(string,length) Esta função devolve uma string, contendo o número


de caracteres (length), a contar da esquerda, da
string fornecida pelo utilizador.

=Right(string,length) Esta função devolve uma string, contendo o núme-


ro de caracteres (length), a contar da direita, da
string fornecida pelo utilizador.

Os argumentos destas duas últimas funções são iguais e string representa


o texto a partir do qual os caracteres mais à esquerda ou direita serão
mostrados e Length representa o número de caracteres a serem mostra-
dos, quer à esquerda, quer à direita.

=Mid(string,start,length) Esta função devolve uma string, contendo o


número de caracteres a partir da especifica-
ção feita pelo parâmetro “start”, até ao nú-
mero de caracteres desejados pelo parâme-
tro “length”.

Esta função, apesar de se comportar nos mesmos moldes das funções


anteriores, é mais abrangente, visto ter a possibilidade de devolver carac-
teres do meio de uma string.
Veremos, de seguida, um exemplo de utilização deste tipo de funções.
Neste exemplo, o utilizador ao fazer duplo clique em cima de qualquer
caixa de texto referente à descrição do nome do revendedor do formulário
“Revendedores”, de imediato surgirá no cabeçalho três novas legendas
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 467

com três caracteres cada uma representando partes do nome do revende-


dor e uma quarta legenda com a inicial desse revendedor, como se pode
verificar na figura III.2.104.

Figura III.1.204 Resultado da aplicação da função de texto “Left” e “Mid”.

A função de texto “Left” serviu neste caso para devolver um (1) dos
caracteres mais à esquerda da caixa de texto referente ao “Nome”, colo-
cando-o num rótulo com o nome “Rótulo19”. Os restantes controlos
(Rótulos) serviram de apoio à função de texto “Mid” de forma a isolar os
três caracteres do respectivo “Nome” em rótulos diferentes para que apa-
recessem com cores de letra diferentes como se apresenta na figura
III.2.104. O código de programação utilizado é apresentado na figura III.2.
105.

Figura III.2.105 Código de programação com referencia ás funções “Mid”e” Left”.


468 BASES DE DADOS COM MICROSOFT ACCESS 2007

Função Format

Esta função é utilizada quando o utilizador pretende formatar uma expres-


são de acordo com as suas instruções, ou seja, por exemplo, quando pre-
tende que uma determinada string passe para letras maiúsculas. A sua
sintaxe é a seguinte: Format(expression[,format])
O parâmetro “Expression” representa qualquer expressão, seja ela
número, texto, data ou hora e “Format” refere-se ao formato com o qual irá
aparecer a expressão, depois de formatada. Note-se que os parênteses
rectos indicam que o parâmetro não é obrigatório. Sendo assim, os forma-
tos ou são predefinidos ou são criados pelo utilizador. Por exemplo, se o
utilizador recorresse a esta linha de instruções: Format(date(),”dd mmmm
yyyy”), a data visualizada no formulário correspondente apareceria com o
seguinte formato: 09 Agosto 2007, partindo do princípio que esta é a data
corrente (de sistema) (figura III.2.106). O código VBA gerado para este
exemplo está exposto na figura III.2.107.

Figura III.2.106 Resultado da aplicação da função “Format” à função “Date”

Figura III.2.107 Código VBA com recurso à função “Format”


III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 469

Para o formato monetário a função apresenta a palavra reservada


“Currency”, como se apresenta no código do procedimento seguinte (figu-
ra III.2.108):

Figura III.2.108 Código VBA com recurso à função “Format” para formato monetário

Outros formatos poderão ser visualizados na ajuda do Microsoft Access


2007.

Funções categoria Financeira

Apesar das características técnicas deste tipo de funções, elas são sus-
ceptíveis de uma utilização mais generalizada por parte dos programado-
res, sobretudo no que diz respeito ao desenvolvimento de aplicações de
gestão. Contudo, devido à importância destas funções, serão aqui apre-
sentadas algumas considerações sobre estas funções.
=Pmt() Esta função refere-se ao cálculo dos pagamentos de um
empréstimo, a partir de pagamentos constantes e uma taxa
de juro constante. A sua sintaxe é a seguinte:
=Pmt(rate,nper,pv,[,fv[,type]])

=Pv() Devolve o valor actual de um investimento, isto é, o mon-


tante total que vale agora uma série de pagamentos futuros.
A sua sintaxe é a seguinte:
=Pv(rate,nper,pmt[,fv[,type]])
470 BASES DE DADOS COM MICROSOFT ACCESS 2007

=Fv() Devolve o valor futuro de um investimento a partir de paga-


mentos periódicos constantes e de uma taxa de juros cons-
tante. A sua sintaxe é a seguinte:
=Fv(rate, nper,pmt[,pv[,type]])

=Nper() Devolve o número de períodos de um investimento, com


base em pagamentos periódicos constantes e uma taxa de
juro constante. A sua sintaxe é a seguinte:
=Nper(rate,pmt,pv[,fv[,type]])

=rate() Devolve a taxa de juros por períodos de um empréstimo ou


um investimento. A sua sintaxe é a seguinte:
=Rate(nper,pmt,pv[,fv[,type]])

Os vários parâmetros das funções são, por si, também funções financeiras,
tendo a explicação sido dada na respectiva função. Contudo falta ainda
explicar o parâmetro “type”. Este parâmetro representa um valor lógico,
possuindo dois valores: pagamento no início do período é igual a um (1),
no final do período é igual a zero (0) ou omisso. Todas as funções aqui
expostas possuem este parâmetro. É um parâmetro opcional.
Os parênteses rectos existentes nas várias funções indicam que os parâ-
metros são opcionais.
Uma vez esclarecidos os parâmetros e o resultado final das funções finan-
ceiras aqui tratadas, vamos de uma forma mais clara apresentar um exem-
plo concreto da forma como elas trabalham:
Vamos considerar que as comissões poderão eventualmente ser pagas
por prestações. A Editora permite recorrer a suaves prestações mensais.
Para tal instituiu duas formas para este tipo de pagamento: pagamentos
em três suaves pagamentos e pagamentos em seis suaves prestações. A
taxa de juro aplicada a qualquer destes casos será sempre uma taxa anual
fixa de 8%. Por último interessa saber ao Autor quanto irá receber por
mensalidade, em qualquer dos dois casos, perante a comissão total do va-
lor (figuras III.2.109 e III.2.110).
III.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA 471

Figura III.2.109 Resultado da função financeira (“Pmt”) para três prestações

Figura III.2.110 Resultado da função financeira (“Pmt”) para seis prestações

O código de programação em VBA gerado para executar esta aplicação


encontra-se exposto na figura III.2.111.
472 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.2.111 código VBA com recurso há função financeira “Pmt”

Existem outro tipo de funções referentes a mais categorias que não são
aqui tratadas uma vez que não fazem parte do objecto de estudo deste
livro, ou então porque foram consideradas de menor importância para este
projecto. Contudo o utilizador poderá, sempre que necessitar de outras
funções, recorrer à ajuda do Microsoft Access 2007 como objecto de estu-
do mais aprofundado dessas funções.
III.3
Modelo de Objectos no Microsoft
Access 2007/VBA

O Microsoft Access permite dois tipos de modelos de objectos8 (arquitectu-


ras) para aceder a dados: o Data Access Objects (DAO) e o ActiveX
Data Objects (ADO). Tendo as duas tecnologias sido criadas pela Micro-
soft (figura III.3.1), esta aconselha os utilizadores a usarem a arquitectura
ADO, visto ser um modelo universal de acesso a dados, permitindo, assim,
a conectividade entre qualquer tipo de dados.

Figura III.3.1 Modelos de acesso a dados

8
Um modelo de objectos é uma representação da realidade ou um mapa conceptual das
várias funcionalidades do objecto, respeitando a hierarquia a que pertence.
474 BASES DE DADOS COM MICROSOFT ACCESS 2007

3.1 ARQUITECTURA DAO

Esta arquitectura está associada ao motor de base de dados Microsoft Jet


(Joint Engine Technology). Este modelo (DAO) possui um conjunto de
objectos (figura III.3.2) que permite realizar um conjunto de tarefas típicas
com bases de dados, tais como: inserir, consultar, manipular, criar e elimi-
nar os diversos dados existentes a nível da base de dados.

Figura III.3.2 Modelo de objectos – DAO

A tecnologia JET fornece o motor de acesso físico à base de dados, sendo


responsável por converter em operações físicas as operações indicadas a
partir dos objectos DAO. Os objectos deste modelo estão organizados por
níveis, à semelhança de uma hierarquia. O objecto hierarquicamente mais
elevado neste modelo é o motor da base de dados – Jet (DBEngine).
Sendo este um modelo hierárquico, significa que para fazer referência aos
objectos que se encontram abaixo hierarquicamente temos que antes fazer
referência aos que se encontram acima deles.
Um grupo de objectos similares pode ser combinado na hierarquia como
sendo uma colecção. Na generalidade, os nomes no plural (“DataBases”,
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 475

“Recordsets”, etc.) são colecções e os nomes no singular (“Database”,


“Recordset”, etc.) são os objectos da colecção.
Para consultar um objecto numa colecção, a sintaxe é a seguinte:

CollectionName.item (“chave”)
ou
CollectionName.item (índice)

O “item” representa o método por omissão para todas as colecções, con-


sequentemente podemos suprimi-lo, ficando a sua sintaxe da seguinte
forma:
CollectionName(“chave”)
ou
CollectionName(índice)

A chave de um objecto é uma string que identifica univocamente esse


objecto na colecção. Por exemplo, o campo (“Field”) “ISBN” na colecção
“Fields” de uma tabela poderia ser consultado como Fields (“ISBN”). O
índice dá a posição ordinal do objecto na colecção. Neste caso específico
se o campo “ISBN” fosse o primeiro campo da colecção “Fields”, poderia
ser consultado como Fields (0).
Este modelo de objectos (DAO) fornece uma variedade de colecções e
objectos. Cada um destes objectos possui um extenso número de métodos
e propriedades. É provável que numa aplicação Access/DAO só se utili-
zem algumas colecções e objectos deste modelo, sendo os mais usuais os
seguintes objectos:
DBEngine: é um objecto que representa o “JET Engine” da Microsoft e
contém todos os outros objectos da base de dados;
Workspace: é um objecto que define uma secção de trabalho quando um
utilizador inicia a secção no Microsoft Access;
Database: é o objecto que representa a base de dados aberta;
476 BASES DE DADOS COM MICROSOFT ACCESS 2007

TableDef: é o objecto que representa a estrutura de uma tabela, podendo


conter vários campos (Fields) e vários índices (Indexes);
Field: representa um campo dentro de uma tabela;
Index: representa um índice dento de uma tabela;
QueryDef: representa a estrutura de uma consulta (Query) relativa a uma
tabela;
Recordset: representa um conjunto de registos de uma tabela, isto é,
representa uma tabela ou parte dela. O Recordset pode ser do tipo tabela
(Table), Dynaset ou Snapshot. Dynaset é uma estrutura mais versátil do
que uma tabela, podendo ser gerado por uma consulta ou uma declaração
SQL. Snapshot é uma estrutura mais restritiva de uma tabela e os seus
dados não podem ser alterados pelo utilizador.

3.1.1 Microsoft Data Access Objects

Antes de usar qualquer objecto de arquitectura DAO é necessário certifi-


car-se que esta se encontra disponível para trabalhar com a base de
dados aberta, caso contrário, é necessário fazer referência à biblioteca de
objectos DAO 3.6. No menu principal do editor Visual Basic Application
(VBA) clique em “Tools” e, de seguida, na opção “References”. Na caixa
de diálogo da opção “References” devemos activar a caixa de opções de
“Microsoft DAO 3.6 object library” com um visto (figura III.3.3), de forma
a disponibilizar os objectos desta biblioteca no VBA.

Figura III.3.3 Menu de activação do DAO


III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 477

Uma vez activa a biblioteca de objectos Microsoft DAO 3.6, podemos


utilizar todo e qualquer objecto desta biblioteca, suas propriedades e
métodos.
Estando a trabalhar directamente no Microsoft Access, ao iniciar o JET
automaticamente abre uma secção de trabalho (Workspaces), sendo esta
considerada como a primeira. No VBA começa-se a contar os objectos a
partir de zero (0, 1, 2, 3, …). Assim, na arquitectura DAO escreve-se desta
forma: workspaces (0). Para abrir uma base de dados, caso esta seja a
base de dados corrente, não necessitamos de indicar o nome nem o cami-
nho, bastando escrever em DAO da seguinte forma: DBEngine.
Workspaces (0). Databases (0)9. Os objectos na arquitectura DAO são
separados por ponto (.). Neste caso específico, como nos referimos à área
de trabalho corrente e à base de dados aberta, podemos simplificar a ex-
pressão anterior:
DBEngine (0) (0).

Método “OpenDatabase”

O método “OpenDatabase” pertence ao objecto “Workspace” da colecção


“Workspaces”, sendo “Workspaces” uma colecção do objecto DBEngine.
O objecto “Workspace” existe em cada secção aberta do motor (Jet) da
base de dados (Access). Quando a aplicação DAO se inicia, dá origem à
criação do primeiro objecto “Workspace” da colecção “Workspaces”
(“Workspaces (0)”). O “Workspaces (0)” é por natureza o workspace por
omissão.
A sintaxe do método OpenDatabase é a seguinte:
OpenDatabase (nome as string, [opções]) as database

O método OpenDatabase requer o argumento nome como string para


referenciar a base de dados. Por exemplo: set dbs= DBEngine.
Workspaces (0). OpenDatabase (GetAppPath () & “Editora”). O argu-
mento “opções” é facultativo e neste exemplo não é utilizado, visto o
método simplesmente se limitar a chamar o ficheiro de base de dados que

9
Como a estrutura DAO é hierárquica, temos que nos referir a todos os objectos desde o
topo.
478 BASES DE DADOS COM MICROSOFT ACCESS 2007

se encontra no mesmo caminho onde se encontra o programa, atribuindo


por último a referência do objecto à variável definida como variável da base
de dados (dbs).
De seguida vamos criar um procedimento para abrir uma base de dados
referente à área de trabalho corrente e base de dados aberta, com o nome
de “abrirBD” e o código seguinte:
Public Sub abrirBD()
Dim db as DAO.Database
Set db=DBEngine(0)(0)
Set db=Nothing
End Sub

A instrução Dim permite declarar uma variável. Neste caso, é declarada a


variável db do objecto Database. O Set é utilizado para dar à variável o
valor de um objecto. Na última linha de código, dentro do procedimento,
passamos o valor de Nothing para dentro da variável db, a fim de libertar
memória, ou então, podemos utilizar o método Close: db.close.

Método “CreateDatabase”

Para criar uma base de dados, o objecto DBEngine está equipado com o
método CreateDatabase (). A sua sintaxe é a seguinte:
DBEngine.CreateDatabase (nome, linguagemBD, opções)

Como já anteriormente demonstrado, sempre que se trate de uma base de


dados aberta (em utilização), não necessitamos de mencionar o objecto
DBEngine, bastando só chamar o método “CreateDatabase”, como por
exemplo:
Private sub CmdCreate_click()
CreateDatabase(“Editora.mdb”,….)
End Sub

Podemos também colocar a base de dados numa pasta e drive à nossa


escolha, bastando para isso indicar o caminho (“Path”) onde se encontra a
base de dados, por exemplo:
Private sub CmdCreate_click()
CreateDatabase(“c:\Microsoft Access\Editora.mdb”,….)
End Sub
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 479

A segunda opção (argumento) deste método prende-se com o tipo de lin-


guagem a utilizar pela base de dados (figura III.3.4), como por exemplo:
Private sub CmdCreate_click ()

CreateDatabase(“c:\Microsoft Access\Editora.mdb”,dbLangGeneral)

End Sub

Constantes Grupo de linguagens

Inglês, Alemão, Francês, Português, Italiano, e


dbLangGeneral
Espanhol Moderno

dbLangArabic Árabe

dbLangCyrillic Russo

dbLangCzech Checo

dbLangDutch Alemão

dbLangGreek Grego

dbLangHebrew Hebraico

dbLangHungarian Húngaro

dbLangIcelandic Islândia

Linguagens Nórdicas (Motor Base de Dados da


dbLangNordic
Microsoft Jet versão 1.0)

dbLangNorwdan Norueguês

dbLangPolish Polaco

dbLangSpanish Espanhol Tradicional

dbLangSwedfin Sueco e Finlandês

Figura III.3.4 Países e respectivas linguagens a utilizarem na BD

Para o terceiro argumento deste método poderão ser consideradas algu-


mas opções na criação da base de dados. Quando necessitamos de
encriptar a base de dados, podemos recorrer à constante “dbEncrypt”
para esse efeito, ou, então, especificar a versão da Microsoft Jet na base
de dados relacional. Neste caso, o argumento pode tomar um dos seguin-
480 BASES DE DADOS COM MICROSOFT ACCESS 2007

tes valores: dbVersion10, dbVersion11, dbVersion20 ou dbVersion30,


como por exemplo:
Private sub CmdCreate_click()
CreateDatabase(“c:\Microsoft Access\Editora.mdb”,dbLangGeneral,dbVersion10)

End Sub

Objecto QueryDef

Este objecto permite visualizar/criar consultas, recorrendo a instruções


SQL ou executando a acção incluída na instrução. Para criar uma consul-
ta, recorremos ao método “CreateQueryDef”, cuja sintaxe é a seguinte:
CreateQueryDef ([Nome],[textoSQL])

O item Nome refere-se à designação a atribuir à consulta. O item


TextoSQL é um conjunto de instruções em SQL que visa criar a consulta.
Vamos neste exercício criar uma consulta que permita visualizar todos os
autores dos livros cujo tema contenha a palavra “Access”. A consulta é
realizada na base de dados corrente. Criamos então o seguinte procedi-
mento:
Public sub criarconsulta_click ()

Dim db as database
Dim qd as querydef
Dim sql As String

Set dbs=DBEngine(0)(0)
sql = "SELECT CódAutor, Nome, Morada FROM Autores, Autores/Livro,
Livros WHERE Titulo LIKE ‘*Access*’"
Set qd = db.CreateQueryDef("editora", sql)
qd.Close
DoCmd.OpenQuery "editora", acViewNormal, acReadOnly
End sub

ou
Sub ver ()
Set db = DBEngine(0)(0)
sql = "SELECT CódAutor, Nome, Morada FROM Autores WHERE Nome like '"
& Forms! Autores! Texto1 & "*" & "'"
Set qd = db.CreateQueryDef("editora", sql)
qd.Close
DoCmd.OpenQuery "editora", acViewNormal, acReadOnly
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 481

db.QueryDefs.Delete ("editora")
End Sub

Caso a consulta já exista, podemos criar um objecto “QueryDefs” baseado


nessa consulta, como se pode analisar no seguinte procedimento:
Public sub criarconsulta_click()
Dim dbs as database
Dim qd as querydef
Set dbs=DBEngine(0)(0)
Set qd=QueryDefs(“Editora”)
Qd.close
Db.close
End Sub

Podemos ter necessidade de eliminar a consulta criada ou já existente na


base de dados. Para tal utilizamos a seguinte instrução: dbs.QueryDefs.
delete(“Editora”).

Objecto TableDef

Este objecto representa uma tabela numa base de dados, podendo ser lo-
cal ou não, mas nunca representa os dados nela contidos.

Objecto Recordset

Este objecto é utilizado para manipular dados de uma base de dados ao


nível de registos. Na arquitectura DAO a manipulação de dados deve-se
praticamente à utilização de objectos/métodos do Recordset. Todos os
objectos do Recordset são construídos utilizando registos (linhas) e cam-
pos (colunas). Existem cinco tipos de objectos para o Recordset (figura
III.3.5):
Table – Type Recordset: Representa, em termos de código, uma tabela
de base de dados, na qual se pode adicionar, alterar ou eliminar registos.
A manipulação dos dados é feita directamente nos dados da tabela física;
Dynaset – Type Recordset: Representa o resultado de uma consulta
(Query). Com um Dynaset podemos extrair e actualizar dados de mais de
uma tabela.
482 BASES DE DADOS COM MICROSOFT ACCESS 2007

Snapshot – Type Recordset: Representa uma cópia estática de um con-


junto de registos que se podem utilizar para procurar dados ou gerar rela-
tórios.
Forward – Only – Type Recordset: É idêntico ao Snapshot, mas só pode
ver os registos para a frente e nunca para trás. Não permite actualizações.
Dynamic – Type Recordset: Representa uma consulta (Query) que
resulta de uma ou mais tabelas da base de dados, na qual se pode adicio-
nar, alterar ou eliminar registos.

Este objecto apresenta um conjunto vasto de métodos e propriedades que


permite, como foi dito, manipular os dados de uma base de dados, dos
quais destacamos os seguintes:

O método “OpenRecordset”

O método “OpenRecordset” do objecto “Database” é utilizado para esta-


belecer uma referência a um conjunto de registos referentes a uma tabela
ou consulta. Para usar e declarar uma variável do tipo “RecordSet”,
ficando esta com o resultado obtido pelo método “OpenRecordset”. A sua
sintaxe é a seguinte:
Set RecordsetVariable = DatabaseVariable.OpenRecordset (source,
type, options, lockedits)

O argumento Source é uma string que representa o nome de uma tabela


ou consulta. Podemos também utilizar instruções em SQL para definir o
Recordset, como a seguir se demonstra pelo seguinte procedimento:
Set RSV = DB.OpenRecordset(“SELECT count * as Total_Livros FROM
Editoras WHERE Nome=’” & FORMS!Autores!Nome & “’”)

O resultado desta instrução SQL é atribuído à variável objecto – RSV e


representa o parâmetro Source. O parâmetro Tipo é aqui omisso, sendo
assumido por omissão que o objecto é do tipo Dynaset.
O parâmetro Type (figura III.3.5) é opcional. É uma constante que indica o
tipo de Recordset a abrir. Essas constantes são referenciadas da seguinte
forma:
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 483

dbOpenTable: tipo Tabela;


dbOpenDynamic: tipo Dinâmico;
dbOpenDynaset: tipo Dynaset;
dbOpenSnapshot: tipo Snapshot;
dbOpenForwardOnly: tipo Forward-Only.

Tipos de Recordsets

Tipos de Source Vantagens Inconvenientes


Recordsets
Constantes

Table dbOpenTable Acesso directo à tabela da Refere-se exclusivamente


BD; a uma única tabela da
base de dados;
Permite a utilização de
índices (Indexes); Só procura através dos
índices criados, utilizando
A procura é rápida;
para isso o método
Pode actualizar registos na “Seek”;
tabela subjacente.
Não limita nº registos.

Dynaset dbOpenDynaset Pode seleccionar registos e As pesquisas são mais


campos específicos; lentas que no tipo table;

Pode usar partes de instru- Não pode fazer uso dos


ções em SQL; índices (Indexes).

Permite pesquisas por


qualquer campo (utilizando
o método “FIND”).

Snapshot dbOpenSnapshot As mesmas vantagens do Só de leitura


tipo Dynaset

Figura III.3.5 Tipos de Recordsets

Como já referido anteriormente, por omissão o tipo predefinido é


dbOpenTable.
Considerando então o objecto tipo tabela (dbOpenTable), este é um tipo
de Recordset que identifica uma tabela da base de dados, contendo os
dados dessa entidade. Para declarar um tipo de objecto como este é
necessário ter aberto anteriormente a base de dados e inicializar uma
484 BASES DE DADOS COM MICROSOFT ACCESS 2007

variável do tipo Database, onde se encontra a tabela que queremos afec-


tar ao objecto tabela (Table), como se poderá visualizar pelo procedimento
seguinte:
Option Compare Database
Dim db As Database
Private Sub Form_Activate()
Dim tableVar As Recordset
Set db = OpenDatabase("C:\Documents and
Settings\TO\Ambiente de trabalho\Livro\Editora.Mdb")
Set tableVar = db.OpenRecordset("Autores", dbOpenTable)
End Sub

Começamos por declarar a variável “db” do objecto Database (para atri-


buição de uma base de dados não corrente). Dentro do procedimento –
Private Sub Form_Activate() – declaramos a variável tableVar do objecto
Recordset. O set é utilizado para dar à variável o valor do objecto, neste
caso a variável “db” irá representar a base de dados “Editora.mdb” e a
variável “tableVar” irá representar a tabela “Autores” e seus valores. A
partir deste momento, sempre que haja necessidade de adicionar, alterar,
visualizar ou eliminar dados desta tabela utilizamos a variável (“tableVar”)
que representa este Recordset.
Relativamente ao objecto “Dynaset”, este encontra-se desenhado de uma
forma muito mais flexível para a utilização de tabelas que o objecto
“Table”. Este tipo de Recordset (“Dynaset”) identifica uma ou várias con-
sultas (“Query”) da base de dados, contendo os dados de uma ou mais
entidades. Para declarar um tipo de objecto como este é necessário ter
aberto anteriormente a base de dados e declarar uma variável do tipo
Database, onde se encontra a consulta ou consultas que queremos afectar
ao objecto “Dynaset” (consulta), como se visualiza pelo procedimento
seguinte:
Option Compare Database
Dim db As Database
Private Sub Form_Activate()
Dim DysetVar As Recordset
Set db = OpenDatabase("C:\Documents and
Settings\TO\Ambiente de trabalho\Livro\Editora.Mdb")
Set DysetVar = db.OpenRecordset("Autores",
dbOpenDynaset)
End Sub

Podemos também utilizar declarações SQL na consulta que requeremos


afectar o objecto “Dynaset”, como a seguir se demonstra:
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 485

Sub analise()
Dim db As Database
Dim dysetVar As Recordset
Dim sql As String
Set db = DBEngine(0)(0)
sql = "SELECT CódAutor, Nome, Morada FROM Autores WHERE
CodPostal>4800"
Set dysetVar = db.OpenRecordset(sql, dbOpenDynaset)
DoCmd.OpenQuery "dysetVar", acViewNormal
End Sub

A diferença em relação ao procedimento anterior deve-se essencialmente


à afectação do objecto “Dynaset” através de instruções SQL (Set
dysetVar = db.OpenRecordset(sql, dbOpenDynaset).
O argumento Options é facultativo e quando utilizado representa uma
combinação de constantes que especificam características do novo
Recordset (figura III.3.6). Algumas dessas constantes que possibilitam a
combinação são:

Figura III.3.6 Recordset com parâmetro opções.

dbAppendOnly – permite aos utilizadores acrescentar novos registos ao


Recordset, mas nunca eliminar ou alterar registos já existentes;
dbSQLPassthrough – passa um conjunto de instruções SQL para uma
base de dados acedida por ODBC (só para Recordset do tipo Snapshot);

dbSeechanges – gera um erro em run time, caso um utilizador esteja a


modificar dados que um outro esteja no mesmo momento a utilizar (só pa-
ra Recordset do tipo Dynaset);
dbdenyWrite – previne outros utilizadores de modificar ou adicionar regis-
tos (só para Recordset do tipo table);
dbdenyRead – previne outros utilizadores de ver dados numa tabela (só
para Recordset do tipo table);
486 BASES DE DADOS COM MICROSOFT ACCESS 2007

dbReadOnly – previne os utilizadores de fazerem alterações no


Recordset.
O argumento lockedits10 é também opcional e determina a forma de visua-
lizar o Recordset.

O Método MOVE

Um objecto Recordset mantém a posição do registo corrente, de forma a


permitir ao programador movimentar para o primeiro, o último, o próximo
ou anterior registo de uma tabela ou dynaset. Para tal utiliza-se os
seguintes métodos: MoveFirst, MovePrevious, MoveNext e MoveLast.
Associada a estes métodos é importante a utilização das propriedades
“BOF” (“Begin-of-file”) e “EOF” (“End-of-file”). Quando se utiliza o método
MoveNext (figura III.3.7), existe a possibilidade do registo corrente se
encontrar já na última posição, ou seja no último registo. Neste caso espe-
cífico, ao movimentar-se para o próximo registo irá ultrapassar a última
posição, causando um erro. A utilização desta propriedade (“EOF”) permite
testar a posição do registo corrente. Caso o valor desta propriedade seja
“Verdadeiro”, então a posição do registo corrente passa para o último, co-
mo se pode ver na programação do procedimento seguinte:
rs.MoveNext
If rs.EOF Then
rs.MoveLast
End If

Figura III.3.7 Método MoveNext

10
O argumento “lockedits” não é referenciado nos exemplos, não sendo portanto objecto
de estudo deste manual.
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 487

Da mesma forma, quando se pretende mover a posição para trás no


recordset com o método “MovePrevious”, existe a possibilidade de já se
encontrar no início do recordset, originando um erro por falta de registo
corrente. Por isso, é conveniente usar a propriedade “BOF”. Se ao movi-
mentar-se no recordset a propriedade “BOF” originar o valor “Verdadeiro”,
a solução válida será mover a posição para o primeiro registo (figura III.3.
8).
rs.MovePrevious
If rs.BOF Then
rs.MoveFirst
End If

Figura III.3.8 Método MovePrevious

Quando se invoca a mesma referência do objecto em múltiplas instruções


(métodos e propriedades), podemos através da cláusula “With/End With”
encaixar as várias instruções de código da seguinte forma:
With rs
.MoveNext
If .EOF Then
.MoveLast
End If
End With

O Objecto Field

Ao movimentar-se pelos registos de um recordset poderá ser necessário


utilizar os valores dos respectivos campos. Para tal, será necessário utili-
zar o objecto Field.
488 BASES DE DADOS COM MICROSOFT ACCESS 2007

Existem três sintaxes possíveis para referenciar o campo pretendido:


Fields(0)
Fields(“nome”)
Fields![nome]

O zero representa a posição numérica do campo, isto é, o primeiro campo


tem a posição zero. O nome representa o nome do campo. Caso este in-
clua espaços em branco deverá representá-lo dentro de parênteses rectos
(figura III.3.9).

Figura III.3.9 Objecto Field

Propriedade Recordcount

Para o objecto Recordset tipo “Table” a propriedade “RecordCount”


reflecte o actual número de registos existentes na tabela, depois de exe-
cutado o método “OpenRecordset”. A figura III.3.10 ilustra a utilização
desta propriedade. O resultado do código é mostrado na figura III.3.11. No
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 489

caso de ser um objecto Recordset tipo “Dynaset”, o “RecordCount”


reflecte simplesmente o número de registos “visitados”. Isto significa que
no objecto “Dynaset”, logo após ter sido executado o método Recordset,
o primeiro registo é considerado o registo corrente e o valor da propriedade
“RecordCount” igual a um (1). Caso se necessite do número total de
registos, é necessário utilizar o método “MoveLast” e só depois aplicar a
propriedade “RecordCount” (figura III.3.12). Resultado na figura III.3.13.

Figura III.3.10 Propriedade RecordCount numa Tabela

Figura III.3.11 Resultado Propriedade RecordCount

Figura III.3.12 Propriedade RecordCount num Dynaset


490 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.3.13 Resultado RecordCount num Dynaset

Método Index e Seek, Propriedade Nomatch

A propriedade Index11 e o método Seek só poderão ser usados num


objecto Recordset tipo “Table” (Tabela). O método Index estabelece uma
relação com o nome do índice (primário ou não) existente na tabela a utili-
zar. Os índices incluem a chave primária e todos os outros índices exis-
tentes na tabela. O método seek só permite realizar procuras em campos
índices. A propriedade “NoMatch”12 pode ser usada com qualquer tipo de
Recordset, isto é, quando se realiza uma procura numa tabela com o
método “Seek” ou num Dynaset (consulta (s)) com o método “Find”.
Nos próximos exemplos, teremos oportunidade de entender como estes
métodos e propriedades interagem entre si.
Neste exercício iremos abrir um Recordset do tipo “Table” e, através do
método “Seek”, irá ser localizado o primeiro registo da tabela “Autores”,
cujo campo “CódAutor” (PrimaryKey) seja igual ao valor da caixa de texto
(texto27). O código para este exercício encontra-se dentro do procedi-
mento “Sub PesqAutor_click”, associado ao botão de comando “Pesq
Autor” (figura III.3.14).

11
Esta propriedade quando utilizada num objecto recordset tipo Dynaset originará um erro
com a seguinte mensagem: ”O objecto não suporta esta propriedade ou método”.
12
Esta propriedade devolve o valor “verdadeiro – true” se não foi encontrado o registo es-
pecificado e “falso – false” caso seja encontrado.
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 491

Figura III.3.14 Procedimento do método Seek

Resultado da aplicação do método (figura III.3.15):

Figura III.3.15 Resultado método Seek

Através do método “Seek” irá ser localizado o primeiro registo “CódAutor”


(PrimaryKey) que terá que ser igual ao valor da caixa de texto (texto27).
Com este método apenas o primeiro registo será encontrado, caso exista.
Para a existência de mais que uma ocorrência será necessário utilizar o
código do procedimento seguinte:
492 BASES DE DADOS COM MICROSOFT ACCESS 2007

Sub MaisRegistos ()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = DBEngine(0)(0)
Dim stringactual As String
Set rs = db.OpenRecordset("Autores", dbOpenTable)
rs.MoveFirst
Do While Not rs.EOF
If rs.Fields("CódAutor") >= Val(Texto27) Then
stringactual = stringactual & rs.Fields(0) & " - " &
rs.Fields(1) & vbCrLf
End If
rs.MoveNext
Loop
If stringactual = "" Then
MsgBox "não existem Autores com código superior ou igual
ao digitado" & vbCrLf & "na Caixa de Texto"
Else
MsgBox stringactual
End If
End Sub

No exercício anterior sempre que se introduza um valor numérico na caixa


de texto (Texto27), o procedimento pesquisa a tabela (Autores) registo a
registo, mostrando todos os registos (código e nome do Autor) cujo código
Autor seja igual ou superior a esse valor. Especificando o valor 80 para o
código do Autor na caixa de texto, o resultado é o seguinte:

Figura III.3.16 Resultado procedimento “Sub MaisRegistos()”

O Método Find

Quando se pretende procurar registos através de um campo não indexado


num Recordset tipo Dynaset ou Snapshot utiliza-se o método FIND.
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 493

Podem ser utilizadas quatro extensões deste método, consoante a procura


pretendida (procura direccionada):
FindFirst – Encontra o primeiro registo que satisfaz um determinado crité-
rio;
FindNext – Encontra o registo seguinte que satisfaz um determinado crité-
rio;
FindPrevious – Encontra o registo anterior que satisfaz um determinado
critério;
FindLast – Encontra o último registo que satisfaz um determinado critério.

Neste exercício recorremos ao método “Find”, uma vez que o campo a


procurar não é indexado. Vamos abrir um Recordset do tipo Dynaset,
recorrendo a instruções SQL, como indica o exemplo (figura III.3.17).
De seguida criamos uma consulta em SQL relativa a todos os Autores
residentes em Lisboa. Finalmente, com o método FindFirst irá ser locali-
zado o primeiro registo que satisfaz um determinado critério. Caso se pre-
tenda continuar com a pesquisa no sentido de encontrar um novo registo
com as mesmas condições, utiliza-se o método FindNext (figura III.3.19).

Figura III.3.17 Procedimento do método FindFirst


494 BASES DE DADOS COM MICROSOFT ACCESS 2007

Resultado da aplicação do método (figura III.3.18):

Figura III.3.18 Resultado aplicação do método FindFirst

Figura III.3.19 Procedimento do método FindNext

Resultado (figura III.3.20):

Figura III.3.20 Resultado aplicação do método FindFirst


III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 495

Os Métodos AddNew, Edit, Update e Delete

O método AddNew cria um espaço de memória temporário, contendo uma


estrutura vazia (registo) do Recordset. Caso o registo contenha numera-
ção automática (AutoNumber), o registo será incrementado nesse
momento. A partir de um procedimento de código de programação iremos
atribuir valores aos vários campos (Fields) do Recordset (figura III.3.22).
Após essa atribuição, deverá ser utilizado o método Update para escrever
os valores no novo registo do Recordset (figura III.3.23).
Declaramos no procedimento geral as variáveis tipo objecto (Database e
Recordset) necessárias para afectar a Base de Dados – “Editora.Mdb” e
o Recordset da tabela “Livros” (figura III.3.21).

Figura III.3.21 Variáveis tipo Database e Recordset

Figura III.3.22 Procedimento para abertura de novo Registo


496 BASES DE DADOS COM MICROSOFT ACCESS 2007

Figura III.3.23 Procedimento de gravação do novo registo inserido.

A gravação só será bem-sucedida quando utilizado o método Update. Até


aí é sempre possível manter o recordset inicial e abandonar o novo
registo e seus dados. Quando um novo registo é acrescentado ao record-
set, este não será considerado o registo corrente, para tal teremos que
utilizar a propriedade “LastModified” do Recordset.
Resultado:

Figura III.3.24 Formulário Livros


III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 497

Formulário – Livros – preparado para introduzir dados no novo registo


(figura III.3.24). Após terminada a inserção dos dados, segue-se a fase da
gravação de forma a validar o novo registo (figura III.3.25).

Figura III.3.25 Formulário Livros com dados

Por último, já com o recordset actualizado, será emitida a mensagem


seguinte:

Figura III.3.26 Mensagem de texto

O método Edit cria também um “buffer” de memória temporária, contendo


a estrutura e os dados relativos ao registo corrente, isto é, o registo cujos
dados se pretendem alterar. Após essa alteração e novamente através do
498 BASES DE DADOS COM MICROSOFT ACCESS 2007

método Update, actualiza-se o Recordset com os novos dados existentes


(figuras III.3.27 e III.3.28). As alterações não serão consideradas se por
qualquer razão não existir o método Update.

Figura III.3.27 Método Edit


III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 499

Figura III.3.28 Método Update

O resultado é o da figura III.3.29.


Escolhe-se o registo que se pretende alterar, como se observa na imagem.

Figura III.3.29 Caixa de texto a solicitar registo a alterar


500 BASES DE DADOS COM MICROSOFT ACCESS 2007

Depois de digitado o registo pretendido (neste caso o registo 2), podemos


alterar os vários valores (figura III.3.30), para que em seguida, ao premir
no botão “gravar o registo alterado”, se fique com os novos dados nesse
registo.

Figura III.3.30 Alteração dos valores do registo com “CodRevendedor” igual a 2

Como se pode visualizar na figura seguinte:

Figura III.3.31 Registo com “CodRevendedor” igual a 2 actualizado


III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 501

O método Delete elimina o registo corrente do Recordset. Após ter elimi-


nado o registo, será necessário repor novamente um outro registo cor-
rente, através da movimentação para a frente ou para trás no recordset.
Recorrendo ao método Move, e em particular ao método MoveNext, posi-
cionamo-nos no próximo registo do Recordset, que será o registo corrente
como se pode visualizar no procedimento seguinte:
Private Sub EliminarAutor_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = DBEngine(0)(0)
Set rs = db.OpenRecordset("Autores", dbOpenTable)
rs.Index = "primarykey"
rs.Seek "=", Val(Texto27)
If Not rs.NoMatch Then
rs.delete
rs.MoveNext
Else
MsgBox "não existe o Autor pretendido com esse código"
End If
End Sub

Propriedade AbsolutePosition

Esta propriedade permite ao utilizador determinar a posição absoluta de


um registo pretendido. O código seguinte permite saber qual a posição
absoluta do registo que contém o número de contribuinte – “14342344”,
relativo aos revendedores da zona norte. O tipo de recordset utilizado foi
um Dynaset recorrendo a instruções de SQL.
Dim d As Database, r As Recordset
Set d = CurrentDb
Set r = d.OpenRecordset("SELECT * FROM Revendedores
WHERE " & "Região= 1")
r.FindFirst "Contribuinte = 14342344"
MsgBox r.AbsolutePosition
r.Close
Set d = Nothing

Propriedades BeginTrans, CommitTrans e RollBack

Estas propriedades estão ligadas à Base de Dados, corrente ou não, e per-


mitem o seguinte:
BeginTrans: Inicia uma transacção na Base de Dados;
CommitTrans: Permite guardar as alterações feitas;
502 BASES DE DADOS COM MICROSOFT ACCESS 2007

RollBack: Desfaz as alterações mesmo depois de já terem sido gravadas


com o método “Update”. Vejamos um exemplo (figura III.3.32):
Vamos abrir a tabela “Autores” da Base de Dados corrente e alterar, sujeito
a confirmação, o valor do campo “Nome” de “António Abreu” para
“António Abreu S.”, utilizando as propriedades anteriores.
Para alteração dos valores do campo “Nome” utilizam-se duas caixas de
texto, a primeira com o valor a pesquisar e a segunda com o valor a alterar
(figura III.3.32).

Figura III.3.32 Formulário exemplo

Caso o primeiro valor seja encontrado, é solicitado que se grave a respec-


tiva alteração na tabela, mediante confirmação na caixa de mensagem.

FiguraIII.3.33 Formulário com caixa de confirmação


III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 503

Após a confirmação a tabela “Autores” é de imediato actualizada (figura


III.3.34).

Figura III.3.34 Extracto da tabela Autores

Contudo, se a intenção não for alterar os dados dessa tabela, escolhendo


a opção “Não” da caixa de mensagens “Guardar Alterações”, será desfeita
toda e qualquer alteração feita nessa tabela através da propriedade “Roll
Back” (figuras III.3.35 e III.3.36).

Figura III.3.35 Formulário com caixa de texto “Guardar Alterações”

Figura III.3.36 Extracto da tabela Autores

O código de programação deste exercício encontra-se no procedimento


“Private Sub INIALT_Click() … End Sub” (figura.III3.37).
504 BASES DE DADOS COM MICROSOFT ACCESS 2007

FiguraIII.3.37 Propriedades BeginTrans, Commitrans e RollBack

Métodos CompactDatabase e RepairDatabase

Para terminar este périplo pelos métodos e propriedades do modelo DAO,


fazer a compactação e reparação da base de dados é muito útil para redu-
zir o seu tamanho da base de dados, após manipulações, para a tornar
mais rápida. A sintaxe é a seguinte:

CompactDatabase:

DBEngine.CompactDatabase(BDAntiga, BDNova, local, opções,


password)
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 505

BDAntiga: É uma string que representa a base de dados a compactar,


desde que esteja fechada. A string deve conter o caminho completo e
nome da BD. Argumento obrigatório;
BDNova: É uma string que representa o novo nome e caminho da base
de dados compactada. Argumento obrigatório;
Local: Argumento opcional. Especifica a ordem para criar a nova base de
dados, revista nas propriedades;
Opções: Argumento opcional. É uma constante ou combinação de cons-
tantes que indica uma ou mais opções, a indicar pelas propriedades;
Password: Argumento opcional. É uma string que contém a password,
se a base de dados estiver protegida com password.

RepairDatabase:

DBEngine. RepairDatabase (BDNome)

BDNome: É uma string que representa a base de dados a reparar. A


string deve conter o caminho completo e nome da BD. Argumento obri-
gatório.
Vamos então reparar e compactar a nossa base de dados, recorrendo ao
código de programação:
Reparar:
DBEngine.RepairDatabase"C:\Documents and ettings\Utilizador\Ambiente
de trabalho\Livro 2007\Editora.mdb")
MsgBox "Base de Dados reparada com sucesso!"
DoCmd.Quit

Compactar:
Dim d As Database
Set d = OpenDatabase("C:\Documents and Settings\Utilizador\Ambiente
de trabalho\Livro 2007\Editora.mdb")
DBEngine.CompactDatabase d,d
MsgBox "Base de Dados compactada com sucesso!!!!"
DoCmd.Quit
506 BASES DE DADOS COM MICROSOFT ACCESS 2007

Estes dois métodos só funcionam perante uma base de dados da Microsoft


JET.

3.2 Arquitectura ADO

Como já mencionado anteriormente, todos os produtos da Microsoft que


utilizam acessos a estruturas de dados estão a convergir para uma estru-
tura metodológica universal (UDA) (figura III.3.38), capaz de conciliar e
integrar o que de melhor têm as metodologias DAO e RDO13.
Normalmente os programadores de Visual Basic14 (VBA, VB5, VB6, …,
etc.) utilizam a metodologia DAO (Data Access Objects) para interagir
com bases de dados locais, tais como o Microsoft Access 2007 e usam
RDO (Remote Data Objects) para se ligarem a bases de dados do tipo
cliente/servidor, tais como o SQL Server.

Figura III.3.38 Arquitectura Universal Data Access – UDA – da Microsoft

A concepção que se encontra por detrás da metodologia ADO – ActiveX


Data Objects – (figura III.3.39) é mais abrangente do que a anterior arqui-

13
RDO – Remote Data Objects: Este modelo permite aceder a Bases de Dados remotas.
Este modelo não será objecto de estudo neste manual.
14
O Visual Basic é uma linguagem de programação produzida pela empresa Microsoft, e é
parte integrante do pacote Microsoft Visual Studio. A versão mais recente faz parte do
pacote Visual Studio .NET voltada para aplicações .Net. A versão anterior fez parte do
Microsoft Visual Studio 6.0, ainda muito utilizado actualmente.
III.3 MODELLO DE OBJECTOS NO
N MICROSOFT ACCESS
C 2007/VBA 507

tectura. Trata-se de uma meto


odologia un
niversal de acesso
a a da
ados (UDA –
Universsal Data Ac ccess).
Desta forma,
f qualquer métod do de acesso a dados s poderá seer usado poor
qualqueer origem ded dados. Esta
E metodologia reco
orre ao para
adigma OL LE
15
DB (fig gura III.3.39
9) da Micro
osoft, com o qual é pos
ssível acede
er a qualquer
tipo de dados,
d estaando relacio
onados ou não,
n de umaa forma mais rápida.

Figura III.3.39 Arquitecturra OLE DB e ADO

A metod dologia ADDO não é domínio excclusivo de uso u por parrte do Visuual
Basic. Esta pode ser utilizada por muita as outras lin
nguagens de
d programa a-
entadas porr objectos, bem como por todas as
ção orie a aplicaçõ
ões do Micro
o-
soft Offiice, em partticular pelo Microsoft Access
A 20077.

15
A tecnologia OLE DB
D – Object Linking
L and EEmbedding for
f Databases s – é compossta
por compponentes de baixo
b nível, qu
ue permitem acesso
a a dad
dos, qualquer que seja a su
ua
origem.
508 BASES DE DADOS COM MICROSOFT ACCESS 2007

3.2.1 A Metodologia ADO no Access/VBA

Ao instalar o Microsoft Office 2007 é instalado o Microsoft Data Access


Components (MDAC) que inclui como componentes o OLE DB e o
Microsoft ActiveX Data Objects 2.x (ADO).
Ao criar uma base de dados no Access 2007 é criada automaticamente
uma referência à biblioteca de objectos ADO 2.x, como se pode ver pelo
editor de VBA, no menu Tools e opção References (figura III.3.40).

Figura III.3.40 Menu de activação do ADO

3.2.2 Modelo de Objectos ADO

A metodologia ADO permite resolver operações onde intervenham bases


de dados, tais como: obtenção/adição de dados, actualizar/editar dados,
eliminar dados, etc. Para realizar todas estas operações, a metodologia
ADO apresenta alguns objectos (figura III.3.41), que possuem métodos e
propriedades capazes de resolver e simplificar estas operações. Em pri-
meiro lugar existe a necessidade de nos ligarmos à fonte de dados, usan-
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 509

do para tal o objecto “Connection” do ADO. Este objecto encontra-se no


topo da hierarquia, e como tal manipula toda a comunicação entre a apli-
cação e a fonte de dados (Base de Dados).
De seguida, vamos passar instruções à fonte de dados sobre o que se
deseja fazer, usando o objecto “Command” do ADO. Este objecto repre-
senta uma instrução em SQL, um stored procedure16, estrutura em tabela
ou qualquer outro comando que possa ser processado pela fonte de
dados.
O resultado da passagem de um comando para uma fonte de dados e da
elaboração da sua resposta é normalmente representado por um objecto
“Recordset” do ADO. Por vezes, é necessário recorrer ao objecto “Para-
meter” para realizar uma ou outra operação específica. Este objecto é
utilizado em conjunto com o objecto “Command”. A resposta dada pelo
“recordset” implica a utilização do objecto “Field” onde será alojada a
informação solicitada. Um “field” (campo) constitui uma pequena parte do
“Recordset”. Cada campo é constituído pelas suas propriedades, como o
nome, o tipo de dados e o valor. Normalmente um “Recordset” é consti-
tuído por um conjunto de campos que constituem a informação pretendida.

Figura III.3.41 Modelo de Objectos ADO

16
stored procedure – equivalente a um subprocedimento no SQL
510 BASES DE DADOS COM MICROSOFT ACCESS 2007

O objecto “Property” – propriedade – faz parte de um conjunto de proprie-


dades que o objecto ADO possui. Estas determinam o comportamento de
um objecto. O objecto “Error” – Erro – contém a informação da impossibili-
dade de se estabelecer uma ligação (conexão), um comando, ou efectuar
uma operação num objecto que não está disponível para tal.
Actualmente o ADO fornece o objecto “Recordset” como principal meio
para aceder à informação nas bases de dados relacionais. No entanto,
existem dois objectos alternativos (“Record” e “Stream”) que também
permitem manipular dados. Os objectos do tipo “Record” funcionam
essencialmente como um “Recordset”. Os “Records” têm funções limita-
das em comparação com os “Recordsets” e possuem também diferentes
propriedades e métodos. O objecto “Stream” fornece meios para ler,
escrever e manipular um conjunto de bytes. O conjunto de bytes pode ser
um texto ou um binário e está limitado em tamanho apenas por recursos
do sistema. Estes dois o