537

Base de Dados Com Microsoft Access 2007(PT-PT)

Embed Size (px)

Citation preview

Page 1: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 2: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 3: 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

Page 4: Base de Dados Com Microsoft Access 2007(PT-PT)

’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.

Page 5: Base de Dados Com Microsoft Access 2007(PT-PT)

Í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

Page 6: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 7: Base de Dados Com Microsoft Access 2007(PT-PT)

Í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

Page 8: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 9: Base de Dados Com Microsoft Access 2007(PT-PT)

Í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

Page 10: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 11: Base de Dados Com Microsoft Access 2007(PT-PT)

Í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

Page 12: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 13: Base de Dados Com Microsoft Access 2007(PT-PT)

Í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

Page 14: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 15: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 16: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 17: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 18: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 19: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 20: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 21: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 22: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 23: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 24: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 25: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 26: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 27: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 28: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 29: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 30: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 31: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 32: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 33: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 34: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 35: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 36: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 37: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 38: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 39: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 40: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 41: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 42: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 43: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 44: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 45: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 46: Base de Dados Com Microsoft Access 2007(PT-PT)

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”.

Page 47: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 48: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 49: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 50: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 51: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 52: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 53: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 54: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 55: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 56: Base de Dados Com Microsoft Access 2007(PT-PT)

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)

Page 57: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 58: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 59: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 60: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 61: Base de Dados Com Microsoft Access 2007(PT-PT)

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].

Page 62: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 63: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 64: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 65: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 66: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 67: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 68: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 69: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 70: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 71: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 72: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 73: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 74: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 75: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 76: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 77: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 78: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 79: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 80: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 81: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 82: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 83: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 84: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 85: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 86: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 87: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 88: Base de Dados Com Microsoft Access 2007(PT-PT)

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))

Page 89: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 90: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 91: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 92: Base de Dados Com Microsoft Access 2007(PT-PT)

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>);

Page 93: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 94: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 95: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 96: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 97: Base de Dados Com Microsoft Access 2007(PT-PT)

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].

Page 98: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 99: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 100: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 101: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 102: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 103: Base de Dados Com Microsoft Access 2007(PT-PT)

I.3 O MODELO RELACIONAL DE BASES DE DADOS 103

b.

c.

d.

Page 104: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 105: Base de Dados Com Microsoft Access 2007(PT-PT)

I.3 O MODELO RELACIONAL DE BASES DE DADOS 105

b.

ACTIVIDADES DEPARTAMENTOS

PROJECTOS

EMPREGADOS

c.

BANDA

Page 106: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 107: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 108: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 109: Base de Dados Com Microsoft Access 2007(PT-PT)

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.)

Page 110: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 111: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 112: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 113: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 114: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 115: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 116: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 117: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 118: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 119: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 120: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 121: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 122: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 123: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 124: Base de Dados Com Microsoft Access 2007(PT-PT)

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, …

Page 125: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 126: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 127: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 128: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 129: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 130: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 131: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 132: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 133: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 134: Base de Dados Com Microsoft Access 2007(PT-PT)

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)

Page 135: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 136: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 137: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 138: Base de Dados Com Microsoft Access 2007(PT-PT)

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.).

Page 139: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 140: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 141: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 142: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 143: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 144: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 145: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 146: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 147: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 148: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 149: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 150: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 151: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 152: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 153: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 154: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 155: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 156: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 157: Base de Dados Com Microsoft Access 2007(PT-PT)

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]

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

Page 158: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 159: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 160: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 161: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 162: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 163: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 164: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 165: Base de Dados Com Microsoft Access 2007(PT-PT)

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].

Page 166: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 167: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 168: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 169: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 170: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 171: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 172: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 173: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 174: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 175: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 176: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 177: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 178: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 179: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 180: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 181: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 182: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 183: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 184: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 185: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 186: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 187: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 188: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 189: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 190: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 191: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 192: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 193: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 194: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 195: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 196: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 197: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 198: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 199: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 200: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 201: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 202: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 203: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 204: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 205: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 206: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 207: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 208: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 209: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 210: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 211: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 212: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 213: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 214: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 215: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 216: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 217: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 218: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 219: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 220: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 221: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 222: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 223: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 224: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 225: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 226: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 227: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 228: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 229: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 230: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 231: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 232: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 233: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 234: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 235: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 236: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 237: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 238: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 239: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 240: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 241: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 242: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 243: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 244: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 245: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 246: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 247: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 248: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 249: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 250: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 251: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 252: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 253: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 254: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 255: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 256: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 257: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 258: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 259: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 260: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 261: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 262: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 263: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 264: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 265: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 266: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 267: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 268: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 269: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 270: Base de Dados Com Microsoft Access 2007(PT-PT)

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)

Page 271: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 272: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 273: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 274: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 275: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 276: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 277: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 278: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 279: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 280: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 281: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 282: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 283: Base de Dados Com Microsoft Access 2007(PT-PT)

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ã.

Page 284: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 285: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 286: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 287: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 288: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 289: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 290: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 291: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 292: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 293: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 294: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 295: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 296: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 297: Base de Dados Com Microsoft Access 2007(PT-PT)

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ã.

Page 298: Base de Dados Com Microsoft Access 2007(PT-PT)

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ã.

Page 299: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 300: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 301: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 302: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 303: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 304: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 305: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 306: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 307: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 308: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 309: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 310: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 311: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 312: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 313: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 314: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 315: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 316: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 317: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 318: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 319: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 320: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 321: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 322: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 323: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 324: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 325: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 326: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 327: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 328: Base de Dados Com Microsoft Access 2007(PT-PT)

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,

Page 329: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 330: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 331: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 332: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 333: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 334: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 335: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 336: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 337: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 338: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 339: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 340: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 341: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 342: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 343: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 344: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 345: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 346: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 347: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 348: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 349: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 350: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 351: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 352: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 353: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 354: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 355: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 356: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 357: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 358: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 359: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 360: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 361: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 362: Base de Dados Com Microsoft Access 2007(PT-PT)

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”.

Page 363: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 364: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 365: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 366: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 367: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 368: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 369: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 370: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 371: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 372: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 373: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 374: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 375: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 376: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 377: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 378: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 379: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 380: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 381: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 382: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 383: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 384: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 385: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 386: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 387: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 388: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 389: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 390: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 391: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 392: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 393: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 394: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 395: Base de Dados Com Microsoft Access 2007(PT-PT)

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 .

Page 396: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 397: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 398: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 399: Base de Dados Com Microsoft Access 2007(PT-PT)

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”

Page 400: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 401: Base de Dados Com Microsoft Access 2007(PT-PT)

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);

Page 402: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 403: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 404: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 405: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 406: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 407: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 408: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 409: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 410: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 411: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 412: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 413: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 414: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 415: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 416: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 417: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 418: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 419: Base de Dados Com Microsoft Access 2007(PT-PT)

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”

Page 420: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 421: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 422: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 423: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 424: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 425: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 426: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 427: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 428: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 429: Base de Dados Com Microsoft Access 2007(PT-PT)

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á-

Page 430: Base de Dados Com Microsoft Access 2007(PT-PT)

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”

Page 431: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 432: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 433: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 434: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 435: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 436: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 437: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 438: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 439: Base de Dados Com Microsoft Access 2007(PT-PT)

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 –

Page 440: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 441: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 442: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 443: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 444: Base de Dados Com Microsoft Access 2007(PT-PT)

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)”).

Page 445: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 446: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 447: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 448: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 449: Base de Dados Com Microsoft Access 2007(PT-PT)

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 …

Page 450: Base de Dados Com Microsoft Access 2007(PT-PT)

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,

Page 451: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 452: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 453: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 454: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 455: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 456: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 457: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 458: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 459: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 460: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 461: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 462: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 463: Base de Dados Com Microsoft Access 2007(PT-PT)

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”

Page 464: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 465: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 466: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 467: Base de Dados Com Microsoft Access 2007(PT-PT)

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”.

Page 468: Base de Dados Com Microsoft Access 2007(PT-PT)

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”

Page 469: Base de Dados Com Microsoft Access 2007(PT-PT)

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]])

Page 470: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 471: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 472: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 473: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 474: Base de Dados Com Microsoft Access 2007(PT-PT)

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”,

Page 475: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 476: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 477: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 478: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 479: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 480: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 481: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 482: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 483: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 484: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 485: Base de Dados Com Microsoft Access 2007(PT-PT)

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);

Page 486: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 487: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 488: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 489: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 490: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 491: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 492: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 493: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 494: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 495: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 496: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 497: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 498: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 499: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 500: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 501: Base de Dados Com Microsoft Access 2007(PT-PT)

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;

Page 502: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 503: Base de Dados Com Microsoft Access 2007(PT-PT)

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).

Page 504: Base de Dados Com Microsoft Access 2007(PT-PT)

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)

Page 505: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 506: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 507: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 508: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 509: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 510: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 511: Base de Dados Com Microsoft Access 2007(PT-PT)

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”.

Page 512: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 513: Base de Dados Com Microsoft Access 2007(PT-PT)

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”

Page 514: Base de Dados Com Microsoft Access 2007(PT-PT)

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:

Page 515: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 516: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 517: Base de Dados Com Microsoft Access 2007(PT-PT)

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,

Page 518: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 519: Base de Dados Com Microsoft Access 2007(PT-PT)

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-

Page 520: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 521: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 522: Base de Dados Com Microsoft Access 2007(PT-PT)

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):

Page 523: Base de Dados Com Microsoft Access 2007(PT-PT)

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"))

Page 524: Base de Dados Com Microsoft Access 2007(PT-PT)

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.

Page 525: Base de Dados Com Microsoft Access 2007(PT-PT)

ANEXO I

Page 526: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 527: Base de Dados Com Microsoft Access 2007(PT-PT)

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

Page 528: Base de Dados Com Microsoft Access 2007(PT-PT)
Page 529: Base de Dados Com Microsoft Access 2007(PT-PT)

ANEXO II

Page 530: Base de Dados Com Microsoft Access 2007(PT-PT)

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)

Page 531: Base de Dados Com Microsoft Access 2007(PT-PT)

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)

Page 532: Base de Dados Com Microsoft Access 2007(PT-PT)

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)

Page 533: Base de Dados Com Microsoft Access 2007(PT-PT)

BIBLIOGRAFIA

Page 534: Base de Dados Com Microsoft Access 2007(PT-PT)

[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)

Page 535: Base de Dados Com Microsoft Access 2007(PT-PT)

[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.

Page 536: Base de Dados Com Microsoft Access 2007(PT-PT)

[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

Page 537: Base de Dados Com Microsoft Access 2007(PT-PT)