Base de Dados Com Microsoft Access 2007(PT-PT)
-
Upload
wilsonscribd7 -
Category
Documents
-
view
613 -
download
23
Transcript of Base de Dados Com Microsoft Access 2007(PT-PT)
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
[email protected] 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-
1Conforme 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...
2 Citado em [Almeida, 1997]
Figura I.1.1 Ciclo dados-informação-decisão
Utilizador Dados Informação
Acções Tomadas de decisões
Conhecimento
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.
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.
Operacional
Táctico
Estratégico
Figura I.1.2 Fluxo de informação na organização
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
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-
Figura I.1.3 Características dos tipos de Informação nas organizações
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.
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.
▲ 1980
▲ 1990
▲ 2000
▲ 1960
ERA 1Aumentar a eficiência das operações internas TPS, MIS, DBMS
ERA 2Aumentar a eficácia da gestão OIS, DSS
ERA 3Alterar as bases da concorrência ES, EIS
ERA 4 Aumentar a eficiência nas trocas inter-empresas. Redesenhar os processos de gestão ERP, CRM, SCM, KMS, BI
▲ 1970
Figura I.1.4 A evolução dos sistemas de informação na empresa
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.
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
Estudo preliminar
Identificação de requisitos
Manutenção
Análise detalhada
Desenho
Codificação
Testes e implantação
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).
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)
Crescim
ento
I II III IV V VI
Era da Informação
I Iniciação II Expansão III Controlo IV Integração V Administração de dados VI Maturidade
Era do Computador Ponto de Mudança
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
Informação
Sistema de Informação
TPS
MIS
DBMS
OIS
DSS
ES
SIS
EIS
ERP
CRM
SCM
KMS
Planeamento de Sistemas de Informação
Desenvolvimento de Sistemas de Informação
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.
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.
Figura I.2.1 Um Sistema de Ficheiros
Clientes
Encomendas
Produtos Aplicação 3 Inserir novo cliente
FICHEIROS DE DADOS APLICAÇÕES
Aplicação 4 Imprimir notas de encomenda
Aplicação 2 Inserir novo produto
Aplicação 1 Efectuar encomenda
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.
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.
CLI-COD CLI-NOME CLI-MORADA CLI-TELEF 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 6 j o a q u i m m a i a 3 3 3 2 2 2 1 1 1
campo
registo
Figura I.2.2 Exemplo do ficheiro Clientes
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
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
SISTEMA DE GESTÃO DE BASES DE DADOS (SGBD)
APLICAÇÕES
UTILIZADORES
DADOS
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.
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
S G B D
Base de Dados Utilizadores
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
Figura I.2.5 A arquitectura ANSI/SPARC
8 IDEM.
Nível externo
Utilizadores Finais
Esquema Conceptual
Vista externa 1
Vista externa 2
Vista externa 3
Esquema Interno
Base de Dados
Correspondência entre nível conceptual e nível externo
Nível conceptual
Nível interno
Correspondência entre nível conceptual e nível interno
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.
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].
Departamento Dnome Dnumero NomeChefe DataInicioChe
Projecto Pnome Pnumero PLocal
Empregado Nome BI DataNasc
Trabalhador nome BI Horas
Supervisor nome BI
Dependente nome sexo DataNasc
Nível 0
Nível 1
Nível 2
D
P
F S T
E
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.
Figura I.2.7 Uma estrutura em rede23
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].
Empregado
Nome BI DataNasc Morada Sexo Salário Nome_Dept
Dependente
E-BI Nome Sexo DataNasc Relação
Departamento Nome Número Local DataIniChe
Projecto Nome Número Localização
Trabalha-Em E-BI P-Número Horas
Supervisor
S-BI
Depende-de
Supervisiona
É-um-supervisor
E-Trabalha-em
P-Trabalha-em
Gere Trabalha-para
Controla
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.
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.
Empregado Cod-Empregado
Nome-Empregado
Proj-num
1 José 1 2 Manuel 2 3 Tiago 1 4 Pedro 3
ProjectoProj-num
Proj-descr Local
1 Colocar Tapete Porto 2 Pintar parede Gaia 3 Colocar portas Maia
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 DeWitt, Klaus Dittrick, David Maier e Stanley Zdonik na 1st 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
objectos Deve ser um SGBD
1. O sistema deve suportar objectos complexos
9. Os dados devem ser permanentes
2. O sistema deve suportar a identi-dade de um objecto
10. O SGBD deve ser capaz de lidar com bases de dados muito grandes
3. O sistema deve suportar encapsulamento
11. O SGBD deve suportar utilizadores concorrentes
4. Devem ser suportados tipos ou classes
12. O SGBD deve ser capaz de recuperar de falhas de hardware e software
5. O sistema deve suportar herança na estrutura hierárquica de classes
13. As questões a colocar sobre os dados 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.
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].
Relacionais
Sistemas de Ficheiros Orientados a objectos
Extensões de Relacional
Cap
acid
ade
de p
rocu
ra/p
esqu
isa
Supo
rte
mul
ti-ut
iliza
dor
Complexidade / Extensibilidade
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
OLTP’s Data Warehouses
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 utilizadores de nível operacional
Servem um número relativamente baixo de utilizadores de nível administrativo
Figura I.2.11 Comparação entre bases de dados utilizadas em OLTP’s e Data Warehouses31
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
Sistema de Ficheiros
Sistema de Bases de Dados
Redundâncias nos dados
Independência Dados-Aplicações
Sistema de Gestão de Bases de Dados
Catálogo do Sistema
Abstracção dos dados
Vistas dos dados
Administrador de Dados
Administrador da Base de Dados
Analista da base de dados
Programador de Aplicações
Utilizador Final
Funções de um SGBD
Arquitectura ANSI/SPARC
Independência Lógica
Independência Física
Linguagem de Definição de Dados
Linguagem de Manipulação de Dados
Modelo Hierárquico
Modelo em Rede
Modelo Relacional
Modelos Orientados a Objectos
Extensões ao modelo relacional
Data Warehouses
OLAP
Data Mining
Integração das Bases de Dados com a Web
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.
Figura I.3.1 Exemplo de uma relação
Cod-Empre Nome-Empre Morada-Empre Cidade Telef-Empre Cod-Proj
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
EMPREGADO atributos
tupl
os
Cardinalidade = 6
Grau = 6
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
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
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
EMPREGADO
Proj-Num Descr-Proj Local
1 Colocar Tapetes Porto
2 Pintar Parede Gaia
3 Colocar Portas Maia Chaves Primárias
Chave Estrangeira PROJECTO
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)
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.
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
EMPREGADO
Proj-Num Descr-Proj Local
1 Colocar Tapetes Porto
2 Pintar Parede Gaia
3 Colocar Portas Maia
PROJECTO
Cod-Empre Proj-Num Nhoras 1 1 10 2 2 20 3 1 15 4 3 13 5 2 12 6 3 16 1 2 19 4 1 23
EMPREGADOnoPROJECTO
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
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].
Select Project
a b c
x y
a x a y b x b y c x c y
Product
Union Intersection Difference
a1 b1 a2 b2 a3 b3
b1 c1 b2 c2 b3 c3
a1 b1 b1 c1 a2 b2 b2 c2 a3 b3 b3 c3
Join
a x a y b x b y c x c y
x y
a
Divide
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)
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)
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
EMPREGADO
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:
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.
Nome-Empre Telef-Empre
Ana 123456789
José 987654321
Pedro 456456456
Tiago 789789789
João 123123123
António 147258369
EMPREGADO
I.3 O MODELO RELACIONAL DE BASES DE DADOS 83
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.
Cod-Empre
Nome-Empre
Morada-Empre Cidade Telef-Empre E.Proj-
Num P.Proj-Num
Descr-Proj Local
1 Ana Rua Nova Porto 123456789 1 1 Colocar Tapetes Porto
1 Ana Rua Nova Porto 123456789 1 2 Pintar Parede Gaia
1 Ana Rua Nova Porto 123456789 1 3 Colocar Portas Maia
2 José Rua Moderno Gaia 987654321 2 1 Colocar Tapetes Porto
2 José Rua Moderno Gaia 987654321 2 2 Pintar Parede Gaia
2 José Rua Moderno Gaia 987654321 2 3 Colocar Portas Maia
3 Pedro Rua Antiga Matosinhos 456456456 1 1 Colocar Tapetes Porto
3 Pedro Rua Antiga Matosinhos 456456456 1 2 Pintar Parede Gaia
3 Pedro Rua Antiga Matosinhos 456456456 1 3 Colocar Portas Maia
4 Tiago Rua Inclinada Ovar 789789789 3 1 Colocar Tapetes Porto
4 Tiago Rua Inclinada Ovar 789789789 3 2 Pintar Parede Gaia
4 Tiago Rua Inclinada Ovar 789789789 3 3 Colocar Portas Maia
5 João Rua Direita Porto 123123123 2 1 Colocar Tapetes Porto
5 João Rua Direita Porto 123123123 2 2 Pintar Parede Gaia
5 João Rua Direita Porto 123123123 2 3 Colocar Portas Maia
6 António Rua Torta Gaia 147258369 3 1 Colocar Tapetes Porto
6 António Rua Torta Gaia 147258369 3 2 Pintar Parede Gaia
6 António Rua Torta Gaia 147258369 3 3 Colocar Portas Maia
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:
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.
Nome-Empre Telef-Empre E.Proj-
Num P.Proj-Num
Local
Ana 123456789 1 1 Porto
Pedro 456456456 1 1 Porto
Tiago 789789789 3 3 Maia
António 147258369 3 3 Maia
I.3 O MODELO RELACIONAL DE BASES DE DADOS 85
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:
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.
R - S
Matosinhos
Ovar
R ∪ S
Porto
Gaia
Matosinhos
Ovar
Maia
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:
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:
Figura I.3.13 Resultado do operador JOIN
Nome-Empre Cidade E.Proj-
Num P.Proj-Num
Descr-Proj Local
Ana Porto 1 1 Colocar Tapetes Porto
José Gaia 2 2 Pintar Parede Gaia
R ∩ S
Porto
Gaia
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
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
Nome-Empre E.Proj-NUm
Ana 1
José 2
Pedro 1
Tiago 3
João 2
António 3
Proj-Num
1
Nome-Empre
Ana
Pedro
∏nome-empre,cod-proj(EMPREGADO) : σnum-proj=1(∏num-proj(PROJECTO))
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
Atributo
Tuplo
Grau de uma relação
Cardinalidade de uma relação
Domínio
Base de dados relacional
Esquema de uma relação
Super-chave
Chave candidata
Chave primária
Chave estrangeira
Regra de integridade
Integridade de entidade
Integridade referencial
Operadores da Álgebra Relacional
SQL
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
ColecçãoVenda
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 Categoria
Encomenda
contém
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 mota
Encomenda
entrega
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.
Empregado
Supervisiona
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
produto categoria
contém
subdivide-se
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
empregado gere departamento1 1
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).
empregado gere departamento1 1
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
em pregado depende de dependente
cod-em pr
nom eem pr
da ta nascem pr cod-em pr
num -dep nom edep
data nascdep
1 N
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.
álbum contém pista
cod-a lbum
cod-a lbum
num -p is ta
1 N
... ......
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.
cliente visita vendedor1 M M 1
codcliente
data
codvendedor
codcliente
codvendedor........ ........
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.
encomenda linha encomenda produto
1 M M 1
nº encomenda
quantidade
cod produto
nºencomenda
cod produto
encomenda produtoM N
contém
........ ........
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
Símbolo “para 1” 1 |
Símbolo “para muitos” M
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.
colecção livropertence1 N
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
Diagrama ER
Entidade
Atributo
Atributo simples
Atributo composto
Atributo derivado
Relacionamento
Participante de um relacionamento
Grau de um relacionamento
Relacionamento recursivo
Relacionamento binário
Relacionamento ternário
Cardinalidade de um relaciona-mento
Participação obrigatória
Participação opcional
Entidade fraca
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:
Apresente as tabelas do modelo relacional associadas a este esquema.
34. Considere o diagrama E-R seguinte:
divide
Contémensino
requere
Professor
Curso
Turma Aluno
Sala
1
1
M
M
M
M N
N
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.
Montanha Rio
origina
nome
comprimento
altitude nome localização
1 N
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.
Figura I.5.3 Diagrama de dependências
Livro:ISBN Título Data edição Capa Nº unid.ed Cod
colecção Designação colecção
f1:
f2:
Livro/Autor: ISBN Cod
Autor Nome Autor
Telefone Autor
Contribuinte
Cod Nacionalidade
Nacionalidade
Royal ties
f3:
f4:
F5:
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
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
CodPaciente Data Hora CodMedico Sala
f1:
f2:
f3:
f4:
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 AB ⊂
o RBA =∪
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 [email protected]
66 12345 [email protected]
66 12222 [email protected]
66 12222 [email protected]
67 12121 [email protected]
67 12121 [email protected]
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 [email protected]
66 12222 66 [email protected]
67 12121 67 [email protected]
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-sultório
cod paciente
cod paciente
cod medico
cod consultorio
cod 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 consultório
cod paciente
cod medico
cod consultorio
cod paciente
cod 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
1FN
2FN
3FN
FNBC
4FN
5FN
Dependência funcional
Determinante
Grupos repetitivos
Dependência parcial
Dependência transitiva
Multidependência
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.
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?
Nº Dentista
Nome dentista
Nº Paciente
Nome paciente
Consulta
Data Hora
Nº da sala
S1011 António Silva
P100 Ana Sousa 03-Fev-2003 10:00
S15
S1011 António Silva
P105 Mário Silva 03-Fev-2003 12:00
S15
S1024 Maria Rodrigues
P108 Maria Almeida
03-Fev-2003 10:00
S10
S1024 Maria Rodrigues
P108 Maria Almeida
05-Fev-2003 14:00
S10
S1032 Rui Almeida P105 Mário Silva 05-Fev-2003 16:00
S15
S1032 Rui Almeida P110 José Pedro
06-Fev-2003 18:00
S13
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
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,
barra de acesso rápido
o botão Microsoft Office
friso
barra de estado
painel de navegação
II.3 A INTER
a nova possibilpercebid2007, orem anipo na p
TambémacrosA visuavegaçã
3.2.2 S
A barraum conjII.3.4) −estamosmaior ptos conjtos de u
RFACE DO MICROSO
estrutura faita a descodos. Isto oc
os comandonhados no rocura dos
ém as tabes são exibialização deão pois apre
Figura
Secções co
a de opçõesjunto de co− depende ds a execut
probabilidadjuntos de coum determin
S
OFT ACCESS 2007
acilita a locaoberta de recorre porqu
os são colocfundo dos mcomandos
Figura
elas, as codos como d
e janelas deesenta todo
a II.3.3 Separa
ontextuais
s friso, alémomandos agdo objecto etar. Na verdde de seremomandos anado tipo.
Separadores
alização doecursos queue, com os cados mais menus. Agoe será mais
II.3.2 Separa
onsultas, osdocumentose documentos os objeto
adores no ace
s
m de ser digrupados dem que estdade, esta
m aplicados apenas são
os comandoe, de outroseparadoreperto da su
ora não é ps fácil enco
dores do friso
s formulários com sepatos com sepos abertos n
esso a docume
ividida em e acordo cotamos a tra
barra contao que estrelevantes
os necessáro modo, pases utilizadouperfície, ereciso perdntrá-los.
o
os, os relaaradores (fiparadores fna mesma j
entos abertos
separadoreom seu con
abalhar ou dtém os comtamos a fazquando ed
18
rios e, assimssariam de
os no Accesm vez de seer tanto tem
atórios e asgura II.3.3)
facilita a naanela.
es, concentntexto (figuda tarefa qumandos cozer, pois ceitados obje
9
m, s-ss e-
m-
s ). -
ra ra ue m
er-c-
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.
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.
Tipo de dados Significado Tamanho
Texto Caracteres Alfa numéricos Até 255 caracteres
Memo Caracteres Alfa numéricos (normalmente usado para comentários, observações ou explicações detalhadas)
Até 64.000 bytes
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
Automática Valor numérico definido automaticamente quando é adicionado um registo
4 bytes
Sim/Não Valores booleanos (utilizado para campos que só podem ter uma de duas opções)
1 bit
Objecto OLE Objectos OLE, gráficos e outros dados binários Até um gigabyte
Hiperligação Alfanumérico (utilizado para armazenar endereços que acedam a um ficheiro ou página Web)
Cada uma das 3 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
de pesquisa Cria um campo que permite escolher um valor de outra tabela ou de uma lista de valores utilizando uma caixa de combinação
Normalmente 4 bytes
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
Introdução Permite definir uma máscara de regras para a introdução dos dados.
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
Comprimento Zero Permitir (ou não) que o conteúdo de um campo tipo Texto ou Memo 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
Simples -3,4*1038 até 3,4*1038 Até 7 4
Duplo -1,797*10308 até 1,797*10308 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).
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.
Mostra linhas de grelha
Alterar o tipo de letra
Alterar a cor do texto
Alterar a cor do fundo
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 #6/6/06#
Vendas da Editora efectuadas entre 1 de Fevereiro de 2005 e 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
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
Expressão a construir
Botões que inserem operadores
Área para seleccionar campos dos objectos BD e funções
Categorias da Função
Funções disponíveis na
Categoria seleccionada
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.
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.
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)
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:
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
Redimensionar os campos de
informação
Arrastar os campos de informação para alterar a sequência
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.
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.
Controlo independente com formato tipo texto
Controlos dependentes
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
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.
Seleccionar
Grupo de opções objectos
Botão de opções
Caixa de combinação
Quebra de página
Subformulário/Subrelatório
Assistentes de controlo
Botões de alternar
Caixa de verificação
Caixa de listagem
Imagem
Moldura de objecto dependente
Controlo separador
Linha
Mais controlos
Rectângulo
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
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.
Clicar, arrastar e largar as colunas para alterar a
sequência
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.
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 .
Botões para adicionar limites
Botões para adicionar controlos diversos
Botões para adicionar logótipo, título, nº página e data
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 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 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.
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-
Subtotal
Total Geral
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.
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.
Descrição do argumento
seleccionado
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.
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
EVENTOS EVENTS
PROPRIEDADES PROPERTIES
MÉTODOS METHODS
OBJECTOS OBJECTS
Têm
Associadas Podem
Responder a
Têm
Associados
CÓDIGO Que constitui a
resposta a cada evento
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 CARAC
rio. Outlário da
O Micropartir dedetermiCount d
PodemoquandoView) e“Ferramgura III.
Fi
CTERÍSTICAS DA PRO
tro exemplocolecção.
osoft Accese zero (0) anar o númeda Colecçã
os ter aces nos encone opção “F
mentas de 2.4 e figura
igura III.2.4 A
OGRAMAÇÃO EM V
o será Form
ss 2007 nuaté NomeCoero de formo Formulári
sso às propntramos no Folha de PBase de D
a III.2.5, res
cesso às prop
VBA
ms.Item (0)
mera os obolecção.Co
mulários abeios: Forms.
priedades dmodo de e
PropriedadDados” e op
pectivamen
priedades dos
), que se re
bjectos denount - 1. Poertos por re.Count.
de um objeexibição –
des” ou entpção “Folhante).
objectos pela
efere ao pri
ntro de umaor exemplo,eferência à
ecto da basModo Destão, clicama de Propr
a barra de ferr
40
meiro form
a colecção , poderíamopropriedad
se de dadosign (Desigos no menriedades” (
ramentas
5
u-
a os de
os gn nu fi-
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 CARAC
Os métpropriedzadas nexiste ncar os mMicrosonesta qde códigBasic dtodas asa (figu
F
Figu
CTERÍSTICAS DA PRO
odos (relacdades. Enqnuma caixano ambientemétodos deoft Access 2uestão. Qugo, associado Microsofs propriedara III.2.7).
Figura III.2.6
ura III.2.7 Caix
OGRAMAÇÃO EM V
cionados couanto as pr
a própria pe de trabalhe cada obje2007 (figuraando escre
ado a um evft Access 20ades e méto
Acesso ao Ed
xa de listagem
VBA
om os objecropriedadesara isso exho nada se
ecto. No enta III.2.6) of
evemos o novento, na fa007 faz apaodos previs
ditor de Visua
m com propried
ctos) são ms de um objxistente na
emelhante qtanto, o Edferece-nos ome de um ase de desearecer uma
stos para o
l Basic do Mi
dades e méto
menos evidejecto podemfase de d
que nos peritor de Visuuma ajuda objecto nu
enho, o Edita caixa de ltipo de obje
icrosoft Acces
dos referente
40
entes que am ser visuaesenho, nãrmita identiual Basic dbastante úma instruçãtor de Visuistagem coecto em ca
ss 2007
ao objecto
7
as ali-ão fi-
do útil ão
ual m u-
40
Mumocatosra
UmintutiDoCo
Muforopme 4 Esetdadsupplo
AsDarão
08
uitos métododo de actur ao métods de uma taleitura.
m outro exteragir comlizador nos
oCmd possontrol, Find
uitos dos mrma de act
pcionais. Seentos opcio
Este método pt. O objecto Rdos. Para utiliperior, que é o
o, para abrir a
set Bas
Set Tab
s variáveis Baatabase e Reco alvo de estud
dos aceitamuação do mo OpenRec
abela local,
emplo espe uma grand
s vários estásui muitos dRecord, R
Figura II
métodos do uar do mét
empre que onais, o mét
permite acedeRecordset é izar o objectoo Database. Etabela “TPaci
seDeDados=O
belaAutores=B
aseDeDados cordset, logo do mais aprof
m parâmetrmétodo sobrcordset4 seum conjunt
ecialmente de quantidaágios do de
métodos, RunComma
II.2.8:Alguns M
DoCmd retodo e, poro utilizadortodo utiliza
er/abrir os rega representa Recordset te
Este objecto reentes” implica
OpenDatabase
BaseDeDados
e TabelaAutodesignam-se
fundado no po
BA
ros que pere o objectoe este está to dinâmico
importanteade de méesenvolvimetais como
and e muito
Métodos do ob
equerem argr vezes, reqr não especos valores
istos de uma ção dos regiserá que recorepresenta uma as seguintes
e(“Editora.mdb
s.OpenRecord
ores são variápor variáveis-
onto III.3 (Mod
ASES DE DADOS CO
rmitem espo. Por exema criar um ou apenas
e é o objectodos a utiento dos se
o, Close, Oos outros (fig
bjecto DoCmd
gumentos qquerem tamcifique valopor omissã
tabela atravéstos de uma rrer-se a um oa base de dad
s instruções:
b);
dset(“Autores”,
áveis que ref-objecto. Este
delo de Objec
OM MICROSOFT AC
pecificar memplo, pode-s
conjunto des uma cópia
cto DoCmdlizar por queus programOpenForm,gura III.2.8)
d
que especifmbém argumores para osão para o p
és do objecto tabela numa outro objecto, dos aberta. Po
,dbOpenTable
ferenciam os e e outros objectos) deste ca
CCESS 2007
elhor o se indi-e regis-a só pa-
d, visto ualquer mas. O , Goto ).
ficam a mentos s argu-arâme-
Record-base de de nível
or exem-
e).
objectos ectos se-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.
41
2.2
Emordcoutisoex
Cabade
Esmeexacumcriev
0
2.3 Evento
m VBA um dem ou acç
onstitui o prlizamos na
obre a tecla xecutando o
ada objectoasta um cliqe código, ac
Figura
sta lista de ento. Para axemplo, quactivar ou dem formulárioar um proc
vento Mous
Fig
os
evento é ção do utilizrocedimentoa nossa apl
esquerda do código que
possui um que na setacção que ab
a III.2.10 Algun
eventos poalém do eve
ando se trabsactivar coo e fechar cedimento deMove:
gura III.2.11 E
basicamentzador, a pao (proceduicação, resdo rato em e lhe foi ins
conjunto da colocada àbre uma lista
ns Eventos po
ode ser percento Click, balha com fntrolos, trocum formuláde evento
Evento MouseM
BA
te uma resrtir de códig
ure). O evesponde à pr
cima do coerido.
e eventos aà direita daa de evento
ossíveis do obj
corrida comtemos muit
formulários car o controário. A títulassociado
Move aplicado
ASES DE DADOS CO
sposta de ugo escrito pnto Click, ressão do dontrolo – Bo
associados.a caixa de eos.
bjecto Formulá
m recurso à tos outros ee se pretenolo que poslo de exema um Rótu
o ao objecto R
OM MICROSOFT AC
um objecto previamentepor exempdedo do utotão de Com
. Para sabeeventos, na
ário (“Form”)
barra de deeventos comnde validar ssui o focu
mplificação, ulo (Label)
Rótulo24
CCESS 2007
a uma e e que lo, que ilizador mando,
er quais a janela
esloca-mo, por dados, s, abrir vamos com o
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):
Figura III.2.18 Organização do Código em Visual Basic for Applications
Projecto em Visual Basic
for Application
Módulos de Classe
Módulos Padrão
Procedimentos
Funções SubProcedimentos
Módulos pertencentes àclasse de objectos do Microsoft Access 2007
Prop. de Procedimentos
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).
41
Emnema
6
m seguida, ecessário paando escolh
Figura III
Figura I
o assistentara realizarhido (figura
I.2.21 SubPro
III.2.20 Assiste
te cria um r a acção pIII.2.21).
ocedimento ge
BA
ente de botões
SubProcedpretendida
erado pelo Ass
ASES DE DADOS CO
s de comando
dimento, onem relação
sistente Botõe
OM MICROSOFT AC
o
nde gera o o ao botão
es de Comand
CCESS 2007
código de co-
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).
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).
Invocar os SubProcedimentos
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 CARAC
2.4 JA
Para crde trabaBasic (procedi
•
ou
•
dD3
CTERÍSTICAS DA PRO
ANELAS DO
iar código nalho do Vis(figura III.2.mentos:
Entrar no mVisual Bas
Clicar na crios” ou “Redo menu “IDesign” e í34);
OGRAMAÇÃO EM V
Figura III.2.3
O EDITOR
no Microsofsual Basic, .35). A abe
menu “Ferrasic (figura II
colecção delatórios” eIniciar” escícone “Exib
VBA
32 Resultado d
DE VISUA
ft Access 2no caso co
ertura desta
amentas de I.2.33);
e objectos , em seguid
colher a opçir Código” (
da função Val
AL BASIC –
2007 é neceoncreto a jana janela im
Base de D
“Formulá-da, através ção “Modo (figura III.2.
lidade
– VBE WI
essário abrinela do editplica um do
Dados” e op
Figura III.2
42
INDOWS
r o ambientor do Visuos seguinte
ção ícone d
.33 Ícone VB
3
te ual es
do
42
Nead
Ja
EsVis
24
ou
• Entrarrendo qual osões opçãoevento
esta janela das a diferen
anela de C
sta janela (fsual Basic
r em modo às proprie
o evento a a, escolh
o podemos o determina
(figura III.2ntes funçõe
Figura I
Código (Co
figura III.2.3c sob a form
de estruturaedades de associar. P
her a opçãosempre esc
ado.
.35) existemes, em conte
III.2.35 Janela
ode Windo
36) é utilizama de proc
BA
a de um forqualquer o
Por fim atravo “Construtcolher um p
m muitas oexto de pro
a do Editor de
ow)
ada para escedimentos:
ASES DE DADOS CO
Figur
rmulário ouobjecto ou cvés do conor de Códiprocedimen
utras, as qugramação.
Visual Basic
screver ou : SubProce
OM MICROSOFT AC
ra III.2.34 Ícon
relatório econtrolo, esstrutor de eigo”. Nestanto já existe
uais estão
c
alterar códdimentos o
CCESS 2007
ne VB
, recor-scolher expres- última
ente no
associ-
igo em ou 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
Single ! 4 bytes Negativos: de -3,402823E38 a
-1,401298E-45
Positivos: de 1,401298E-45 a 3,402823E38
Double # 8 bytes
Negativo: de -1,797693E308 a -4,940656E-324 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).
Módulo Dim (na secção Declarations de um módulo Padrão ou de 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.
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)
Estruturas de Controlo
De decisão
IF... THEN ...
<instruções>
[ELSE]
<instruções>
ENDIF
SELECT CASE ...
CASE ...
<instruções>
case ...
<instruções>
…
END SELECT
De repetição
DO ...
<instruções>
LOOP ...
FOR ... TO ...
<instruções>
NEXT
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 “Texto5” – Vendas Totais
Cor de fundo da caixa de texto “Texto5”
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 (“Texto5”)
Função do VBA Condições para decisão (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
Prompt Parâmetro obrigatório. Possui a mensagem a mostrar ao utilizador. Esta mensa-gem possui no máximo 1024 caracteres. Para se utilizar mais que uma linha na Prompt devemos utilizar a constante do VBA vbCrLf.
Buttons Parâmetro opcional. É uma expressão numérica que é a soma do número e tipo 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.
Title Parâmetro opcional. Texto que aparece na barra de título da MsgBox. Se este parâmetro for omisso, irá aparecer o nome da aplicação – Microsoft Access.
Helpfile Parâmetro opcional. Expressão do tipo string que mostra qual o ficheiro de ajuda (Help) a utilizar. Quando este parâmetro é utilizado, o utilizador terá também que utilizar o parâmetro seguinte.
Context Parâmetro opcional. Ficheiro Help que irá aparecer ao utilizador. Terá que ser uti-lizado com o parâmetro anterior.
Figura III.2.83 Parâmetros da função MsgBox
III.2 CARAC
Os valoIII.2.84)
Co
vbOKOnly
vbOKCan
vbAbortR
vbYesNoC
vbYesNo
vbRetryCa
vbCritical
vbQuestio
VbExclam
vbInforma
vbDefault
vbDefault
vbDefault
vbDefault
vbApplica
vbSystem
vbMsgBox
vbMsgBox
vbMsgBox
CTERÍSTICAS DA PRO
ores que o ):
onstante
y
cel
RetryIgnore
Cancel
ancel
on
mation
ation
tButton1
tButton2
tButton3
tButton4
ationModal
mModal
xHelpButton
xSetForegroun
xRight
Figura
OGRAMAÇÃO EM V
parâmetro
Valor numrico
Núme
0
1
2
3
4
5
16
32
48
64
0
256
512
768
0
4096
16384
nd 65536
524288
a III.2.84 valore
VBA
“Buttons”
mé-
ro e tipo de botõ
Só o bot
Botões O
Botões A
Botões Y
Botões Y
Botões R
Estilo do íco
Mostra o
Mostra o
Mostra o
Mostra o
Botão que tem
Primeiro
Segundo
Terceiro
Quarto b
É modal?
Modal eponder àaplicaçã
Modal eaplicaçõponda à
Valores adici
4 Mostra b
6 EspecificForegro
8 Alinha o
es assumidos
pode ter s
D
ões a mostrar
tão OK
OK e Cancel
Abort, Retry e Ig
Yes, No e Canc
Yes e No
Retry e Cancel
one
o ícone
o ícone
o ícone
o ícone
o focus
o botão tem o fo
o botão tem o fo
o botão tem o fo
botão tem o focu
?
m relação à aplà MsgBox anteão.
m relação ao siões ficam suspe
MsgBox.
onais
botão Help
ca a janela da mound
texto à direita
pelo parâmet
são os segu
Descrição
gnore
cel
ocus
ocus
cus
us
icação. O utilizas de continuar a
stema operativonsas até que o
mensagem com
tro “Buttons”.
45
uintes (figu
ador deve res-a trabalhar na
o. Todas as utilizador res-
o janela de
3
ra
45
A tnaMs
O Bo
Neaptro
Podimfig
54
tabela da fiar um dos bsgBox.
Co
vb
vb
vb
vb
vb
vbvb
Figura III.2.8
exemplo sox, sobretud
este exempplicação queos seguintes
• Promprio?”;
• ButtoNo (vb
rico 64
odemos vermento assoura III.2.86
gura III.2.8botões exist
onstante
bOK
bCancel
bAbort
bRetry
bIgnore
bYes bNo
85 Valor de re
eguinte vaido a aplicaç
plo vamos ue está aberts:
pt, contend
ns, com osbYesNo), o
4 - ), Titl
r a aplicaçãociado ao ev.
5 mostra qutentes na ja
Valo
etorno, após pr
ajudar-nosção dos seu
utilizar a futa no mome
do a mensa
s valores ouo ícone Info
le contendo
o destes pavento click
BA
ual o valor anela de diá
or numérico
1
2
3
4
5
6
7
ressionar botã
s a compreus parâmetr
unção MsgBento. Para t
agem: “Prete
u constantesormação (vb
o a mensage
arâmetros ddo botão d
ASES DE DADOS CO
inteiro de reálogo da ca
Descrição
OK
Cancel
Abort
Retry
Ignore
Yes
No
ão da caixa de
eender melhros.
Box para etal vamos u
ende S A I
s seguintesbInformatio
em: “Fecha
da função Mde comando
OM MICROSOFT AC
etorno ao paixa de men
e diálogo Msg
hor a funçã
encerrar ouutilizar os p
R deste Fo
: Os botõeson ou valor
r Formulário
MsgBox noo (Comando
CCESS 2007
pressio-nsagem
gBox.
ão Msg
não a arâme-
ormulá-
s Yes e r numé-
o”.
proce-o28) na
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
prompt Parâmetro obrigatório. Possui a mensagem a mostrar ao utilizador. Esta mensa-gem possui no máximo 1024 caracteres. Para se utilizar mais que uma linha na Prompt devemos utilizar a constante do VBA vbCrLf.
Title Parâmetro opcional. Texto que aparece na barra de título da InputBox. Se este parâmetro for omitido, irá aparecer o nome da aplicação – Microsoft Access.
default Parâmetro opcional. Texto que aparece predefinido na caixa de texto, normal-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.
XPos Parâmetro opcional. Expressão numérica que define, em twips7, a distância 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
YPos 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 ecrã. Omitido, a janela aparece posicionada a um terço do ecrã, aproximada-mente.
helpFile Parâmetro opcional. Expressão do tipo string que mostra qual o ficheiro de ajuda (Help) a utilizar. Quando este parâmetro é utilizado, o utilizador terá também que utilizar o parâmetro seguinte.
context Parâmetro opcional. Ficheiro Help que irá aparecer ao utilizador. Terá que ser 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
dbLangGeneral Inglês, Alemão, Francês, Português, Italiano, e Espanhol Moderno
dbLangArabic Árabe
dbLangCyrillic Russo
dbLangCzech Checo
dbLangDutch Alemão
dbLangGreek Grego
dbLangHebrew Hebraico
dbLangHungarian Húngaro
dbLangIcelandic Islândia
dbLangNordic Linguagens Nórdicas (Motor Base de Dados da 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 Recordsets
Source
Constantes
Vantagens
Inconvenientes
Table dbOpenTable Acesso directo à tabela da BD;
Permite a utilização de índices (Indexes);
A procura é rápida;
Pode actualizar registos na tabela subjacente.
Refere-se exclusivamente a uma única tabela da base de dados;
Só procura através dos índices criados, utilizando para isso o método “Seek”;
Não limita nº registos.
Dynaset dbOpenDynaset Pode seleccionar registos e campos específicos;
Pode usar partes de instru-ções em SQL;
Permite pesquisas por qualquer campo (utilizando o método “FIND”).
As pesquisas são mais lentas que no tipo table;
Não pode fazer uso dos índices (Indexes).
Snapshot dbOpenSnapshot As mesmas vantagens do tipo Dynaset
Só de leitura
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 MODEL
tectura.Univers
Desta fqualqueDB15 (figtipo de d
A metodBasic. ção oriesoft Offi
15 A tecnpor comporigem.
LO DE OBJECTOS N
Trata-se dsal Data Ac
forma, qualer origem dgura III.3.39dados, esta
dologia ADEsta pode entadas porice, em part
ologia OLE Dponentes de b
NO MICROSOFT AC
e uma metoccess).
quer métodde dados. E9) da Microando relacio
Figura III.3.
DO não é dser utilizadr objectos, ticular pelo
DB – Object Lbaixo nível, qu
CCESS 2007/VBA
odologia un
do de acesEsta metodosoft, com oonados ou n
39 Arquitectur
omínio exca por muitabem como Microsoft A
Linking and Eue permitem a
niversal de a
so a dadosologia reco
o qual é posnão, de uma
ra OLE DB e
clusivo de uas outras linpor todas a
Access 2007
Embedding facesso a dad
acesso a da
s poderá seorre ao parassível acedea forma ma
ADO
uso por parnguagens das aplicaçõ7.
for Databasesdos, qualquer
50
ados (UDA
er usado poadigma OLer a qualquis rápida.
rte do Visude programaões do Micro
s – é composque seja a su
7
–
or LE er
ual a-o-
sta ua
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 objectos não serão objecto de estudo mais apro-fundado neste manual.
3.2.3 Objectos ADO no Access 2007
Um objecto ADO fornece propriedades, eventos, métodos e colecções. Assim, após ter criado um objecto ADO e armazenado o objecto numa variável (variável objecto), podemos usar essa variável para aceder às propriedades, executar os métodos ou aceder aos elementos das colec-ções desse objecto.
De seguida, são apresentados alguns exercícios que manipulam os princi-pais objectos da metodologia ADO, tais como: o objecto “Connection”, o objecto “Command” e o objecto “Recordset”.
Objecto “Connection”
Criar um Objecto ADO usando a instrução DIM
Como já referenciado, para abrir uma base de dados, neste caso especí-fico, no Microsoft Access 2007, de uma forma programática, utiliza-se o objecto “Connection” e a propriedade “ConnectionString”. Nesta situação necessitamos do motor de base de dados Jet, para que através do OLE BD se possa dizer que quem providencia o acesso à base de dados é o
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 511
Jet, antes de abrir o objecto “Connection”. Para isso utiliza-se a proprie-dade “Provider” deste objecto, especificando a string “ Microsoft Jet 4.0 OLE DB Provider”, como a seguir se demonstra:
Dim conexão as ADODB.Connection Set conexão = New ADODB.Connection Conexão.connectionstring = “Provider = Microsoft.jet.OLEDB.4.0; Data Source = c:\livro\Editora.mdb”
É definida uma variável conexão para a ligação. Com o comando Set atri-buímos à variável conexão uma nova ligação. De seguida, à ligação cone-xão definimos qual a nossa “ConnectionString” para abrir a base de dados “Editora.Mdb” como se visualiza no procedimento “Sub Form_ Load()” (figura III.3.42).
Figura III.3.42 Abertura da base de dados com o método ADO
Usar a instrução “CreateObject” para criar um Objecto ADO
Quando se utiliza a instrução “CreateObject” as alterações para abertura do objecto são: Dim conexão as ADODB.Connection Set conexão = CreateObject("ADODB.Connection")
Podemos também utilizar as propriedades “Passord” e “Username”, como a seguir se visualiza:
Dim conexão as ADODB.Connection Set conexão = New ADODB.Connection Conexão.connectionstring = “Provider = Microsoft.jet.OLEDB.4.0; Password = 1234; Persist Security Info=True=True; User ID= AntonioAbreu; Data Source = c:\livro\Editora.mdb”
Perante este código de programação, só será aberta a base de dados com o nome de utilizador “AntonioAbreu” e Password “1234”.
512 BASES DE DADOS COM MICROSOFT ACCESS 2007
Neste exercício concreto estamos perante uma base de dados do Micro-soft Access, aberta no Access 2007, e reconhecida como base de dados corrente. Como tal podemos utilizar o objecto “CurrentProject” para atri-buir a base de dados a uma variável objecto e poder abri-la (figura III.3.43).
Figura III.3.43 Abertura da BD com o objecto “CurrentProject
Este objecto apresenta várias colecções que contêm objectos “AccessObject”17 específicos da base de dados actual do Microsoft Access 2007, como se podem observar na tabela seguinte:
Colecções Tipo de Objecto
AllForms Todos os Formulários
AllReports Todos os Relatórios
AllMacros Todas as Macros
AllModules Todos os Módulos
Figura III.3.44 “Colecções” e “AccessObject” do objecto “CurrentProject”
Objecto “Command”
Este objecto permite criar consultas, recorrendo a instruções de SQL. Para tal deve recorrer-se à propriedade “CommandText” e colocar as instru-ções em SQL pretendidas. De seguida, deve atribuir-se à propriedade “ActiveConnection” o valor do objecto “Connection” e, finalmente,
17 Os objectos “AccessObject” representam os vários objectos que constituem o Microsoft Access 2007, tais como Formulários, Relatórios, Macros, …, etc. Por exemplo um “AccessObject” que represente um Formulário é membro da colecção “AllForms”, que é uma colecção dos objectos “AccessObject” contidos na base de dados actual.
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 513
através do método “Execute” do objecto em questão dá-se ordem de exe-cução da consulta (figura III.3.45).
Este exercício tem por objectivo alterar um valor concreto num determi-nado campo, quando a condição estabelecida for satisfeita, recorrendo a instruções SQL e utilizando o objecto “Command” (figura III.3.45). A ins-trução SQL utilizada para esta situação é a seguinte: UPDATE…SET. Esta instrução permite através do SET atribuir um valor a um campo e a instru-ção UPDATE grava essa alteração (figura III.3.45).
Figura III.3.45 Objecto “Command” com a instrução em SQL – UPDATE…SET
Resultado (figura III.3.46, III.3.47, III.3.48).
Ao pressionar o botão “Alterar dados no Autor com UPDATE…SET” (fi-gura III.3.48) obtemos o seguinte resultado:
Antes da aplicação da instrução em SQL:
Figura III.3.46 Extracto da tabela “Autores”
Depois da aplicação da instrução em SQL:
Figura III.3.47:Extracto da tabela “Autores”
514 BASES DE DADOS COM MICROSOFT ACCESS 2007
Figura III.3.48 Formulário “Livros por Autor”
Recorrendo novamente ao objecto “Command” e a uma nova instrução SQL – INSERT –, neste exercício terá a possibilidade de acrescentar um novo registo numa determinada tabela da base de dados (figura III.3.49), como a seguir se demonstra:
Pretende-se acrescentar um novo registo na tabela Autores, com os seguintes dados: Nome – ‘António Américo Sá’, Morada – ‘Rua do Almada’, Código Postal – ‘4200-200’ e Nacionalidade – Portuguesa. Aplicando então a instrução Insert INTO…. Value, o código será o seguinte:
Figura III.3.49 Objecto “Command” com a instrução em SQL – INSERT INTO … Value
Resultado:
III.3 MODELO DE OBJECTOS NO MICROSOFT ACCESS 2007/VBA 515
Figura III.3.50 Extracto da tabela “Autores”
Objecto “Recordset”
O objecto “Recordset” é uma representação dos registos de uma tabela numa base de dados baseada no motor Microsoft Jet Database, ou em registos resultantes de uma pesquisa (consulta). Para abrir um conjunto de registos (“Recordset”) utiliza-se o método “Open” do objecto “Recordset”, obedecendo à seguinte sintaxe:
Recordset.Open Fonte, ActiveConnection, CursorType
Fonte: Um objecto Command, uma instrução SQL, nome de uma tabela ou consulta;
ActiveConnection: O objecto “Connection” activo;
CursorType: Constante que especifica o tipo de cursor18 a utilizar, quando o objecto “Recordset” é aberto.
18 Os cursores representam as várias funcionalidades que permitem trabalhar com um conjunto de registos, existindo quatro tipos: Dynamic, Keyset, static e Forward-only. Por omissão o cursor adoptado é o Forward-Only, quando não mencionado outro.
51
Vana
Apa tse
CoADrecmé
Pova
F
Po“Refe
6
amos entãoa arquitectur
pós ter defintodas as su
eguinte (figu
F
omo se vê DO com o curso compétodos da v
odemos atrriável “regi
Figura III.3.52
odemos taRecordset”, ectuar uma
analisar o ra ADO.
nido uma vauas proprie
ura III.3.51):
Figura III.3.51
na figura, nome de
pletar teremvariável obje
ribuir valoreisto” (figura
2 Atribuição de
ambém expor exemdeterminad
seguinte ex
ariável objeedades, mé
Objecto “Rec
é definida“registo” e
mos acessoecto “Recor
es às propa III.3.52).
e valores às pr“R
xecutar umplo, abrir oda tarefa ou
BA
xercício rela
cto “Recordtodos e ev
cordset”, méto
uma variáe em seguio à relação rdset”.
riedades d
ropriedades dRegisto”
m determio conjunto u função (fig
ASES DE DADOS CO
ativo ao ob
dset” no ADentos, com
odos e proprie
ável objectoida atravésde todas a
o “Record
do objecto “Re
nado métde registos
gura III.3.53
OM MICROSOFT AC
bjecto “Reco
DO, temos mo se vê na
edades
o “Recordss da activaças propried
dset” traduz
cordset” na v
odo do os pretendid3).
CCESS 2007
ordset”
acesso a figura
set” do ção do ades e
zida na
variável
objecto do para
III.3 MODEL
Figura I
Um dosregistos
O “Criténome dparâmelhando por ond“SearchconformadSear
Vamos objecto
Este experante
19 Quando
LO DE OBJECTOS N
III.3.53 Execu
s métodos ims é o métod
Records
ério” represedo campo, oetro obrigató
em conjunde começahDirection”me os segrchBackwa
então anal“Recordse
xercício teme a introduçã
Fig
o o valor a pro
NO MICROSOFT AC
ução do métod
mportanteso FIND. Es
set.Find Cr
enta uma so operador ório. Já o
nto com o r a procura”, também guintes valrd – para tr
lisar o seguet” na arquit
m por objecão do seu c
gura III.3.54 F
ocurar é alfan
CCESS 2007/VBA
do “Open” do o
do objectote método p
itério, Skip
tring que cde comparparâmetro parâmetro a (exemplonão obrigaores: adSerás.
uinte exerctectura ADO
ctivo indicarcódigo.
Formulário de l
umérico, deve
objecto “Reco
o “Recordsepossui a se
pRows, Sea
contém a insração e o v
“SkipRow“SearchDi
o, registo aatório, permearchForw
cício relativoO.
r os livros q
livros escritos
erá estar entre
ordset” na var
et” que permguinte sinta
archDirecti
strução quevalor a proc
ws” é facultirection”, ea registo). Omite orientaward – par
o ao Métod
que um aut
por autor
e plicas.
51
riável “Registo
mite procuraaxe:
ion
e especificacurar19. É utativo, traba
especificandO parâmet
ar a procurra a frent
do “FIND” d
tor escreve
7
o”
ar
o m a-do ro ra, te;
do
u,
518 BASES DE DADOS COM MICROSOFT ACCESS 2007
Após clicar no botão “Procura” do formulário obtem-se o seguinte resul-tado:
Figura III.3.55 Formulário com resultado da procura com método – FIND
O código de programação para realizar esta procura encontra-se no pro-cedimento seguinte:
Figura III.3.56 Pesquisa com o método FIND
III.3 MODEL
Utilizandmentos guinte:
Neste cmos ao(FieldNnada na
Figu
LO DE OBJECTOS N
do o mesmda colecç
Figura III.3.5
código de po elemento
Name = Noma variável n
ura III.3.58 Ele
Fi
NO MICROSOFT AC
mo recurso ão do obje
57 Elemento d
programação da coleme), e à suome, cujo r
emento da cole
igura III.3.59 R
CCESS 2007/VBA
(completarecto “Recor
da colecção “F
ão do eventecção “Fielua propriedresultado é
ecção “Fields
Resultado do
r), podemordset”, com
Fields” com o
to “Load” dlds” com
dade “Valueo seguinte
s” com o nome
procedimento
os aceder amo se vê n
nome “FieldN
da figura IIIo nome “
e” sendo lid(figura III.3
e “FieldName
o anterior
51
a outros elena figura s
Name”
.3.58 acede“FieldNameda e armaze3.59):
” = ‘NOME’
9
e-e-
e-e” e-
III.4 Transição da Metodologia DAO para
ADO
Há que tirar vantagens do modelo de objectos ADO e das suas caracterís-ticas, de forma a melhorar a velocidade e a funcionalidade das bases de dados.
Não devemos fazer o salto de uma metodologia para a outra (DAO – ADO), por ser mais fácil, estar na moda, ou porque simplesmente a Micro-soft entende ser a arquitectura de vanguarda. Devemos fazê-lo porque a constante evolução dos mercados e tecnologias obrigam que cada vez mais estejamos bem preparados e em poder de tecnologia capaz de pro-mover a eficiência, de forma a responder em tempo real às exigências de mercado. A arquitectura ADO permite escrever código de acesso a dados de uma forma mais simples e rápida, diminuindo assim os tempos de aces-so aos dados e consequentemente a diminuição dos tempos de resposta.
Como se vê, esta arquitectura oferece um conjunto de vantagens em rela-ção à arquitectura DAO, incluindo até em relação ao modelo de objectos, que neste caso é bem mais simples e eficiente quer a nível de bases de dados locais quer a nível de bases de dados remotas.
522 BASES DE DADOS COM MICROSOFT ACCESS 2007
Figura III.4.1 Modelo de objectos DAO versus ADO – comparação
De facto, a metodologia ADO possui formas equivalentes para a maior parte das funcionalidades encontradas na metodologia DAO, permitindo assim uma fácil migração dos processos de uma metodologia para a outra. Por exemplo, o método ADO agrega num só as várias funcionalidades de cinco métodos do DAO (FindFirst, FindNext, FindPrevious, FindLast e Seek). Esse método é o FIND (figura III.3.56). Ao utilizar um pequeno conjunto de parâmetros, este método consegue reproduzir grande parte das funcionalidades do modelo DAO. É um facto que não consegue suportar todos os aspectos inerentes aos cinco métodos, mas consegue realizar tudo aquilo que é necessário, como se demonstra através do código de programação dos procedimentos seguintes (procura segundo um determinado critério o primeiro e os próximos registos que satisfaçam o critério estabelecido):
III.4 TRANSIÇÃO DA METODOLOGIA DAO PARA ADO 523
Método FindFirst e FindNext do modelo DAO: Private Sub PesqAutorNomes() Dim db As DAO.Database Dim rs As DAO.Recordset Dim str As String Dim st As String Dim stringactual As String st = "Nome like '" & Texto27 & "*" & "'" str = "SELECT CódAutor, Nome, CodPostal FROM autores WHERE CodPostal like '4800*' " Set db = DBEngine(0)(0) Set rs = db.OpenRecordset(str, dbOpenDynaset) rs.MoveLast MsgBox rs.RecordCount MsgBox st rs.FindFirst st Do Until rs.NoMatch stringactual = stringactual & rs.Fields(0) & " - " & rs.Fields(1) & vbCrLf rs.FindNext st Loop If stringactual = "" Then MsgBox "não existe o Autor pretendido com esse código" Else MsgBox stringactual End If End Sub
Método Find do modelo ADO: Private Sub Procura_Click() total = "" maiortitulo = 65 Set conexao = CurrentProject.Connection Set cmd = New Command Set tabe = New Recordset str = "SELECT CódAutor, Nome, Livros.ISBN,Titulo,DataEdição FROM Autores,[Autores/Livro],Livros" & _ "WHERE autores.CódAutor=[Autores/Livro].CodAutor and [Autores/Livro].ISBN=Livros.ISBN" tabe.Open str, conexao st = "CódAutor=" & (Texto2) tabe.Find st, , adSearchForward If Not tabe.EOF Then Texto12 = tabe.Fields("Nome") Lista6.RowSourceType = "Value List" Lista6.AddItem ("ISBN " & " | " & "Titulo" & " | " & "DataEdição") Do While Not tabe.EOF traços = "" t = 0 Lista6.AddItem (tabe.Fields("ISBN") & "| " & titu & "|" &
tabe.Fields("DataEdição"))
524 BASES DE DADOS COM MICROSOFT ACCESS 2007
tabe.Find st, 1 Loop Else MsgBox "Não se encontraram Autores com Livros escritos" End If tabe.Close conexao.Close End Sub
A metodologia ADO significa novas funcionalidades no modelo de objectos e uma crescente eficiência/rapidez no acesso a Bases de Dados remotas ou locais, apresentando, assim, razões suficientes para acreditar que a passagem da metodologia DAO para a metodologia ADO poderá ser uma realidade a ter em consideração.
ANEXO I
Glossário de Abreviaturas 1FN Primeira Forma Normal 2FN Segunda Forma Normal 3FN Terceira Forma Normal 4FN Quarta Forma Normal 5FN Quinta Forma Normal ANSI/SPARC American National Standards Institute/Standards Planning
And Requirements Committee BI Business Intelligence BLOB Binary Large Objects CAD/CAM Computer-Aided Manufacturing/Computer-Aided Design CERN Conseil Européen pour la Researche Nucléaire CGI Common Gateway Interface CLI Call Lever Interface CLOB Character Large Objects CODASYL Conference On Data Systems Languages CPU Central Processor Unit CRISP-DM Cross Industry Standard Process for Data Mining CRM Customer Relationship Management DBMS DataBase Management Systems DBTG Data Base Task Group DDL Data Definition Language DER Diagrama Entidade-Relacionamento DML Data Manipulation Language DSS Decision Support Systems EIS Executive Information Systems E-R Entidade-Relacionamento ERP Enterprise Resource Planning ES Expert Systems
FNBC Forma Normal de Boyce-Codd HTML Hyper Text Mark-up Language ICAM Integrated Computer-Aided Manufacturing IDMS Integrated Database Management System IMS Information Management System KMS Knowledge Management System MIS Management Information System MM Multi Media MOLAP Multidimensional OLAP ODMG Object Database Management Group OIS Office Information Systems OLAP On-line Analytical Processing OLE Object Linking and Embedding OLTP On-line Transaction Processing PS Processing Systems PSM Persistent Stored Models QBE Query By Example ROLAP Relational OLAP SBD Sistema de Bases de Dados SCM Supply Chain Management SDL Storage Definition Language SEMMA Sample, Explore, Modify, Model, Assess SEQUEL Structured English Query Language SGBD Sistema de Gestão de Bases de Dados SIG Sistema de Informação Geográfica SIS Strategic Information Systems SI/TI Sistemas e Tecnologias de Informação SQL Structured Query Language VBA Visual Basic for Applications VBE Visual Basic Editor VDL View Definition Language WYSIWYG What You See Is What You Get XME eXtensible Markup Language
ANEXO II
Funções do VBA Como já referimos ao longo deste livro, as funções são procedimentos, em Visual Basic for Application, que devolvem um determinado valor. Em seguida é apresentada uma lista com as principais funções do Visual Basic for Application.
Abs Retorna o valor absoluto de qualquer expressão numérica.
Sintaxe: Abs(expressão numérica)
Asc
Retorna o código numérico ASCII do primeiro caracter da expressão alfanumérica.
Sintaxe: Asc(expressão alfanumérica)
Atn Retorna o arco-tangente da expressão numérica.
Sintaxe: Atn(expressão numérica)
Avg Retorna a média de um conjunto de valores numéricos.
Sintaxe: Avg(valores numéricos)
CCur
Converte uma expressão numérica num tipo de dado monetário (Currency).
Sintaxe: CCur(expressão numérica)
CDbl
Converte uma expressão numérica num tipo de dado de precisão dupla (Double).
Sintaxe: CDbl(expressão numérica)
CHr
Retorna o caracter ASCII correspondente à expressão numérica.
Sintaxe: CHr(expressão numérica)
CInt
Converte uma expressão numérica num tipo de dado inteiro (Integer).
Sintaxe: CInt(expressão numérica)
CLng
Converte uma expressão numérica num tipo de dado inteiro longo (Long Integer).
Sintaxe: CLng(expressão numérica)
CSng
Converte uma expressão numérica num tipo de dado de precisão simples (Single).
Sintaxe: CSng(expressão numérica)
Date Retorna a data corrente do sistema.
Sintaxe: Date
DateSerial Converte uma data num número que a representa.
Sintaxe: DateSerial(ano,mês,dia)
DateValue Retorna um número que representa a data.
Sintaxe: DateValue(data)
Fix
Retorna a parte inteira de um número, eliminando a sua parte fraccionária.
Sintaxe: Fix(expressão numérica)
Int Converte um valor em número inteiro.
Sintaxe: Int(expressão numérica)
InStr
Retorna a posição da primeira ocorrência de caracteres de uma variável string localizada numa outra.
Sintaxe: InStr(posição-início-procura,variável-a-ser-procurada,variável-onde-procura)
LCase Converte uma string em letras minúsculas.
Sintaxe: LCase(expressão string)
LoadPicture Carrega desenhos para um controlo.
Sintaxe: LoadPicture(nome do ficheiro)
LTrim Suprime espaços à esquerda de uma variável string.
Sintaxe: LTrim(string)
Minute
Retorna um número entre 0 e 59 que representa o minuto da hora correspondente ao número especificado.
Sintaxe: Minute(número)
RTrim Suprime espaços à direita de uma variável.
Sintaxe: RTrim(string)
Seek Retorna a posição no ficheiro especificado.
Sintaxe: Seek(número do ficheiro)
Space Retorna uma cadeia de espaços.
Sintaxe: Space(nº de espaços em branco)
Spc Desloca um número de espaços especificados.
Sintaxe: Spc(nº de espaços)
Sqr Retorna a raiz quadrada de um número.
Sintaxe: Sqr(número)
Str Converte um número em expressão string.
Sintaxe: Str(número)
Time Retorna a hora corrente no formato hh:mm:ss.
Sintaxe: Time
TimeSerial Retorna um número que representa a hora corrente.
Sintaxe: TimeSerial(hora,minutos,segundos)
TimeValue
Retorna um número que representa a hora fornecida pela função Time.
Sintaxe: TimeValue(Time)
UCase Converte uma string em letras maiúsculas.
Sintaxe: UCase(expressão string)
Val Retorna o valor numérico de uma string.
Sintaxe: Val(variável)
BIBLIOGRAFIA
[Almeida, 1997] Almeida, José M.F., “Para uma história da Informática”, Sistemas de Informação, 6, 1997 (27-46) [Amaral e Santos,1997] Amaral, Luís e Santos, Maribel, “Modelos de estádios de crescimento”, Sistemas de Informação, 7, 1997 (41-59) [Boctor, 1999] Boctor, David, Microsoft Office 2000 Visual Basic for Applications Fundamentals, Microsoft Press, 1999 [Campos, Vilar e Lúcio, 1999] Campos, Luís e Vilar, Sandro e Lúcio, Levi, Programação em Visual Basic 6, FCA, 1999 [Carvalho e Amaral, 1993] Carvalho, João Álvaro e Amaral, Luís, “Matriz de actividades: um enquadramento conceptual para as actividades de Planeamento e Desenvolvimento de Sistemas de Informação”, Sistemas de Informação, 1, 1993 (37-48) [Chen, 1983] Chen, Peter P., “English Sentence Structure and Entity-Relationship Diagrams”, Elsevier Science Publishing, 1983 (128-149) [Chen, 1976] Chen, Peter P., “The Entity-Relationship Model – Toward a Unified View of Data”, ACM Transactions on Database Systems, Vol. 1, Nº1, March 1976 (9-36) [Chen et al, 1999] Chen, Peter P., Thalheim, B. and Wong, L. Y., “Future Directions of Conceptual Modelling”, 1999 Obtido em: http://link.springer.de/link/service/series/0558/bibs/1565/15650287.htm [Chiavenato, 1992] Chiavenato, Idalberto, Administração: Teoria, processo e prática, Makron Books, 1992 – 2ª Edição [Codd] Codd, E. F. et all, “Providing OLAP to User-Analysts: an IT mandate”, Distributed by Arbor Software, 800-858-1666 and Comshare, 800-922-7979 Obtido em: http://www.hyperion.com/products/whitepapers/ [Codd, 1970] Codd, E. F., “A relational Model of Data for Large Shared Data Bank”, Communications of the ACM, Volume 13 – Number 6, June 1970, (377-387) [Codd, 1972] Codd, E. F., “Relational Completeness of Data Base Sublanguages”. Data Base Systems, Courant Computer Science Symposia, series 6. Englewood Cliffs N. J. Prentice Hall, 1972 [Codd, 1982] Codd, E. F., “Relational Database: A Practical Foundation for Productivity”, Communications of the ACM, Volume 25 – Number 2, February 1982 (109-117)
[Connoly e Beg, 1982] Connoly, Thomas e Begg, Carolyn, Database Systems – A practical approach to Design, Implementation and Management, Addison-Wesley, 1998 – 2nd Edition [Damas, 1999] Damas, Luís, SQL, FCA, 1999 [Date, 2004] Date, C. J., An Introduction to Database Systems, Pearson International Editions, 2004 – 8th Edition [Dobson, 1999] Dobson, Rick, Programming Microsoft Access 2000, Microsoft Press, 1999 [Elmasri e Navathe, 2004] Elmasri, Ramez and Navathe, Shamkant B., Fundamentals of Database Systems, Pearson International Editions, 2004 – Fourth Edition [Fayyad et all, 1996] Fayyad, Usama M. Et all, Advances in Knowledge Discovery and Data Mining, AAAAI Press/The MIT Press, 1996 [Hall, 1982] Hall, Richard H., Organizações: Estrutura e processos, Prentice Hall do Brasil, 1982 – 3ª Edição [Hay, 1999] Hay, David C., A Comparison of Data Modelling Techniques, Essential Strategies, Inc, Outubro 1999 Obtido em: http://www.essentialstrategies.com/publications/modeling/compare.htm [Inmon e Chuck, 1984] Inmon, Bill and Chuck,Kelley, “The 12 rules of Data Warehouse for a cliente/server world”, Data Management Review, vol. 4, May 1994, (6-16) [Larose, 2005] Larose, D. T. Discovering Knowledge in Data – An Introduction to Data Mining. Wiley – Interscience, 2005 [Magalhães, 1993] Magalhães, Rodrigo, “A evolução dos Sistemas de Informação na empresa: dos MIS aos desafios da mudança estratégica”, Sistemas de Informação, 1, 1993 (9-31) [Ramkrishnam e Gehrke, 2000] Ramakrishnam, Raghu e Gehrke, Johannes, Database Management Systems, McGraw Hill International Editions, Computer Science Series, 2000 – 2nd Edition [Rob e Coronel, 2002] Rob, Peter e Coronel, Carlos, Database Systems: Design, Implementation, and Management, International Thomson Publishing Company, 2002 – Fifth Edition [Santos et al, 2005] Santos, Manuel; Azevedo, Carla. Data Mining – Descoberta de Conhecimento em Bases de Dados. FCA. 2005.
[Senn] Senn, James A., Analysis and design of Information Systems, McGraw Hill International Editions – Computer Science Series [Serrano] Serrano, António, “Sistemas de Informação numa perspectiva organizacional – da Informação ao conheciemnto”, 1º Encuentro Ibero-Americano de Finanzas y Sistemas de Information [Simpson e Olson, 1997] Simpson, Alan e Olson, Elizabeth, Access 97 for Windows 95/NT, SYBEX, 1997-Fourth Edition [Sousa, 1999] Sousa, Sérgio, Domine a 110% Access 2000, FCA, 1999 [Varajão, 1998] Varajão, João, A arquitectura da gestão de Sistemas de Informação, FCA, 1998 [Viescas, 1997] Viescas, John L., Running Microsoft Access 97, McGraw-Hill, 1997 [Vilar, 2001] Vilar, Jorge, Programação em Access 2000 com VBA, FCA, 2001 [Whitten e Bentley, 1998] Whitten, Jefrey L. e Bentley, Lonnie D., Systems analysis and Design method, McGraw Hill, 1998 – 4th Edition