access manual de base de datos , excelente xp

445
Centro Atlântico D ESENHO E I MPLEMENTAÇÃO DE B ASES DE DADOS COM MICROSOFT ACCESS XP

Upload: francisco-barata-pereira

Post on 29-Jun-2015

966 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Access manual de base de datos , excelente xp

Centro Atlântico

DESENHO E IMPLEMENTAÇÃO

DE

BASES DE DADOS

COM

MICROSOFT ACCESS XP

Page 2: Access manual de base de datos , excelente xp
Page 3: Access manual de base de datos , excelente xp

Ana AzevedoAntónio Abreu

Vidal de Carvalho

DESENHO E IMPLEMENTAÇÃO

DE

BASES DE DADOS

COM

MICROSOFT ACCESS XP

Page 4: Access manual de base de datos , excelente xp

Reservados todos os direitos por Centro Atlântico, Lda.Qualquer reprodução, incluindo fotocópia, só pode ser feitacom autorização expressa dos editores da obra.

DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM MICROSOFT ACCESS XPColecção: TecnologiasAutores: Ana Azevedo, António Abreu, Vidal de Carvalho

Direcção gráfica: Centro AtlânticoRevisão: Centro AtlânticoCapa: Paulo Buchinho

© Centro Atlântico, Lda., 2002Ap. 413 - 4764-901 V. N. FamalicãoPorto - LisboaPortugalTel. 808 20 22 21

[email protected]

Fotolitos: Centro AtlânticoImpressão e acabamento: Inova1ª edição: Julho de 2002

ISBN: 972-8426-54-2Depósito legal: 182.646/02

Marcas registadas: todos os termos mencionados neste livro conhecidos como sendo marcas registadas deprodutos e serviços, foram apropriadamente capitalizados. A utilização de um termo neste livro não deveser 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 pelasinstruções contidas no livro nem por endereços Internet que não correspondam às Home-Pagespretendidas.

Page 5: Access manual de base de datos , excelente xp

Agradecemos às nossas famílias peloseu apoio e paciência, durante arealização deste projecto, à empresaFuturSoft e ao nosso editor, Dr. LibórioManuel Silva, pela disponibilidade,sugestões e apoio.

Centro Atlântico
Versão pessoal licenciada para: Luis Pedro Nogueira
Page 6: Access manual de base de datos , excelente xp

OFERTA

Envie um e-mail* [email protected]

para receber os endereços de Internetde onde poderá fazer o download

dos exercícios deste livro.

* O leitor consente, de forma expressa, a incorporação e o tratamento dos seus dados nosficheiros automatizados da responsabilidade do Centro Atlântico, para os fins comerciais eoperativos do mesmo. O leitor fica igualmente informado sobre a possibilidade de exercer osdireitos de acesso, rectificação e cancelamento dos seus dados nos termos estabelecidos nalegislação vigente, na sede do Centro Atlântico, por qualquer meio escrito.

Page 7: Access manual de base de datos , excelente xp

INTRODUÇÃO ....................................................................... 15

PARTE I ....................................................17

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

1.1 Características de um sistema .............................................201.2 A organização vista como um sistema ................................211.3 A Informação ...........................................................................22

1.3.1 Características da informação .......................................221.3.2 A Informação nas organizações .....................................231.3.3 Tipos de informação nas organizações ........................24

1.4 Os Sistemas de Informação Organizacionais ....................251.4.1 Evolução histórica dos Sistemas de Informação .........261.4.2 Planeamento e desenvolvimento de Sistemas de Informação ...........................................281.4.3 A introdução dos Sistemas de Informação nas organizações...................................................................30

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

2.1 As raízes históricas: Ficheiros e Sistemas de Ficheiros ...342.1.1 Gestão de dados nos Sistemas de Ficheiros ..............352.1.2 Dependência dados-aplicações ....................................372.1.3 Redundâncias nos dados ...............................................37

2.2 Sistemas de Bases de Dados .............................................382.2.1 Características de um Sistema de Bases de Dados ..392.2.2 Intervenientes num Sistema de Bases de Dados ........412.2.3 As funções do Sistema de Gestão de BD ....................42

ÍNDICE

Page 8: Access manual de base de datos , excelente xp

CENTRO ATLÂNTICO - DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP8

2.2.4 Arquitectura do SGBD e Independência dos Dados...442.2.5 Linguagens fornecidas pelo SGBD ...............................452.2.6 Classificação dos SGBD‘s .............................................472.2.7 Vantagens e desvantagens dos Sistemas de BD .......48

2.3 Modelos de Bases de Dados ...............................................492.3.1 Modelo hierárquico ..........................................................492.3.2 Modelo em rede ...............................................................512.3.3 O Modelo Relacional .......................................................532.3.4 Novos modelos: Modelos Orientados a Objectos e Extensões ao Modelo Relacional .................................55

2.4 Tendências futuras..................................................................592.4.1 Data Warehouses ............................................................592.4.2 OLAP‘s ..............................................................................622.4.3 Data Mining ......................................................................632.4.4 Integração com a Web ....................................................64

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

3.1 Terminologia Básica ..............................................................683.2 Atributos Chave ......................................................................713.3 Regras de Integridade ...........................................................74

3.3.1 Integridade de Entidade..................................................743.3.2 Integridade Referencial ...................................................74

3.4 Operadores da Álgebra Relacional .....................................753.4.1 O Operador SELECT......................................................753.4.2 O operador PROJECT....................................................763.4.3 O operador PRODUCT...................................................773.4.4 O operador UNION ..........................................................783.4.5 O Operador DIFFERENCE ............................................793.4.6 O Operador INTERSECT................................................803.4.7 O operador JOIN ..............................................................803.4.8 O operador DIVIDE .........................................................82

3.5 SQL – Uma linguagem de bases de dados relacionais ....833.5.1 Definição de dados .........................................................843.5.2 Inserção e actualização de dados .................................873.5.3 Queries com SQL ............................................................89

3.6 As regras de Codd .................................................................92

Page 9: Access manual de base de datos , excelente xp

9ÍNDICE

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

4.1 A importância da modelação de dados ...............................954.2 O modelo Entidade-Relacionamento (E-R) ........................97

4.2.1 Entidades e Atributos ......................................................974.2.2 Relacionamentos ...........................................................1004.2.3 Entidades fracas ............................................................1074.2.4 Entidades compostas ...................................................1074.2.5 Uma comparação de notações ....................................110

4.3 Desenvolvendo um Diagrama E-R..................................... 1114.4 Correspondência entre o modelo E-R e o modelo relacional ...........................................................117

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

5.1 A Importância da Normalização ..........................................1235.2 Dependências funcionais ....................................................1245.3 O processo de normalização ..............................................125

5.3.1 Primeira Forma Normal ................................................1265.3.2 Segunda Forma Normal................................................1295.3.3 Terceira Forma Normal .................................................1305.3.4 Forma Normal de Boyce-Codd ....................................1325.3.5 Quarta e Quinta Formas Normais ................................134

PARTE II ................................................. 137

II.1. MS ACCESS XP.....................................................139

1.1 Definição ...............................................................................1391.2 Características Gerais .........................................................1391.3 Novidades do Microsoft Access XP ..................................1411.4 Novas funcionalidades do Microsoft Access XP ..............1411.5 Iniciar o Access XP ..............................................................144

1.5.1 Opções no menu de arranque do Access XP ............1451.6 Criar uma base de dados no Access XP ..........................146

1.6.1 Criar uma base de dados utilizando o Assistente de base de dados .......................................146

Page 10: Access manual de base de datos , excelente xp

CENTRO ATLÂNTICO - DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP10

1.6.2 Criar uma base de dados sem utilizar o Assistente de base de dados .......................................147

1.7 Os Objectos na janela de uma Base de Dados ..............148

II.2. TABELAS ................................................................151

2.1 Criação de uma tabela ........................................................1512.2 Como criar uma tabela com o Assistente de tabelas ......1532.3 Como criar uma tabela por inserção de dados ................1542.4 Como criar uma tabela sem o Assistente de tabelas ......155

2.4.1 Utilizar o Construtor de Campos ..................................1562.4.2 Escolher tipos de dados ...............................................1572.4.3 Propriedades dos campos ...........................................1572.4.4 Campo chave primária ..................................................165

2.5 Relacionamentos entre tabelas ..........................................1662.5.1 Criação de relacionamentos ........................................1672.5.2 Integridade Referencial .................................................1682.5.3 Tipos de relacionamentos.............................................1692.5.4 Alteração da estrutura de relacionamentos ................169

2.6 A folha de dados de uma tabela .........................................1702.7 Importação e Exportação de dados...................................172

2.7.1 Importar dados ...............................................................1722.7.2 Exportar dados...............................................................173

2.8 Exercício Guiado ..................................................................175

II.3. CONSULTAS ............................................................185

3.1 Definição ...............................................................................1853.2 Razões para aplicar uma consulta .....................................1863.3 Criação de uma consulta .....................................................1873.4 Como criar uma consulta com o Assistente ......................1883.5 Como criar uma consulta sem o Assistente ......................189

3.5.1 Descrição da janela para a criação de uma consulta1903.5.2 Caracterização da grelha da consulta .........................1913.5.3 Inserção de campos nas consultas ..............................1913.5.4 Visualizar a consulta através da folha de dados ........1923.5.5 Especificar o tipo de ordenação ..................................1933.5.6 Valores superiores .........................................................194

3.6 Definição de critérios em consultas ...................................194

Page 11: Access manual de base de datos , excelente xp

11ÍNDICE

3.7 Criação de consultas com base em várias tabelas .........1963.8 Consultas com parâmetros .................................................1983.9 Criar campos calculados .....................................................1993.10 Consultas de Referência Cruzada ...................................203

3.10.1 Criar uma Consulta Tabela de referência cruzada com um Assistente .......................................2043.10.2 Como criar uma consulta de referência cruzada sem o Assistente .........................................................2053.10.3 Especificar os cabeçalhos de colunas .....................206

3.11 Consultas de Acção ...........................................................2073.11.1 Consulta criar tabela ....................................................2073.11.2 Consulta eliminação ....................................................2093.11.3 Consulta acrescentar ...................................................2103.11.4 Consulta actualização .................................................211

3.12 Consultas SQL ...................................................................2123.12.1 Como visualizar ou modificar uma declaração do SQL .....................................................2133.12.2 Consultas de SQL específicas ...................................2133.12.3 Utilização de Subconsultas ........................................216

3.13 Exercício Guiado ................................................................217

II.4. FORMULÁRIOS .........................................................229

4.1 Definição ...............................................................................2294.2 Aplicação de formulários .....................................................2294.3 Modos de Criação de formulários ......................................2304.4 Formulários com “Formulários Automáticos” ....................231

4.4.1 Formulário Automático: Colunas ..................................2314.4.2 Formulário Automático: Tabelas...................................2314.4.3 Formulário Automático: Folha de Dados ....................232

4.5 Formulários usando os Assistentes ...................................2334.5.1 Como criar um novo formulário com o Assistente .....233

4.6 Formulários usando a vista de estrutura ............................2354.6.1 Como criar um formulário sem o Assistente ...............2354.6.2 Inserir campos na área do formulário ..........................236

4.7 Secções do formulário .........................................................2374.7.1 Alterar o tamanho de uma secção ...............................2384.7.2 Seleccionar as propriedades de uma secção ou do próprio formulário ................................................238

4.8 Controlos num Formulário ...................................................239

Page 12: Access manual de base de datos , excelente xp

CENTRO ATLÂNTICO - DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP12

4.8.1 Controlos dependentes, independentes e de cálculo 2394.8.2 Criar outros controlos usando a Caixa de Ferramentas ....................................................2404.8.3 Criar controlos que calculem valores...........................2414.8.4 Criar controlos tipo etiqueta .........................................2414.8.5 Alterar as propriedades de um controlo já existente .2424.8.6 Grupo de Opções ..........................................................2434.8.7 Caixa de Listagem e Caixa de Combinação .............2484.8.8 Subformulários ...............................................................2534.8.9 Cálculos num formulário ................................................2564.8.10 Cálculos num subformulário .......................................2574.8.11 Botões de comandos ..................................................2594.8.12 Quebras de página ......................................................2624.8.13 Moldura de objecto dependente e independente ....262

4.9 Efeitos especiais de construção ........................................2654.9.1 Como obter uma grande selecção de cores ..............2664.9.2 Formatação dos controlos do Formulário ...................2664.9.3 Caixas de informação para os controlos ....................267

4.11 Impressão e gravação de um formulário .........................2684.12 Exercício Guiado ................................................................269

II.5. RELATÓRIOS ............................................................279

5.1 Definição ...............................................................................2795.2 Aplicação de Relatórios ......................................................2795.3 Modos de Criação de Relatórios .......................................2805.4 Relatório com Relatórios Automáticos ..............................282

5.4.1 Relatório Automático: Colunas .....................................2825.4.2 Relatório Automático: Tabelas......................................283

5.5 Relatórios usando os Assistentes ......................................2835.5.1 Como criar um relatório com o Assistente ..................2845.5.2 Como criar um relatório com o Assistente de etiquetas ..................................................287

5.6 Relatórios usando a vista de estrutura ...............................2915.6.1 Como criar um relatório sem o Assistente ..................291

5.7 Secções do Relatório ..........................................................2925.8 Controlos em Relatórios ......................................................2945.9 Ordenação e Agrupamento .................................................295

5.9.1 Ordenação de dados ....................................................2955.9.2 Agrupar os dados ..........................................................296

Page 13: Access manual de base de datos , excelente xp

13ÍNDICE

5.10 Impressão de um relatório ................................................2975.11 Exportar Relatórios para o MSWord e MSExcel ............2985.12 Exercício Guiado ................................................................299

II.6. PÁGINAS DE ACESSO A DADOS ..................................305

6.1 Definição ...............................................................................3056.2 Utilização das Páginas de acesso a dados .....................3056.3 Modos de Criação de Relatórios .......................................3066.4 Criar Páginas com Página Automática .............................3076.5 Criar Páginas com o Assistente .........................................3086.6 Páginas usando a vista de estrutura ..................................311

6.6.1 Como criar uma página sem o Assistente ..................3116.6.2 Secções da Página .......................................................3136.6.3 Adicionar um tema a uma página ................................3146.6.4 Agrupar os dados de uma página ...............................315

6.7 Ver a página de acesso a dados .......................................3166.8 Tornar disponíveis as páginas de acesso a dados ..........3176.9 Exercício Guiado ..................................................................320

II.7. MACROS ................................................................327

7.1 Definição ...............................................................................3277.2 Acções e argumentos ..........................................................3277.3 Criar uma macro ...................................................................3287.4 Executar e Testar uma macro .............................................330

7.4.1 Executar uma macro a partir da janela BD .................3307.4.2 Executar uma macro com recurso a um botão de comando .........................................................3317.4.3 Testar uma macro passo-a-passo ...............................332

7.5 Criar Grupos de Macros ......................................................3337.6 Criar Macros Condicionadas ..............................................3357.7 Atribuir Macros a Acontecimentos ......................................336

7.7.1 Atribuir uma macro a um acontecimento .....................3377.7.2 Criar uma nova macro para um acontecimento .........338

7.8 Exercício Guiado ..................................................................340

Page 14: Access manual de base de datos , excelente xp

CENTRO ATLÂNTICO - DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP14

PARTE III ................................................ 345

III.1. VBA - MICROSOFT VISUAL BASIC FOR APPLICATIONS 347

1.1 Introdução à Programação em VBA ..................................3471.2 Características da programação em VBA ........................347

1.2.1 Programação Orientada por Objectos ........................3471.2.2 O ambiente de desenvolvimento do VBA ...................3481.2.3 Procedimentos e Módulos ............................................3581.2.4 Janela do Editor de Visual Basic – VBE Windows ...3671.2.5 Conceitos e Estruturas de Controlo em VBA .............372

ANEXO I. GLOSSÁRIO DE ABREVIATURAS ...............................413

ANEXO II. FUNÇÕES DO VBA.............................................417

ANEXO III. PROTECÇÃO JURÍDICA DAS BASES DE DADOS

ELECTRÓNICAS (POR MANUEL OEHEN MENDES) ....423

BIBLIOGRAFIA ....................................................................439

Page 15: Access manual de base de datos , excelente xp

Introdução A ideia de escrever este livro surgiu do facto de nós, os seus autores, com responsabilidades e diversos projectos desenvolvidos com estes conceitos e tecnologias, quer a nível académico quer a nível profissio-nal, sentirmos a falta de um livro que englobasse todo o processo de concepção e implementação de um sistema de base de dados. Ao pensar na sua elaboração, pretendemos atingir um vasto leque de leitores. Em primeiro lugar, pretendemos abranger leitores no contexto das PME’s portuguesas, dada a importância da utilização dos sistemas de bases de dados nesta área. Por outro lado, entendemos também que o nosso trabalho tem as características necessárias para que possa ser utilizado como ferramenta a nível académico, no apoio às disciplinas de Sistemas de Informação e de Bases de Dados. Salientamos os seguintes aspectos do livro:

• É feito um enquadramento teórico do tema das bases de dados, pois consideramos esse enquadramento fundamental;

• Nos aspectos teóricos serão referenciadas as últimas evoluções registadas nesta área, nomeadamente, novos modelos de bases de dados, Datawarehouses, Data Mining, etc.

• É feita a utilização de um “exercício guiado” uniforme em todo o livro e que será a base para o desenvolvimento dos procedi-mentos associados à elaboração de uma Base de Dados;

• Será feita a exploração das últimas potencialidades da nova ver-são do Microsoft Access XP (pois é o SGBD mais utilizado em Portugal quer nas PMEs quer nas aulas das disciplinas de Intro-dução às Bases de Dados nas Universidades), nomeadamente as funcionalidades associadas à Internet;

Page 16: Access manual de base de datos , excelente xp

16 CENTRO ATLÂNTICO - DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Este livro encontra-se estruturado em três partes distintas e comple-mentares. Esta estruturação proporciona aos leitores uma sequência lógica dos procedimentos a adoptar na elaboração de uma base de dados, desde a estruturação inicial dos dados, passando pelas funcio-nalidades do Microsoft Access XP, até aos procedimentos mais avan-çados suportados pela programação em Visual Basic (VBA). Na primeira parte é feito um enquadramento teórico do tema das 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. Exploramos também o modelo rela-cional de Bases de Dados, apresentando os operadores da Álgebra Relacional e fazendo uma breve abordagem à linguagem SQL. Segui-damente veremos o Modelo Entidade-Relacionamento para Modelação de Dados. Abordaremos por fim o conceito de Dependências Funcionais e a Normalização de relações.

Na segunda parte serão abordados os procedimentos e funcionalidades associados à concepção, implementação e manutenção de uma Base de Dados, com base na utilização do Sistema de Gestão de Base de Dados Microsoft Access XP. Com efeito, serão explorados na prática os diferentes objectos do MS Access XP nomeadamente, Tabelas, Con-sultas, Formulários, Relatórios, Páginas de acesso a dados e Macros. Na terceira parte serão abordados conceitos gerais sobre programação orientada a objectos, em particular, será abordada a linguagem de pro-gramação VBA como linguagem de manipulação de bases de dados com MS Access XP.

Page 17: Access manual de base de datos , excelente xp

PARTE I Na primeira parte deste livro é feito um enquadramento teórico do tema das bases de dados. Neste sentido, começamos por abor-dar 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. Exploramos também o modelo relacional de Bases de Dados, apresentando os operadores da Álgebra Relacional e fazendo uma breve abordagem à linguagem SQL. Seguidamente veremos o Modelo Entidade-Relacionamento para Modelação de Dados. Abordaremos por fim o conceito de Dependências Funcionais e a Normalização de Relações.

Page 18: Access manual de base de datos , excelente xp
Page 19: Access manual de base de datos , excelente xp

1

Os Sistemas de Informação

e as Organizações

É difícil conceber a sociedade de hoje sem a omnipresença dos com-putadores e dos sistemas informáticos. A maior parte dos lares portu-gueses tem já um computador, ou pelo menos algum dos seus ele-mentos já trabalhou com um. Esta presença torna-se mais significativa quando nos restringimos 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 empre-sa. Em muitas organizações os sistemas de informação e as aplicações informáticas são considerados como essenciais para a conquista de vantagens competitivas. No entanto, eles não são a panaceia do sucesso! É necessá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 planeamento 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 compo-nentes da vasta realidade que é um sistema de informação. Sem pre-tendermos ser exaustivos, consideramos importante enquadrar e clarifi-car 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 do seu planeamento e desenvolvimento.

Page 20: Access manual de base de datos , excelente xp

20 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 diferencias-sem uns dos outros por uma grande variedade de características, man-tinham algumas características comuns. Von Bertalanffy estendeu estas observações a outros tipos de organismos, como por exemplo, orga-nismos mecânicos ou organismos sociais, tendo constatado que algu-mas características se mantinham, independentemente da natureza do organismo. A mais importante característica que se podia sempre des-tacar 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 finalidade daquele organismo. Com base nesses estudos e observações, Von Bertalanffy propôs a chamada Teoria Geral dos Sistemas. Desde essa altura muitos cientistas de todo o mundo têm efectuado estudos nessa área. Das várias definições de Sistema que podemos encontrar, salientamos a de Chiavenato (1992):

“Um Sistema é um conjunto 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 integrado, no qual o todo é maior (ou diferente) do que a soma das suas partes”. Cada sistema pode ser subdividido em vários sistemas – os subsiste-mas, dependendo dos interesses da pessoa que pretende estudá-lo. Por exemplo, o computador é um sistema que tem como objectivo pro-cessar dados e armazenar dados e informação. Podemos considerar que existem subsistemas que compõem o computador: o subsistema teclado, o subsistema CPU, etc. Por seu lado, o subsistema CPU con-

Page 21: Access manual de base de datos , excelente xp

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

tém o subsistema placa de vídeo, o subsistema placa de som, o sub-sistema placa de memória, 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 sistema 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, substituição e morte). Qualquer sistema apresenta maior ou menor entropia, que é a tendên-cia que o sistema tem para o desgaste e a desintegração e que aumen-ta 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, inte-ragindo entre si para atingir objectivos comuns. Com o surgir da Teoria dos Sistemas tornou-se clara a natureza sistémica de qualquer organi-zação e em particular da empresa. O objectivo de qualquer empresa é obter lucro. Os componentes das empresas são, por exemplo, os depar-tamentos1 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.

1 Conforme o tipo de abordagem pretendido poderíamos considerar outros componen-tes: pessoas, equipamentos, etc.

Page 22: Access manual de base de datos , excelente xp

22 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Uma organização pode ser identificada como um sistema aberto tal como é definido por Chiavenato (1992): “Os sistemas abertos trocam matéria e energia regularmente com o meio ambiente e são fundamen-talmente adaptativos, pois para sobreviver precisam reajustar-se conti-nuamente à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 (1992) que “os recursos são meios que as empre-sas possuem para realizar as suas tarefas e atingir os seus objectivos: são bens ou serviços consumidos na realização das actividades empre-sariais.” 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 (1978) identificou a Informação como 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 sobrevi-ver 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 artificial-mente pelo homem a fim de representar um acontecimento percebido por ele no mundo real. No seguimento, os informáticos definem infor-mação como sendo dados processados. É necessário que a informação seja clara, precisa, rápida e dirigida. A informação deverá estar disponível na organização de uma forma facil-

2 Citado em [Almeida, 1997]

Page 23: Access manual de base de datos , excelente xp

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

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 informação seja obtida, pela organização, com estas características.

1.3.2 A Informação nas organizações

Rob e Coronel (1997) identificam em qualquer organização um ciclo dados-informação-decisão, esquematizado na Figura I.1.1: o utilizador 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...

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.

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

Page 24: Access manual de base de datos , excelente xp

24 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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.

Características Operacional Gestão

Raio de acção Reduzida Ampla

Detalhe Muito detalhada Geral

Síntese Geralmente em bruto Geralmente Sumariada

Idade Tem de ser actual Pode ser antiga

Exactidão Precisa de ser exacta Podem bastar estimativas

Tipo Mais quantitativa Mais qualitativa

Fonte Principalmente interna Principalmente externa

Figura I.1. 2 Fluxo de infor-mação na orga-nização

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

Page 25: Access manual de base de datos , excelente xp

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

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 organiza-cionais, 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 sistema 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 sofis-ticada que se apresente, 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 organizacional 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áctico e operacional, envolvendo a recolha, processamento, dis-tribuição e utilização da informação e as tecnologias que lhe estão asso-ciadas, 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 subsistemas do Sistema de Informação: o Sistema de Bases de Dados.

Page 26: Access manual de base de datos , excelente xp

26 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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

Do nosso ponto de vista, só podemos compreender o presente se conhecermos o passado. Assim sendo, passamos a apresentar um bre-ve apontamento sobre a evolução histórica dos Sistemas de Informação na empresa. 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 outro, havendo coexistência das eras 1, 2 e 3.

Numa primeira fase, pretendia-se que, com a implementação dos siste-mas 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, ouve a intenção de alterar as bases de concorrência. Na quarta era, 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.

3 Adaptado de [Magalhães, 1993]

Figura I.1.4 A evolução dos Sistemas de Informação na empresa 3

Page 27: Access manual de base de datos , excelente xp

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

De uma forma mais específica, poderemos apresentar a evolução dos sistemas de informação como na Figura I.1.5. Os Sistemas de Proces-samento de Transacções (TSP – Transaction Processing Systems) sur-giram na década de 50 tendo como objectivo substituir o processamento manual de tarefas morosas e repetitivas, lidando normalmente com grandes quantidades de informação. Nos anos 60 surgem os Sistemas de Informação de Gestão (MIS – Management Information Systems). Estes pretendiam servir de suporte às actividades e funções de gestão e tomada de decisão numa organização. Na mesma época emergem os Sistemas de Gestão de Bases de Dados (DBMS – Data Base Manage-ment Systems), 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 Sis-temas de Suporte à Decisão (DSS – Decision Support Systems). Estes últimos são muitas vezes talhados à medida do utilizador. Na década de 80, têm sucesso os Sistemas Periciais (ES – Expert Systems), os Sis-temas de Informação para Executivos (EIS – Executive Information Sys-tems) e os Sistemas de Informação Estratégicos (SIS – Strategic Infor-mation Systems).

Page 28: Access manual de base de datos , excelente xp

28 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 ges-tão da organização e do Sistema de Informação.” (Carvalho e Amaral, 1993). O Planeamento de Sistemas de Informação deve ser conjugado com o desenvolvimento de Sistemas de Informação. “Por desen-volvimento de Sistemas 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).

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

Page 29: Access manual de base de datos , excelente xp

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

O Desenvolvimento de um Sistema de Informação pode ser dividido em várias fases, ilustradas na Figura I.1.6. As fases não são obrigatoria-mente sequenciais, existindo a possibilidade de retroceder às fases an-teriores sempre que necessário.

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

• Identificação de requisitos

Nesta fase, indicam-se todos os requisitos necessários aos Sis-temas 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 Infor-mação. Estes são: utilizadores directos que, como a própria designação indica, utilizam directamente o Sistema de Informa-ção, utilizadores indirectos, que usam mapas produzidos pelos sistemas e utilizadores administrativos, que controlam as activi-dades desenvolvidas.

• Análise detalhada

Durante a análise detalhada organizam-se regras e procedi-mentos, através dos dados recolhidos, em modelos coerentes para o sistema em causa. Na parte I deste livro iremos estudar alguns modelos utilizados na análise de Sistemas de Bases de Dados.

• Desenho

Durante a fase de desenho, o modelo lógico, obtido na fase anterior, é complementado com o desenho dos processos, incluindo todas as especificações técnicas necessárias.

• Codificação

Esta fase consiste na construção da aplicação através de lin-guagens de programação (por exemplo, Visual Basic, C, ...) com ou sem recurso a Sistemas de Gestão de Bases de Dados (por exemplo, MS Access, Oracle, DB2, ...).

Page 30: Access manual de base de datos , excelente xp

30 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• Testes e Implementaçã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 utili-zadores 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, devido a alterações do ambi-ente de negócio, havendo a necessidade de alterar a funcionali-dade do sistema.

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 (1998), o desenvolvimento não é uma actividade mecânica. Não existem segredos mágicos para o sucesso, não existem 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 nas organizações, pode ser sintetizado através do modelo dos estádios de crescimento de Nolan (1979), apresentados na Figura I.1.7.

Page 31: Access manual de base de datos , excelente xp

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

Figura I.1.7 Estádios de crescimento de Nolan

Numa primeira fase é feita a instalação do computador na empresa e introduzindo-se 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 provocando a necessidade de intervenção por parte da gestão (Controlo). Numa próxima fase, é sentida a necessidade de, além de controlar o crescimento, integrar as diversas aplicações em sistemas coerentes (Integração) – 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).

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

Page 32: Access manual de base de datos , excelente xp

32 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Page 33: Access manual de base de datos , excelente xp

2

Bases de Dados

De uma forma genérica podemos dizer que uma base de dados é um conjunto de dados relacionados, acessíveis a uma comunidade de utili-zadores. Desde tempos imemoriais o homem guardou em armários, gavetas (...) os dados importantes relativos às suas diversas actividades – as primeiras 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 desen-volvimento 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ó posteriormente 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 desactualizados 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óri-cas das bases de dados, nomeadamente, os Sistemas de Ficheiros. Em

Page 34: Access manual de base de datos , excelente xp

34 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 serão abordados em 2.3. Por fim, em 2.4, abordaremos algumas tendências de evolução na área 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 per-manente1, 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 (Figura I.2.1).

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

Clientes

Encomendas

Produtos Aplicação 3 Inserir novo cliente

FICHEIROS DE DADOS APLICAÇÕES

Aplicação 4 Imprimir facturas

Aplicação 2 Inserir novo produto

Aplicação 1 Efectuar encomenda

Page 35: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 35

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 possa ser elaborada cada uma das aplicações do sistema. Na figura I.2.2, apresentamos um 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:

• Dado factos em “bruto”, ou seja, a mais pequena porção de dados que o computador reconhece; pode ser um número, um caracter,...;

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

• Registo um conjunto de um ou mais campos relacionados, que descre-vem uma pessoa, um lugar ou um objecto (concreto ou abs-tracto);

• Ficheiro conjunto de registos relacionados.

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

dado

Figura I.2.2 Exemplo do ficheiro Clientes

Page 36: Access manual de base de datos , excelente xp

36 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Cada ficheiro presente no sistema de gestão de ficheiros precisa, pelo menos, de cinco aplicações que permitam:

• Criar a estrutura do ficheiro;

• Adicionar dados ao ficheiro;

• Eliminar dados do ficheiro;

• Modificar dados contidos no ficheiro;

• Listar o conteúdo do ficheiro.

Cada uma dessas aplicações envolve várias operações, mais ou menos complexas. Por exemplo, para eliminar o cliente Ana, do ficheiro de clientes do exemplo, será necessário:

• Abrir o ficheiro de clientes;

• Procurar o registo relativo ao cliente Ana;

• Eliminar o registo encontrado;

• Fechar o ficheiro clientes.

Podemos, através deste exemplo simples, reconhecer a dificuldade e morosidade existentes na implementação de um sistema de ficheiros, 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 necessidade de, em cada mês, elaborar uma aplicação que possa pro-duzir esse relatório. Conforme se conseguem satisfazer algumas necessidades surgem imediatamente novas necessidades, o que implica a escrita de novas aplicações. Muitas vezes torna-se incompor-tável fazer uma gestão eficiente do sistema, devido ao elevado número de aplicações necessárias à sua manutenção.

Page 37: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 37

Outro aspecto a ter em conta na gestão dos dados prende-se com a integridade dos dados, isto é, os valores guardados nos ficheiros devem satisfazer determinadas regras – as restrições de integridade. No exem-plo já apresentado, considerando o ficheiro encomendas, “só pode exis-tir uma encomenda se contiver algum produto” ou “só são aceites enco-mendas de valor superior a 5 €”, são exemplos de duas restrições de integridade. Estas restrições são introduzidas no sistema adicionando código 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 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

Num sistema de ficheiros, as aplicações estão directamente relaciona-das 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”. Assim sendo, qualquer alteração na estrutura dos ficheiros provocará alterações em todas as aplicações que com ela se relacio-nam, com todos os inconvenientes daí resultantes.

2.1.3 Redundâncias nos dados

Nos sistemas de ficheiros é difícil evitar que existam dados repetidos em diversos ficheiros. Quando isto acontece, diz-se que existe redun-dâncias nos dados. No exemplo da figura I.2.1, os dados relativos a cada cliente no ficheiro clientes, surgem repetidos no ficheiro encomen-das. Estas redundâncias conduzem a custos mais elevados ao gravar e ao aceder aos dados.

Page 38: Access manual de base de datos , excelente xp

38 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Um aspecto importante a considerar é o facto de estas redundâncias poderem 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 utiliza-dor está a efectuar o pedido de encomenda com a aplicação destinada para esse efeito, inclui a nova morada apenas no ficheiro encomendas. Nesse momento surge um pedido de encomenda de um outro cliente. Como, para efectuar a alteração da morada do cliente anterior, é neces-sá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 coincidentes, isto é, são inconsistentes.

2.2 SISTEMAS DE BASES DE DADOS

Um Sistema de Bases de Dados (SBD) é um sistema baseado em com-putador(es) que tem como principal objectivo armazenar dados de modo a permitir aos utilizadores consultar e actualizar a informação solicitada. Os Sistemas de Bases de Dados surgiram como resposta aos proble-mas apresentados pelos sistemas de ficheiros. Ao contrário destes, aqueles caracterizam-se por um repositório de dados que é acedido pelos diversos utilizadores através de um sistema – o Sistema de Ges-tão de Bases de Dados (SGBD)2 (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 Existe, por vezes, alguma confusão entre o Sistema de Bases de Dados e o Sistema de Gestão de Bases de Dados. 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.

Page 39: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 39

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

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 definição completa ou descrição da base de dados – o catá-logo do sistema ou dicionário de dados3. A informação contida no catálogo é chamada de metadata (dados sobre dados). O catálogo do sistema está acessível ao Sistema de Gestão de Bases de Dados e aos utilizadores e é au-tomaticamente criado pelo sistema. A existência do catálogo do

3 Alguns autores distinguem catálogo do sistema de dicionário de dados. Por exemplo, em [Rob e Coronel, 1997] o catálogo do sistema é interpretado como um dicionário de dados muito detalhado.

SISTEMA DE GESTÃO DE BASES DE DADOS (SGBD)

APLICAÇÕES

DADOS

UTILIZADORES

Page 40: Access manual de base de datos , excelente xp

40 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

sistema permite que um só SGBD possa ser eficientemente utili-zado com diversas bases de dados.

• Independência Dados-Programas

Outra característica importante dos Sistemas de Bases de Da-dos é a independência dados-programas: a estrutura dos fichei-ros de dados está gravada no catálogo do SGBD, separada dos programas 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 esconder detalhes sobre a forma como os dados são fisicamente armazenados e mantidos – abstracção dos dados.

• 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 – vista 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.

Figura I.2.4 Vistas da Base de Dados

S G B D

Base de Dados Utilizadores

Page 41: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 41

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 adminis-traçã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 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 armazena-dos na base de dados e pela definição das estruturas físicas necessá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 mantêm os programas escritos. Podem utilizar linguagens de programação de 3ª geração (por exemplo, C) ou de 4ª geração (por exemplo, INFORMIX-4GL).

• Utilizadores finais

São as pessoas que acedem ao sistema para obter a informação necessária ao seu desenvolvimento na organização. Alguns

Page 42: Access manual de base de datos , excelente xp

42 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

desses utilizadores acedem à base de dados a partir de progra-mas e interfaces já definidos, que pretendem tornar o acesso o mais simplificado possível. Existem outros utilizadores mais sofisticados, familiarizados com as facilidades fornecidas pelo SGBD que podem eles próprios escrever as 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 informá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:

• Gestão do armazenamento dos dados O SGBD cria as estruturas necessárias ao armazenamento, e utilizaçã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.

• Gestão da Interface O SGBD formata os dados consultados de modo a que tenham um aspecto facilmente perceptível pelo utilizador. São disponibi-lizadas determinadas linguagens de programação que permitem essa interface (secção 2.2.5). Os SGBD’s mais recentes apre-sentam interfaces amigáveis que facilitam grandemente o acesso à base de dados por parte de utilizadores não especiali-zados. Fornecem também capacidades para comunicar em ambiente de redes de computadores, 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 definem 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 ace-

Page 43: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 43

didos e as operações permitidas (ler, adicionar, apagar ou modi-ficar). Deverão existir procedimentos que efectuem cópias de segurança e recuperação dos dados em caso de falhas, de modo a assegurar a seguranç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 consistência. Existem restrições de integridade intrínsecas ao SGBD4 e outras definidas pelos utilizadores do sistema. Outro aspecto a considerar é a gestão das transacções5. Uma transacção é uma série de acções levada a cabo por um utiliza-dor 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 danificado no disco), a base de dados estará num estado de inconsistência, isto é, algumas alterações foram efec-tuadas e outras não. O 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 aconte-cer que tentem aceder aos mesmos dados mais do que um utili-zador em simultâneo. O SGBD deve fornecer mecanismos que assegurem que a base de dados é actualizada correctamente, quando isso acontece – controlo da concorrência6.

4 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. 5 O estudo aprofundado destes assuntos sai fora do âmbito deste livro. Para uma abordagem mais aprofundada poderá consultar, por exemplo, [Elmasri e Navathe, 1989] ou [Date, 2000]. 6 IDEM.

Page 44: Access manual de base de datos , excelente xp

44 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

2.2.4 Arquitectura do Sistema de Gestão de Bases de

Dados e Independência dos Dados

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 detalhes sobre a forma como os dados são armazenados e mantidos. Na arquitectura ANSI/SPARC7, em 1975, são propostos três níveis de abstracção que podemos ver na figura I.2.58.

Figura I.2.5 A arquitectura ANSI/SPARC

7 American National Standards Institute/Standards Planning And Requirement Com-mitee 8 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.

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: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 45

Vejamos um pouco mais em pormenor cada um dos três níveis referi-dos:

• 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 arma-zenados. Neste nível as estruturas de baixo nível dos dados são descritas 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.

• Nível externo

O nível mais elevado de abstracção inclui um número de esquemas externos ou vistas do utilizador, que descrevem ape-nas uma parte da base de dados.

Esta arquitectura de três níveis pode ser utilizada para explicar o con-ceito 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, 1989]. Podemos definir dois tipos de independência dos dados que são a Independência lógica e a Independência física.

• Independência lógica é a capacidade de alterar o esquema conceptual sem ter de alte-rar os esquemas externos ou programas de aplicação. Podemos alterar o esquema conceptual para expandir a base de dados ou para a reduzir. No segundo caso, os esquemas externos, relati-vamente aos dados que se mantêm inalterados, não devem ser afectados. Num SGBD que suporta independência lógica, ape-nas é preciso alterar as definições de vistas e as correspondên-cias entre os dois níveis [Elmasri e Navathe, 1989]. Podem tam-

Page 46: Access manual de base de datos , excelente xp

46 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

bém ocorrer mudanças nas restrições existentes, sem que sejam afectados os esquemas externos.

• Independência física

é a capacidade de alterar o esquema interno sem alterar o esquema conceptual (ou o externo) [Elmasri e Navathe, 1989]. 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 con-ceptual. É 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 norma9, fornece uma boa base para o entendimento de algumas das funcionalidades de um SGBD.

2.2.5 Linguagens fornecidas pelo SGBD

O SGBD coloca ao dispor de cada utilizador várias linguagens. Cada uma dessas linguagens inclui uma sublinguagem de dados que consiste de duas partes:

• uma linguagem para manipulação de dados – DML10

• uma linguagem de definição de dados – DDL11.

Alguns SGBD`s permitem que as sublinguagens sejam embutidas numa linguagem de alto nível como por exemplo COBOL, PASCAL ou C (lin-guagens de 3ª geração). Uma DDL é utilizada para definir um esquema ou para modificar um esquema já existente. Uma DML é utilizada para efectuar todas as ope-

9 Do inglês standard. 10 Data Manipulation Language 11 Data Definition Language

Page 47: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 47

rações básicas de manipulação de dados, tais como, inserir novos dados, modificar os dados armazenados ou apagar dados da base de dados. Existem DML`s imperativas, que permitem que o utilizador diga ao sistema como se devem efectuar as operações pretendidas e DML`s não imperativas, que permitem ao utilizador definir o que é necessário mas não como obtê-lo (linguagens de 4ª geração). Exemplos deste último tipo de DML`s são a SQL12 (que iremos apresentar em 3.5), QBE13, geradores de formulários, geradores de relatórios (na parte II veremos exemplos para o SGBD Access).

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 utili-zadores e o número de locais pelos quais a base de dados está distri-buída. Atendendo ao modelo, os SGBD`s classificam-se em relacionais, em rede, hierárquicos ou outros. Em 2.3 abordaremos mais em pormenor estes 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 utilizadores. Os SGBD`s mono-utilizador estão normalmente ligados à utilização dos computadores pessoais. Exemplos de SGBD`s multi-utilizador encontram-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 con-corrê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 centraliza-dos, se os dados estiverem armazenados apenas num local, ou 12 Structured Query Language 13 Query By Example

Page 48: Access manual de base de datos , excelente xp

48 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

SGBD`s distribuídos se a base de dados e as suas aplicações estive-rem distribuídas por diversos locais, ligados através de uma rede. Os SGBD`s distribuídos14 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.2.7 Vantagens e desvantagens dos

Sistemas de Bases de Dados

Ao longo deste capítulo, foram já apresentadas algumas vantagens da utilização dos Sistemas de Bases de Dados, tais como:

• tornar mais fácil a eliminação de inconsistências e de anomalias de dados presentes nos Sistemas de Ficheiros;

• eliminar as dependências estruturais presentes nos sistemas de ficheiros;

• reduzir o tempo destinado ao desenvolvimento de aplicações;

• aumentar a flexibilidade do sistema, permitindo uma maior facili-dade nos procedimentos necessários para efectuar alterações na sua estrutura;

• facilitar a obtenção de informação actualizada.

No entanto, os Sistemas de Bases de Dados apresentaram algumas desvantagens que dificultaram a sua generalização imediata, como por exemplo:

• o SGBD é um sistema de grande complexidade, ocupa muito espaço em disco e é mais caro;

• existem custos adicionais de hardware aquando da conversão do sistema existente para um Sistema de Bases de Dados, além dos custos inerentes à própria conversão;

14 O estudo aprofundado destes assuntos sai fora do âmbito deste livro. Para uma abordagem mais aprofundada poderá consultar [Elmasri e Navathe, 1989] ou [Rob e Coronel, 1997].

Page 49: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 49

• em caso de falha do sistema, existem normalmente maiores

impactos, visto que um Sistema de Bases de Dados é mais abrangente, embora existam mecanismos e procedimentos que minimizam esses impactos.

2.3 MODELOS DE BASES DE DADOS

Diz-nos Chiavenato que “para se estudar ou analisar um sistema, utili-zam-se modelos” e que “modelo é a representação de um sistema”. Ao longo dos anos, têm vindo a ser delineados vários modelos para repre-sentar um Sistema de Bases de Dados. Podemos distinguir entre dois tipos de modelos, os modelos conceptuais e os modelos de implemen-tação. Os modelos conceptuais são utilizados para se obter uma descri-ção lógica do sistema. Um dos mais populares é o modelo Entidade-Relacionamento (E-R), que abordaremos no capítulo 4. Os modelos de implementação descrevem a forma como os dados estão representados na base de dados. Podemos dividir estes modelos em três gerações. Na primeira geração colocam-se o modelo hierár-quico, que abordaremos em 2.3.1, e o modelo em rede, que será abor-dado em 2.3.2. Na segunda geração temos o modelo relacional, que será abordado em 2.3.3 e que, pela sua importância, será estudado mais em pormenor no capítulo 3. No ponto 2.4 abordaremos os 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-filhos. Como o próprio nome do modelo indica, existem vários registos relacionados através de uma estrutura hierár-quica do tipo pai-filhos, com vários níveis. Cada registo fornece informa-

Page 50: Access manual de base de datos , excelente xp

50 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

ção sobre uma entidade ou instância de um relacionamento. Um rela-cionamento do tipo pai-filhos é um relacionamento de 1:M15, entre dois registos. O primeiro registo é o registo pai e os registos 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.

Figura I.2.6 Uma estrutura hierárquica16

Neste diagrama, cada registo é representado por um rectângulo e o relacionamento por uma linha que liga o registo pai ao registo filho. Ao registo que se encontra no nível 0, chama-se raiz. O acesso a qualquer um dos registos deve ser feito a partir da raiz e correndo cada um dos nós da árvore da esquerda para a direita e de cima para baixo. No

15 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. 16 Adapatado de [Elmasri e Navathe, 1989]

Departamento Dnome Dnumero NomeChefe DataInicioChe

Projecto Pnome Pnumero PLocal DataInicioChe

Empregado Nome BI DataNasc Morada

Trabalhador nome BI Horas

Supervisor nome BI

Subordinado nome sexo DataNasc

Nível 0

Nível 1

Nível 2

D

P

S R T

E

Page 51: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 51

exemplo considerado, para aceder ao registo projecto (P), teria de se percorrer os registos D, E, S, 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.

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

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

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

• ao eliminar um registo, eliminam-se os seus filhos, correndo-se o risco de eliminar informação relevante;

• a programação nos Sistemas de Bases de Dados hierárquicos é muito exigente.

Um dos mais difundidos SGBD`s concebidos segundo o modelo hierár-quico, comercialmente disponível, foi desenvolvido pela IBM na década de 70 e ficou conhecido como IMS (Information Management 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 relacionamento chama-se set e é-lhe atribuído um nome. O registo pai 17 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: Access manual de base de datos , excelente xp

52 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

chama-se owner e o registo filho chama-se member. Ao contrário do que acontece 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 ao do modelo hierárquico. O esquema de dados em rede pode ser representado por uma estrutura como a representada na figura I.2.7.

Figura I.2.7 Uma estrutura em rede18

18 Adaptado de [Elmasri e Navathe, 1989]

Empregado

Nome BI DataNasc Morada Sexo Salário

Subordinado

E-BI Nome Sexo DataNasc Relação

Subordinado 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

Page 53: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 53

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 chamadas de retenção (opcionais, mandatórias ou fixas). Apesar de apresentar várias vantagens, nomeadamente possibilitar a representação de relacionamentos de M:N e do acesso aos dados ser mais flexível do que no modelo hierárquico, o modelo em rede apre-senta também algumas desvantagens. Uma das grandes desvantagens tem a ver com o facto de o sistema ser muito complexo, exigindo um conhecimento profundo 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 indepen-dência funcional. Além disso, o ambiente é pouco amigável para os utili-zadores finais. 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 estabelecidas pelo DBTG, indicado pela CODASYL em 1971.

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ção19. Uma base de dados relacional é formada por um conjunto de

19 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 tabelas é 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.

Page 54: Access manual de base de datos , excelente xp

54 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

tabelas 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 fundamental 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

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). Devido à sua importância 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 com-putadores. Outro aspecto a considerar é o facto de, devido ao seu ambiente amigável, os SGBD`s relacionais serem utilizados sem ter em linha de conta o desenho cuidado das estruturas necessárias, gerando muitas vezes problemas 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.

Empregado Cod-Empregado

Nome-Empregado

Proj-num

1 José 1 2 Manuel 2 3 Tiago 1 4 Pedro 3

Projecto Proj-num

Proj-descr Local

1 Colocar Tapete Porto 2 Pintar parede Gaia 3 Colocar portas Maia

Page 55: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 55

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 reser-vas e muitas outras. Nos últimos anos, as bases de dados têm aumen-tado quer em tamanho quer em complexidade nas suas aplicações, colocando exigências 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 Geográ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ção de dados, nomeada-mente os modelos orientados a objectos20, que têm origem nas lingua-gens de programação orientadas a objectos. Como resposta surgiram também extensões ao modelo relacional, de modo a suportarem carac-terísticas de modelos orientados a objectos. Um objecto é uma representação conceptual de uma entidade do mundo real, contendo os atributos que o descrevem e o seu compor-tamento, ou seja, as acções que lhe estão associadas – encapsula-mento significa que um objecto contém quer a estrutura dos dados quer o conjunto de operações que podemos definir. Estas acções chamam-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 con-junto de valores que os atributos do objecto têm num dado momento. Os métodos 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) solici-tando-lhe que execute um dos seus métodos.

20 Do inglês Object-Oriented

Page 56: Access manual de base de datos , excelente xp

56 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Uma classe é uma colecção de objectos semelhantes que partilham a estrutura e o comportamento, permitindo 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 atra-vés de uma estrutura hierárquica, na qual os objectos 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. 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 orienta-dos a objectos. Significa que a mesma mensagem enviada a objectos pertencentes a classes diferentes, origina a resposta correcta em cada caso, ou seja, podemos utilizar o mesmo nome para métodos em clas-ses diferentes, pois o seu comportamento será adequadamente dife-rente 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 bin-ding dinâmico. Um SGBD orientado a objectos resulta da combinação das característi-cas 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” apresentado por Atkison, et all em 198921 e citado por [Connolly e Beg, 1999], apresenta treze regras que descrevem 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. 21 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 Deductive and Object-Oriented Database em Kioto, Japão.

Page 57: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 57

Já na década de 90, foi formado por vários vendedores de SGBD`s um grupo de trabalho que pretendeu definir normas no que concerne a este assunto – o Object Database Management Group (ODMG). Este grupo propõe um modelo da dados orientado a objectos que consiste de três partes:

• um modelo de objectos;

• uma linguagem de definição de objectos (equivalente a uma lin-guagem de definição de dados de um SGBD convencional);

• uma linguagem para questões, em ambientes orientados a objectos, com sintaxe semelhante à do SQL.

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 encapsu-lamento

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”

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 relacio-nais a uma resposta ao desafio colocado pelos ambientes orientados a objectos, através da criação de extensões ao modelo relacional. Não existe um modelo relacional extendido único. Existem sim várias pro-

Page 58: Access manual de base de datos , excelente xp

58 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

postas 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. Stonebraker`s22 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 Stonebraker23

Apesar de esta classificação ser interessante, existem muitas aplica-ções de bases de dados que não se revêm facilmente num dos qua-drantes. Além disso, com o trabalho realizado pelo grupo ODMG a dis-tinção entre extensão do 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 é insuficiente para certos tipos de aplicações, dife-

22 Citado em [Connoly e Begg,1998] 23 Apesar de um sistema de ficheiros não ser um Sistema de Bases de Dados, pensamos não ser descabido incluí-los no mundo das bases de dados, por corresponderem aos seus primórdios.

Relacionais

Sistemas de Ficheiros Orientados a objectos

Extensões de Relacional

Cap

acidad

e de p

rocu

ra/pesq

uisa

Su

po

rte mu

lti-utilizad

or

Complexidade / Extensibilidade

Page 59: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 59

rindo, no entanto, na sua opinião quanto à melhor solução. É difícil pre-ver se uma das abordagens se tornará dominante ou se cada uma delas ocupará um nicho de mercado próprio.

2.4 TENDÊNCIAS FUTURAS

No final da década anterior surgiram novos desenvolvimentos na área das bases de dados. Dado que se encontram numa fase inicial do seu desenvolvimento, intitulámos esta secção de Tendências Futuras”.

2.4.1 Data Warehouses

Uma Data Warehouse24 é uma base de dados que agrupa um grande volume de dados. Esses dados são optimizados para futuras análises, servindo de base na tomada de decisão 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 dis-tintos. A integração dos dados implica um esforço bem organizado para definir e padronizar todos os dados, de modo a torná-los consistentes, para que possam ser apresentados aos utilizadores de forma centrali-zada. A colecção de dados diz-se orientada para determinados assun-tos visto estar organizada de modo a fornecer respostas a questões provenientes de diversas áreas funcionais de uma companhia (tais como, clientes, produtos, vendas,...). Na medida em que os dados, na Data Warehouse, representam o fluxo de dados ao longo de um deter-minado 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 tam-bém está presente na medida em que os dados são periodicamente

24 Numa tradução directa de Data Warehouse, obtemos Armazém de dados.

Page 60: Access manual de base de datos , excelente xp

60 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 regu-larmente recolhidos a partir dos sistemas operacionais, (OLTP`s25 ou sistemas de processamento de transacções) e visto que os dados exis-tentes não são nunca removidos sendo os novos dados adicionados 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 completamente 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 aquelas são concebidas de modo a maxi-mizar a capacidade de resposta a um número relativamente baixo de transacções que são de natureza imprevisível e requerem respostas a questões Ad hoc, não estruturadas e heurísticas. Naturalmente, sendo de naturezas distintas, apresentam características distintas. Na figura I.2.11 apresentamos uma comparação entre as bases de dados utiliza-das nos sistemas OLTP e as Data Warehouses, utilizadas pelos siste-mas de apoio à decisão (DSS – Decision Support Systems). 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 Warehou-ses, por um conjunto de dados mais manejáveis, orientados para pequenos grupos dentro da organização – as Data Marts26. 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.

25 On Line Transaction Processing 26 Numa tradução directa de Mart, obtemos mercado, centro de comércio, empório comercial

Page 61: Access manual de base de datos , excelente xp

I.2. 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 grande-mente resumidos

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

Processamentos repetitivos Processamentos Ad hoc, não estrutura-dos 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 utiliza-dores 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 Warehouses27

Os dados armazenados numa Data Warehouse servirão para responder a questões sobre determinados factos analisados de várias formas – perspectiva multi-dimensional. O star schema é uma técnica de modela-ção de dados que gera um modelo facilmente utilizável numa perspec-tiva 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 grandes volumes de dados forneciam apenas uma análise limitada e relativamente simplista desses dados. O nascimento das Data Ware-houses tem sido acompanhado por uma exigência crescente por parte dos seus utilizadores no que concerne a ferramentas de acesso mais poderosas. Como resposta, têm vindo a ser desenvolvidas ferramentas tais como On-Line Analytical Processing (OLAP`s) e Data Mining, que fornecem capacidades analíticas avançadas.

27 Adaptado de [Connoly e Begg, 1998]

Page 62: Access manual de base de datos , excelente xp

62 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

2.4.2 OLAP`s

OLAP, do inglês On-Line Analytical Processing, são ferramentas que proporcionam ambientes para análise avançada de dados, fazendo a síntese, análise e consolidação de grandes volumes de dados, armaze-nados 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 perspectivas (dimensões): vendas por cliente, vendas por região, vendas por vendedor, etc. As técnicas de análise de dados numa perspectiva multi-dimensional podem ser ampliadas atra-vé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 pormenori-zados, contidos nos dados consolidados;

• funções de cálculo, tais como variáveis de negócio (margens de venda, quotas de mercado, etc.), rácios financeiros e contabilísti-cos (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 amigáveis. Um dos objectivos do processamento de dados é processar os dados contidos em bases de dados com uma complexidade crescente, sem sacrificar os tempos de resposta. As arquitecturas cliente/servidor per-mitem dividir o sistema OLAP em vários componentes que podem ser colocados no mesmo computador ou podem ser distribuídos por vários computadores.

Page 63: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 63

As ferramentas OLAP podem ser organizadas segundo duas categorias principais:

• MOLAP (Multidimensional OLAP) As ferramentas MOLAP utilizam estruturas de dados apropriadas e SGBD`s multi-dimensionais para organizar, navegar e analisar os dados. Exemplos de ferramentas MOLAP incluem Analysis Server, Essbase, Express Server;

• 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 meta-dados, evitando assim a criação de estruturas de dados multi-dimensionais estáticos. Exemplos de ferramentas ROLAP inclu-em Axsys, DSS Agent/DSS Server, Metacube

A tendência actual é que as ferramentas MOLAP e ROLAP convirjam, produzindo um novo tipo de SGBD`s que utilizem as melhores capaci-dades 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ências ou tendências (padrões) previamente desconhecidos. As ferramentas de Data Mining são uma das melhores formas de o conse-guir. As ferramentas de Data Mining são pró-activas, isto é, em vez de ser o utilizador a definir o problema e seleccionar os dados e as ferra-mentas que vão analisá-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. As ferramentas de Data Mining são recentes e assim sendo, não exis-tem normas estabelecidas. Existem sim, famílias de ferramentas de

Page 64: Access manual de base de datos , excelente xp

64 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Data Mining dirigidas a determinados nichos de mercado (marketing, finanças, saúde,...), utilizando algoritmos que vão ser aplicados a diver-sos dados de modo a obter conhecimento. Os algoritmos tipicamente utilizados podem ser baseados em redes neuronais, árvores de decisão, regras de indução, algoritmos genéticos, classificação e árvores de regressão, visualização de dados, etc. Um exemplo de um resultado obtido pelas ferramentas de Data Mining pode ser que 90% dos clientes que compraram uma televisão têm uma apetência de 88% de comprar um vídeo nas 4 semanas seguintes. Este resultado pode ser utilizado na tomada de decisão relativa a uma cam-panha de marketing de vídeos. Exemplos de ferramentas de Data Mining incluem Clementine, Itelligent Miner, Mineset, etc. Para um maior aprofundamento deste tema sugerimos a leitura de [Fayad et all,1996].

2.4.4 Integração com a Web

A World Wide Web28 ou de forma abreviada a Web ou W W W, é para muitas pessoas sinónimo de Internet. O pai da Web é Tim Berners-Lee, do CERN29, que teve a ideia de criar uma teia electrónica de informação sobre investigação. 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 programador, em texto simples. Cada uma das páginas Web é um documento em Hipertexto. O conceito de Hipertexto foi inventado nos anos 50, por Ted Nelson, e significa que uma porção de texto num documento pode remeter para outros pedaços de texto dentro do mesmo documento ou de outros documentos. Ini-cialmente as páginas da Web eram baseadas apenas em texto mas actualmente apresentam características de multimédia.

28 Teia espalhada pelo mundo 29 O laboratório Europeu de Física das Partículas

Page 65: Access manual de base de datos , excelente xp

I.2. BASES DE DADOS 65

Nos últimos tempos, têm-se verificado o desenvolvimento de tecnolo-gias 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. 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 de scripts que fazem a conversão de diferentes formatos de dados para HTML. Existem algumas aproximações possíveis, tais como utilização da técnica CGI (Common Gateway Interface), cookies, as linguagens JavaScript ou VBScript. O Ms Access XP inclui algumas funcionalidades para a Web, que poderá consultar nas partes II e III deste livro.

Page 66: Access manual de base de datos , excelente xp

66 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Page 67: Access manual de base de datos , excelente xp

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, intitu-lado “A Relational Model of Data for Large Shared Data Banks” e repre-sentou, à época, uma verdadeira revolução. A sua implementação foi difícil e havia bastante cepticismo em relação ao modelo apresentado, como é referido pelo próprio Codd em 1982, no artigo “Relational Data-base: “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 pos-suía uma forte formação matemática, baseou-se nas teorias matemáti-cas de conjuntos e de lógica de predicados para a concepção do mode-lo relacional 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 integri-dade inerentes ao modelo relacional. Os operadores da Álgebra Rela-cional serão apresentados em 3.4. Uma importante linguagem de bases de dados relacionais – o SQL – será estudada em 3.5. Finalmente, em 3.6, apresentamos as chamadas regras de Codd, que permitiriam saber se um SGBD é ou não relacional.

Page 68: Access manual de base de datos , excelente xp

68 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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. No modelo relacional as relações são utili-zadas para guardar informação sobre os objectos que queremos repre-sentar na base de dados. Um atributo é uma coluna à 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. 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 frequen-temente à medida que novos tuplos são adicionadas ou removidos. Na figura I.3.1, é apresentado um exemplo de uma relação. Cada atributo no modelo relacional está definido num domínio. Um domínio é o conjunto de valores permitidos para um ou mais atributos. O conceito de domínio é importante, pois permite que sejam definidos o significado e a fonte dos valores para cada um dos atributos, podendo assim evitar-se operações semanticamente incorrectas.

Figura I.3.1 Exemplo de uma relação

Page 69: Access manual de base de datos , excelente xp

I.3. O MODELO RELACIONAL DE BASES DE DADOS 69 Uma base de dados relacional consiste num conjunto de relações apropriadamente estruturadas, ou seja, um conjunto de relações norma-lizadas. A normalização será discutida no capítulo 5. Existem terminologias alternativas para o modelo relacional que podem provocar algumas confusões. Na tabela da figura I.3.2 apresentamos algumas terminologias alternativas.

Ternos Formais 1ª Alternativa 2ª Alternativa

Relação Tabela Ficheiro

Tuplo Linha Registo

Atributo Coluna Campo

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, ... , vn), onde cada valor vi (1 ≤ i ≤ n) é um ele-mento de Di, ou é o valor especial nulo1. Retomando o exemplo da figu-ra I.3.1 temos...

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

Page 70: Access manual de base de datos , excelente xp

70 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 cartesiano2 dos domínios que definem R:

r(R) ⊆ D1 × D2 × ... × 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 equi-valentemente 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;

• 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 correspon-dência entre atributos e valores seja mantida.

2 O produto cartesiano dos conjuntos D1, D2, ... ,Dn , representado por D1 × D × ... × Dn especifica todas as combinações possíveis de valores desses conjuntos. Formalmente D1 × D × ... × D n = {(d1, d2, ... , dn):d1 ∈ D1, d2 ∈ D2, ... , dn∈ Dn}

Page 71: Access manual de base de datos , excelente xp

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

3.2 ATRIBUTOS CHAVE

Um conceito importante no modelo relacional é o conceito de chave. Existem vários tipos de chave, que apresentaremos de seguida. Super-Chave Como cada tuplo numa relação é distinto, é necessário que possamos identificá-lo de forma única pelos valores dos seus atributos. Um atri-buto 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, os atributos ou conjuntos de atri-butos seguintes:

• cod-empregado;

• nome-empregado3;

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

• cod-empregado + nome-empregado + morada-empregado + cidade-empregado + telefone-empregado + cod-projecto.

Chave Candidata Uma super-chave pode ter atributos que não são necessários para a identificação dos tuplos de forma única. Interessa-nos identificar as super-classes que contêm apenas os atributos necessários a essa iden-tificação. Dessa forma obtemos uma super-chave, tal que, nenhum sub-conjunto próprio dessa super-chave é uma super-chave – temos uma chave candidata. De entre as super-chaves apresentadas para o exem-plo da figura I.3.1, são chaves candidatas cod-empregado ou 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. Uma chave constituída por mais do que um atributo diz-se composta.

3 Considerando que o nome-empregado se refere ao nome completo e que não existem duas pessoas com o mesmo nome

Page 72: Access manual de base de datos , excelente xp

72 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Chave Primária De entre as chaves candidatas escolhemos uma para identificar de for-ma única cada tuplo da relação. Esta chave chama-se chave primária. Os atributos que formam a chave primária surgem sublinhados no esquema da relação. Retomando o exemplo da relação EMPREGADO, temos:

EMPREGADO (cod-empregado, nome-empregado, morada-empregado, cidade-empregado, telefone-empregado, cod-projecto)

Chave Estrangeira Quando um atributo surge em mais do que uma relação, estamos perante um relacionamento entre tuplos das relação. Um atributo ou conjunto de atributos de uma relação, em relacionamento com a chave primária de outra relação, diz-se uma chave estrangeira. (ver Figura I.3.3).

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

Page 73: Access manual de base de datos , excelente xp

I.3. O MODELO RELACIONAL DE BASES DE DADOS 73 Suponhamos que pretendemos guardar numa base de dados a infor-mação relativa a 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 apresentamos uma instância deste esquema. No exemplo apresentado, supõem-se que cada empregado apenas par-ticipa num projecto. Suponhamos agora que um empregado pode parti-cipar em mais do que um projecto. Nesta situação, há a necessidade de criar uma relação que contenha a informação sobre os empregados que trabalham em cada projecto4. Podemos utilizar o esquema seguinte, do qual apresentamos uma instância na figura I.3.4:

Figura I.3.4 Exemplo de uma base de dados relacional

4 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 74: Access manual de base de datos , excelente xp

74 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

EMPREGADO (cod-empre, nome-empre, morada-empre, cidade, telef-empre)

PROJECTO (Proj-Num, Descr-Proj, Local) EMPREGADOnoPROJECTO(cod-empre, Proj-Num,Nhoras) Verifique que a chave primária da relação EMPREGADOnoPROJECTO,

composta pelos atributos cod-empre e Proj-Num, permite identificar de forma única cada tuplo da tabela.

3.3 REGRAS DE INTEGRIDADE

Em qualquer modelo 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 ineren-tes ao próprio modelo relacional. Existem duas regras de integridade inerentes ao modelo relacional que são a regra de Integridade de Enti-dade e a regra de Integridade Referencial.

3.3.1 Integridade de Entidade

Esta regra diz-nos que, numa relação, nenhum dos atributos da chave primária pode ser nulo, isto é, terá de lhe ser atribuído algum valor.

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) atributo(s) que a constitui(em) é(são) nulo(s). Tomando o exemplo

Page 75: Access manual de base de datos , excelente xp

I.3. O MODELO RELACIONAL DE BASES DE DADOS 75 da figura I.3.3, um empregado não pode estar afecto ao projecto 4 (Cod-Proj=4), dado esse projecto não existir na relação PROJECTO.

3.4 OPERADORES DA ÁLGEBRA RELACIONAL

Outro aspecto importante a considerar num modelo de dados é a defini-ção das operações que podem ser efectuadas com os dados. A Álgebra Relacional define um conjunto de operações utilizadas para definir novas relações sem alterar as relações originais. O estudo da Álgebra Relacional é importante pois serve de base à definição de qualquer DML. Os operadores da Álgebra Relacional são oito: SELECT, PROJECT, PRODUCT, UNION, DIFFERENCE, JOIN, INTERSECT e DIVIDE. 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 e condição é

uma expressão boleana especificada sobre os atributos da relação con-siderada, 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).

O resultado é apresentado na figura I.3.5.

Page 76: Access manual de base de datos , excelente xp

76 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura I.3.5 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 tuplos dupli-cados. Este operador representa-se por,

∏lista(R)

onde ∏ é o símbolo utilizado para representar o operador 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 I.3.6.

Figura I.3.6 Resultado do operador PROJECT

Nome-Empre Telef-Empre

Ana 123456789

José 987654321

Pedro 456456456

Tiago 789789789

João 123123123

António 147258369

EMPREGADO

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

2 José Rua Moderno Gaia 987654321 2

5 João Rua Direita Porto 123123123 2

EMPREGADO

Page 77: Access manual de base de datos , excelente xp

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

3.4.3 O operador PRODUCT

Os dois operadores anteriores extraem informações apenas 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 é

Cod-Empre

Nome-Empre

Morada -Empre Cidade Telef-Empre Cod-Proj

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

de 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 Pare-

de 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 Pare-

de 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 Pare-

de 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 Pare-

de 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 Pare-

de Gaia

6 António Rua Torta Gaia 147258369 3 3 Colocar Portas

Maia

Figura I.3.7 Resultado do operador PRODUCT

Page 78: Access manual de base de datos , excelente xp

78 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

a concatenaçã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 obtemos a relação representada na figura I.3.7. Podemos combinar os operadores. Suponhamos, por exemplo, que pre-tendemos obter os nomes e os telefones dos empregados afectos aos projectos 1 e 3 bem como o local onde se realizam esses projectos. Para isso utilizamos os operadores da seguinte forma: σ (proj-num=1∨proj-num=3)∧ cod-proj=proj-num(∏nome-empre,telef-empre,cod-proj(EMPREGADO) ×

∏proj-num,local(PROJECTO))

3.4.4 O operador UNION

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

R ∪ S, é uma relação que inclui todos os tuplos pertencentes a R ou a S ou a ambas as relações. Os tuplos duplicados são eliminados. As relações devem ser compatíveis para ser feita a união, isto é, devem ter o mes-mo 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 traba-lham:

∏cidade(EMPREGADO) ∪ ∏local(PROJECTO). O resultado obtido encontra-se na figura I.3.8.

Page 79: Access manual de base de datos , excelente xp

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

Figura I.3.8 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 I.3.9.

Figura I.3.9 Resultado do Operador DIFFERENCE

R - S

Matosinhos

Ovar

R ∪ S

Porto

Gaia

Matosinhos

Ovar

Maia

Page 80: Access manual de base de datos , excelente xp

80 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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. A operação INTERSECTION pode ser obtida a partir da operação DIFFE-

RENCE da seguinte forma:

R ∩ S = R – ( R – S)

Como exemplo, obtenhamos as cidades onde vive algum dos emprega-dos e também estão a ser desenvolvidos projectos:

∏cidade(EMPREGADO) ∩ ∏local(PROJECTO) Obtemos o resultado apresentado na figura I.3.10.

Figura I.3.10 Resultado do operador INTERSECT

3.4.7 O operador JOIN

A operação JOIN, permite-nos combinar tuplos relacionados, perten-centes a duas (ou mais) relações. Esta operação é a mais importante da Álgebra Relacional. Deriva do operador PRODUCT e é equivalente a apli-car uma selecção ao produto cartesiano de duas relações. De uma for-ma geral a operação JOIN aplicada a duas relações R e S pode ser defi-nida como:

R <condição> S = σ<condição>(R × S).

R ∩ S

Porto

Gaia

Page 81: Access manual de base de datos , excelente xp

I.3. O MODELO RELACIONAL DE BASES DE DADOS 81 Normalmente, esta operação é chamada de θ-JOIN (teta join). Os tuplos

cujos atributos comuns são nulos, não surgem no resultado. 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 exemplo, listemos os nomes e o trabalho desenvolvido pelos ope-rários que trabalham na mesma cidade onde vivem. Conseguí-lo-emos da seguinte forma: ∏nome-empre,cidade,cod-proj(EMPREGADO) cidade=local∧ cod-proj=num-proj

∏ proj -num,descr-proj,local(PROJECTO) O resultado é apresentado na figura I.3.11.

Figura I.3.11 Resultado do operador JOIN

Ao efectuar uma destas operações, teremos sempre um ou mais pares de atributos que têm o mesmo valor para todos os tuplos. 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 NATURAL JOIN5. Quando os atribu-tos que se correspondem têm o mesmo nome, não necessitamos da condição e esta operação representa-se por,

R S. Por vezes ao efectuar uma operação JOIN entre duas relações, um tuplo não tem um tuplo correspondente na outra relação, isto é, existem

5 Utilizamos aqui a definição de NATURAL JOIN sugerida por [Elmasri e Navathe,1989], página 158, que é diferente da definição inicialmente proposta por Codd. No entanto, a definição de Codd está incluída nesta definição.

Nome-Empre

Cidade Cod-Proj

Proj-Num

Descr-Proj Local

Ana Porto 1 1 Colocar Tapetes

Porto

José Gaia 2 2 Pintar

Parede Gaia

Page 82: Access manual de base de datos , excelente xp

82 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

tuplos de uma relação cujo valor não existe nos tuplos da outra relação. Existe uma operação chamada OUTER JOIN, na qual se mantêm esses tuplos na nova relação, sendo que os valores em falta são nulos. 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, defi-nida apenas em C, que inclui os tuplos de R, tais que os valores dos restantes atributos de A6 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,cod-proj(EMPREGADO) : σnum-proj=1(∏ proj-num(PROJECTO)).

Figura I.3.12 Resultado do operador DIVIDE

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

Proj-Num

1

Nome-Empre

Ana

Pedro

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

Nome-Empre Cod-Proj

Ana 1

José 2

Pedro 1

Tiago 3

João 2

António 3

Page 83: Access manual de base de datos , excelente xp

I.3. O MODELO RELACIONAL DE BASES DE DADOS 83 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

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 direc-tamente na Álgebra Relacional. A maioria dos SGBD`s comerciais for-nece uma linguagem declarativa de alto nível. A mais conhecida é a SQL, do inglês Structured Query Language. Em 1974, D. Chamberlin definiu uma linguagem 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 trabalhos para a definição de normas para a SQL. As normas iniciais foram 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 disponíveis apresentam melhorias que os tornam distintos, dificultando a portabilidade 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 relacional de 1970, supor-tando características de modelos orientados a objectos, tais como, herança e polimorfismo. Permite também a existência de tipos e de roti-nas 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 seguintes:

Page 84: Access manual de base de datos , excelente xp

84 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Enhanced Datetime Facilities, Enhanced Integrity Management, PSM7, CLI8, Basic Object Support, Enhanced Object Support, Active Data-base, SQL/MM9 e OLAP. Seguidamente iremos fazer uma apresentação resumida de alguns dos comandos10 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 termos formais, relações, atributos e tuplos. Em vez disso utilizam-se os termos tabelas, colunas e linhas.

3.5.1 Definição de dados

A SQL disponibiliza um conjunto de comandos para criar, alterar e apa-gar tabelas e outras estruturas. Os comandos são CREATE, ALTER e DROP, respectivamente. CREATE Para definir a estrutura da base de dados que irá conter as tabelas utili-zamos 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 comando é11:

7 Persistent Stored Models 8 Call Lever Interface 9 Multi Media 10 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. 11 Os nomes entre <...> serão substituídos pelos nomes respectivos. Aquilo que se encontra entre parêntesis recto é opcional. O símbolo “|” indica que apenas uma das opções é utilizada.

Page 85: Access manual de base de datos , excelente xp

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

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.13 apresentamos os tipos de dados definidos nas normas, para a linguagem SQL.

Tipos de dados Declarações

Carácter 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.13 Tipos de dados na SQL

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

JECTO. Devemos criar a tabela PROJECTO em primeiro lugar devido à existência de uma chave estrangeira na tabela EMPREGADO.

CREATE TABLE PROJECTO( NUM-PROJ INTEGER NOT NULL UNIQUE, DESCR-PROJ CHAR(50) NOT NULL, LOCAL CHAR(20) NOT NULL, PRECO-HORA FLOAT, PRIMARY KEY (NUM-PROJ));

Page 86: Access manual de base de datos , excelente xp

86 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

CREATE TABLE EMPREGADO( COD-EMPR INTEGER NOT NULL UNIQUE, NOME-EMPR CHAR(20) NOT NULL, MORADA-EMPRE CHAR(50) NOT NULL, CIDADE CHAR(15) NOT NULL, MORADA-EMPRE CHAR(50) NOT NULL, TELEF-EMPRE CHAR(9) NOT NULL, COD-PROJ CHAR(50) NOT NULL, PRIMARY KEY (COD-EMPR), FOREING KEY (COD-PROJ) REFERENCES PROJECTO (NUM-PROJ) 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, alte-rando as características de uma coluna já existente ou eliminando uma coluna. A sintaxe básica é a seguinte:

• 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 tabela e estruturas associadas. A sua sintaxe básica é a seguinte:

DROP DATABASE <nome-base-dados>

Page 87: Access manual de base de datos , excelente xp

I.3. O MODELO RELACIONAL DE BASES DE DADOS 87 Existe também o comando DROP TABLE que permite eliminar uma determinada 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 actuali-zaçã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 sin-taxe básica é:

INSERT INTO <nome-tabela> [(<lista atributos>)] VALUES (<lista-valores>);

Voltemos ao nosso exemplo das tabelas EMPREGADO e PROJECTO. Para inserir dados na tabela PROJECTO, fornecendo dados para todas as colunas, 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:

Page 88: Access manual de base de datos , excelente xp

88 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

INSERT INTO EMPREGADO(cod-empre,nome-empre,cod-proj) 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 num-proj=2 WHERE cod-empr=1;

Suponhamos agora que pretendemos efectuar um incremento de 5% no preço por hora do projecto 1. Para isso efectuamos o seguinte coman-do:

UPDATE PROJECTO SET preco-hora=preço-hora*1,05 WHERE num-proj=1;

DELETE O comando DELETE permite-nos eliminar uma ou mais linhas de da-dos. A sua sintaxe básica é a seguinte:

DELETE FROM <nome-tabela> [WHERE<condição>]

Page 89: Access manual de base de datos , excelente xp

I.3. O MODELO RELACIONAL DE BASES DE DADOS 89 Por exemplo, eliminaremos da tabela EMPREGADO todos os empregados afectos ao projecto 3:

DELETE FROM EMPREGADO WHERE num-proj=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 Querie como questão. Uma querie é 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. Todas as questões são baseadas no comando SELECT cuja sintaxe básica é:

SELECT [DISTINCT|ALL] <lista-atributos1>|* FROM <nome-tabela> [WHERE <condição1>] [GROUP BY <lista-atributos2>] [HAVING <condição2>] [ORDER BY <lista-atributos3>]

onde

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

tos indicados iguais, permitindo a utilização de funções

Page 90: Access manual de base de datos , excelente xp

90 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

de agregação: MAX (o valor máximo encontrado para aquele atributo), MIN (o valor mínimo encontrado para aquele atributo), COUNT (o número de linhas contendo o atributo especificado), SUM (a soma de todos os valores para um atributo) e AVG (a média aritmética de todos os valores de um atributo);

HAVING filtra os grupos que satisfazem a condição2; SELECT especifica os atributos que irão surgir na resposta; ORDER BY especifica quais os atributos que irão funcionar

como chave de ordenação. Se pretendermos eliminar as repetições existentes nas linhas resultan-tes de um comando SELECT, utilizamos a cláusula DISTINCT. A cláu-sula ALL mantém as características associadas por defeito ao comando SELECT, mostrando todo o conjunto de registos. Utilizamos uma das duas cláusulas, sendo que, por defeito, a cláusula ALL se encontra associada ao comando SELECT. Podemos utilizar o comando SELECT numa lista de atributos ou utilizar o símbolo * quando pretendemos especificar todos os atributos. Veremos de seguida alguns exemplos de utilização do comando SELECT.

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

• Obter todas as linhas de determinadas colunas:

SELECT cod-empr, nome-empr, num-proj FROM EMPREGADO;

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

balho é de oito horas: SELECT cod-proj, descr-proj, 8*preço-hora FROM PROJECTO;

Page 91: Access manual de base de datos , excelente xp

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

• Obter todos os empregados do projecto 1, do Porto: SELECT cod-empr, nome-empr, cidade, num-proj FROM EMPREGADO WHERE cidade=’Porto’ AND num-proj=1;

• Obter uma lista de todos os projectos, ordenada por preço-hora: SELECT * FROM PROJECTO ORDER BY preço-hora;

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

SELECT COUNT(cod-empr), cidade FROM EMPREGADO GROUP BY cidade;

A linguagem SQL permite-nos combinar resultados utilizando os opera-dores UNION, INTERSECT e EXCEPT (semelhantes aos operadores da Álgebra Relacional UNION, INTERSECT e DIFFERENCE). Alguns dialec-tos de SQL não suportam os operadores INTERSECT e EXCEPT e outros dialectos 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 diferen-tes 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 especificar a coluna relacionada para a junção. Por exemplo, se preten-dermos especificar o custo por hora de cada um dos empregados utili-zaremos:

Page 92: Access manual de base de datos , excelente xp

92 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

SELECT cod-empr, nome-empr, cod-proj, preço-hora FROM EMPREGADO, PROJECTO WHERE empregado.cod-proj = projecto.num-proj;

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 aprofun-dada da linguagem SQL sai fora do âmbito deste livro, não iremos apro-fundar mais este assunto12.

3.6 AS REGRAS DE CODD

Com o aparecimento do modelo relacional, muitos dos SGBD`s basea-dos nos modelos hierárquico e em rede foram adaptados de modo a apresentar algumas características do modelo relacional. Codd especifi-cou, em 1985, algumas regras que poderiam servir para identificar um SGBD relacional. 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 capa-cidades 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;

12 Para uma abordagem mais aprofundada sugerimos [Connoly e Begg, 1998] ou [Damas, 1999].

Page 93: Access manual de base de datos , excelente xp

I.3. O MODELO RELACIONAL DE BASES DE DADOS 93 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 apli-cá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 da-dos; 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 pelo 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 eliminação;

Page 94: Access manual de base de datos , excelente xp

94 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 impliquem 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 armazenados no catálogo; 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 95: Access manual de base de datos , excelente xp

4

Modelação de Dados

Diz-nos Chiavenato que “para se estudar ou analisar um sistema, utili-zam-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 repro-duzir”. 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ência 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-Relaciona-mento (E-R). Inicialmente, em 4.1, iremos debruçar-nos sobre a impor-tâ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, aplicando alguns dos conceitos desenvolvidos em 4.2. Em 4.4, iremos estabelecer a correspondência entre o modelo E-R e o modelo relacional de bases 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

Page 96: Access manual de base de datos , excelente xp

96 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

desempenho do sistema. Como vimos no capítulo 1, os dados são utili-zados 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 sectores de uma organização. Como resultado, os dados devem estar organizados de modo a serem flexíveis e de modo a que se possam adaptar para responder a necessidades, à partida, imprevi-síveis – obter dados com estas características é este o principal objec-tivo 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 abs-tracção. A abstracção é um processo de identificação dos aspectos importantes 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 pro-vá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 per-mite 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 desenho de sistemas mais complexos. Assim sendo, têm vindo a ser desenvolvidos novos conceitos envolvendo aspectos semânticos, incor-porados no modelo E-R original, com sucesso. Têm também sido pro-

Page 97: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 97

postos vários modelos de dados diferentes. Não iremos abordar este assunto dado estar fora do âmbito deste livro. Para um aprofundamento deste assunto, consideramos que o trabalho apresentado em [Chen, et all, 2000] ou em [Elmasri e Navathe,1989] (capítulo 15), podem consti-tuir bons pontos de partida.

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 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 aproximem, formando uma estrutura comum e é um auxiliar precioso na concepçã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 entidades, representados através de um diagrama chamado Diagrama E-R. Veremos seguidamente alguns desses conceitos de uma forma mais pormenorizada.

4.2.1 Entidades e Atributos

Uma entidade é um conjunto de pessoas, lugares, objectos, aconteci-mentos ou conceitos sobre o qual pretendemos guardar dados. Por exemplo, numa clínica dentária podemos identificar as seguintes enti-dades:

• dente – o conjunto de todos os dentes,

• tratamento geral – o conjunto de todos os tratamentos gerais,

• dentista – o conjunto de todos os dentistas,

Page 98: Access manual de base de datos , excelente xp

98 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• paciente – o conjunto de todos os pacientes,

• ...

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.

Dente Paciente

TratamentoGeralDentista

Figura I. 4. 1 Exemplos de entidades

Uma instância ou ocorrência de uma entidade é um elemento desse conjunto. Por exemplo, molar ou canino são ocorrências da entidade dente. Um atributo de uma entidade é uma característica específica dessa entidade. Por exemplo, a entidade paciente terá como atributos: código do paciente, nome do paciente, data de nascimento, morada, idade, nome da caixa, número de beneficiário e contacto telefónico. Cada atri-buto tem um domínio que é o conjunto dos valores que podem ser atri-buídos a esse atributo. Os atributos podem partilhar domínios. Por exemplo, a morada de um paciente e a morada de um dentista 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 à enti-dade correspondente. 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 dia-

Page 99: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 99

grama representam-se os novos atributos por uma elipse, ligada ao atri-buto correspondente. 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 paciente 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 paciente é um atributo derivado, visto que pode ser calculada a partir da data de nascimento do paciente. No diagrama E-R os atributos deriva-dos representam-se por uma elipse com linha tracejada. Na figura I.4.2 representamos, num diagrama, a entidade paciente os seus atributos.

Paciente

Código Paciente

NomePaciente Morada

Rua PortaCidade

CódigoPostal

DataNascimento

idade

nº beneficiárioTelefone

nome caixa

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 variável. Esta identificação faz-se através da chave primária1. Uma

1 Ou atributo(s) identificador(es)

Page 100: Access manual de base de datos , excelente xp

100 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 paciente, podemos identificar duas chaves candidatas: código paciente e nº caixa. Escolhemos código paciente como chave primária e identificamo-la sublinhando o nome no diagrama (ver Figura I.4.2). Uma chave candidata que consiste de um ou mais atributos, diz-se uma cha-ve 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, podemos identificar os seguintes relacionamentos:

• paciente tem dente,

• dentista faz ao paciente o tratamento geral.

Um relacionamento é um conjunto de ligações entre duas (ou mais) ocorrências de uma entidade. Cada uma dessas ligações chama-se uma ocorrência do relacionamento. No diagrama, um relacionamento representa-se por um losango ligado com as entidades associadas (Figura I.4.3)

Paciente tem Dente

Figura I.4. 3 Representação de um relacionamento As entidades envolvidas num determinado relacionamento chamam-se participantes nesse relacionamento. Ao número de participantes num relacionamento chama-se grau do relacionamento. A um relaciona-

Page 101: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 101

mento de grau dois chama-se relacionamento binário. Um exemplo é o relacionamento tem apresentado na figura I.4.3. Um relacionamento de grau três chama-se relacionamento ternário. Existe um relacionamento ternário entre as três entidades dentista, paciente e tratamento geral, visto que o dentista faz ao paciente o tratamento geral. Este relaciona-mento está representado na figura I.4.4. Podem-se definir relaciona-mentos de grau superior a três.

TratamentoGeral

paciente

dentista

faz

Figura I.4. 4 Um relacionamento ternário

Por vezes uma entidade participa mais do que uma vez num relaciona-mento com papéis diferentes. Neste caso o relacionamento diz-se recursivo ou unário. Consideremos uma empresa na qual um funcioná-rio faz a supervisão de outros funcionários. Estamos perante um rela-cionamento recursivo da entidade funcionário cujo nome é supervisionar e que representamos na figura I.4.5.

Empregado

Supervisiona

Figura I.4. 5 Um relacionamento Recursivo

Page 102: Access manual de base de datos , excelente xp

102 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Podem existir situações em que exista mais do que um relacionamento entre entidades. Consideremos o exemplo de uma empresa que comer-cializa vários produtos através de vendedores. Os clientes são angaria-dos pelos vendedores, ficando afectos a esse vendedor até que ele dei-xe 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 chamamos angaria e ao outro chamamos faz visita. Na figura I.4.6 podemos visualizar a representação destes relacionamentos.

Cliente Vendedor

angaria

faz visita

Figura I.4. 6 Duas entidades / dois relacionamentos

Um aspecto que consideramos importante referir, é que um relaciona-mento ternário não pode ser substituído por três relacionamentos biná-rios, podendo aliás coexistir, pois representam coisas distintas. Consi-deremos 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 encomendas de cada categoria de produto e quais as categorias de cada produto que são produzidas (saias de seda, casacos de lã, calças de poliéster,...). Existem três entidades: encomenda, produto e catego-ria. Identificamos um 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 categoria de nome subdi-vide-se. (Figura I.4.7).

Page 103: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 103

encomenda

produto categoria

contém

subdivide-se

Figura I.4. 7 Relacionamento ternário vs Relacionamento binário

Vejamos então a diferença entre a existência do relacionamento ternário e de três relacionamentos binários. O relacionamento ternário per-mite-nos conhecer quais os produtos de cada categoria presentes em cada encomenda. Por exemplo, na encomenda 1, existem calças de poliéster e saias de seda. Se substituíssemos este relacionamento ter-nário por três relacionamentos binários, conheceríamos:

• através do relacionamento entre a entidade produto e a entidade encomenda, os produtos que existem em cada encomenda, por exemplo, na encomenda 1 existem lãs e sedas;

• através do relacionamento entre a entidade categoria e a enti-dade encomenda, as categorias presentes em cada encomenda, por exemplo, na encomenda existem calças e saias;

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

Verificamos assim que os três relacionamentos binários não poderão substituir o relacionamento ternário, pois não fornecem a mesma infor-mação.

Page 104: Access manual de base de datos , excelente xp

104 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 cardi-nalidade pode ser de três tipos: um para um (1:1), um para muitos (1:M) e 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 depar-tamento só pode ter um gestor. Identificamos as entidades departamen-to e empregado e um relacionamento entre as duas entidades, a que chamamos gere. Para concluirmos sobre a cardinalidade deste relacio-namento verifiquemos que cada empregado pode gerir um departamen-to (participa no máximo uma vez no relacionamento, podendo existir empregados que não participam no relacionamento, isto é, há empre-gados que não gerem qualquer departamento) e cada departamento é gerido por um empregado. Nesta situação dizemos que existe um rela-cionamento de 1:1 e indicamo-lo no diagrama colocando o número apropriado junto de cada entidade. (Figura I.4.8).

empregado gere departamento1 1

Figura I.4. 8 Um relacionamento com cardinalidade 1:1

Consideremos agora o relacionamento angaria entre as entidades clien-te e vendedor, apresentado na figura I.4.6. Vejamos qual a cardina-lidade 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.9)

Page 105: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 105

cliente angaria vendedorM 1

Figura I.4. 9 Um relacionamento com cardinalidade 1:M

Por fim, consideremos o relacionamento visita entre as entidades cliente e vendedor, da figura I.4.6. Determinemos a cardinalidade do relacio-namento. Nesta situação verificamos que cada vendedor faz visitas a vários clientes e, por seu lado, cada cliente pode ser visitado por vários vendedores. No diagrama colocamos em M junto de uma das entidades e um N junto da outra entidade. (Figura I.4.10)

vendedor faz visita clienteN M

Figura I.4. 10 Um relacionamento de cardinalidade M:N

Na figura I.4.11, apresentamos as cardinalidades dos relacionamentos apresentados nos exemplos das figuras I.4.3 a I.4.7. 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.8. Um departamento obrigatoriamente deve ser gerido por algum empregado – participação obrigatória. No entanto, existem empregados que não gerem algum departamento, isto é, existem empregados que não participam no relacionamento – parti-cipação opcional. No diagrama, indicamos a participação opcional, colocando um círculo junto da entidade cuja participação é opcional (Figura I.4.12).

Page 106: Access manual de base de datos , excelente xp

106 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

empregado

supervisiona

M

1

paciente tem denteM N

cliente vendedor

angaria

visita

M 1

M N

tratamentogeral faz paciente

dentista

M N

P

encomenda

produto categoriasubdivide-se

contém

1

M N

M N

Figura I.4. 11 Cardinalidade de vários relacionamentos

empregado gere departamento1 1

Figura I.4. 12 Participação opcional num relacionamento

Page 107: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 107

4.2.3 Entidades fracas

Uma entidade fraca é uma entidade cuja existência depende de outra entidade e que herda, no todo ou em parte, a sua chave primária. No diagrama representa-se uma entidade fraca através de um rectângulo com linha dupla. Consideremos a situação em que se pretendemos rea-lizar 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á repre-sentado na figura I.4.13. A entidade dependente é uma entidade fraca.

empregado depende de dependente

cod-empr

nomeempr

data nascempr cod-empr

num-dep nomedep

data nascdep

1 N

Figura I.4. 13 Relacionamento com uma entidade fraca

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. 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, nomeadamente no que se prende com a existência de redundâncias, existindo a necessidade de criar uma “ponte” entre as

Page 108: Access manual de base de datos , excelente xp

108 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

entidades. Essa ponte é uma entidade composta que se representa no diagrama através de um rectângulo circunscrito ao losango e que pode ter o mesmo nome do relacionamento ou outro nome. Comecemos pelo relacionamento da figura I.4.10. Neste relacionamento existe a necessidade de conhecer a data da visita. Poderíamos conside-rar a data como atributo da entidade vendedor, mas isso implicaria que o vendedor visitasse todos os seus clientes na mesma data. Algo idên-tico se passaria se considerássemos a data como atributo do cliente. Transformamos então o relacionamento em dois relacionamentos de 1:M, através da criação de uma entidade composta a que chamamos visita, representada na figura I.4.14.

cliente visita vendedor1 M M 1

codcliente

data

codvendedor

codcliente

codvendedor........ ........

Figura I.4. 14 Uma entidade composta

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 par-te da chave primária, pois se assim não fosse um determinado cliente só poderia ser visitado uma vez por um determinado vendedor2, dado que, por definição, um valor da chave primária de uma entidade deverá identificar de forma única uma ocorrência dessa entidade. Com a criação da entidade composta obtemos dois relacionamentos do tipo 1:M, pois:

2 Nesta situação cada cliente só é visitado uma vez num dia, pois caso contrário este conjunto de atributos não seria chave primária

Page 109: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 109

• um cliente pode ter várias visitas de um vendedor, em datas dife-rentes, 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 apresentado na figura I.4.15, entre a entidade encomenda e a entidade produto: uma encomenda tem vários produtos sendo que cada produto pode estar contido em várias encomendas.

encomenda linhaencomenda produto

1 M M 1

nºencomenda

quantidade

codproduto

nºencomenda

codproduto

encomenda produtoM Nlinha

encomenda

........ ........

Figura I.4. 15 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 encomenda. Note que o símbolo de participação opcional junto da entidade produto, passou para a entidade composta linha-encomenda (ver figura I.4.15), pois torna-se possível que uma linha-encomenda não exista na encomenda se não contiver algum produto. O atributo quanti-dade, da entidade composta linha-encomenda, existe pois é necessário conhecer a quantidade de produto em cada linha-encomenda, de uma encomenda.

Page 110: Access manual de base de datos , excelente xp

110 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

4.2.5 Uma comparação de notações

A notação que aqui temos vindo a apresentar é típica do modelo desen-volvido 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. Bachmam,

• Rein85, desenvolvido por D. Reiner em 1985,

• IDEFIX, derivado de estudos do ICAM3, 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. 16 Uma comparação de notações

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.16 apresentamos uma comparação des-tas notações. 3 Integrated Computer-Aided Manufacturing

Page 111: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 111

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 nar-rativa das operações e procedimentos da organização em estudo. De seguida, é feito o esboço do diagrama E-R, que é apresentado para revisão. O processo repete-se até que os utilizadores finais e os analis-tas do sistema concordem que o diagrama E-R representa o sistema real de uma forma adequada4. De seguida, iremos desenvolver uma proposta de diagrama E-R, para uma determinada organização, da qual apresentamos a seguinte des-crição: 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 efectuado em datas distintas, ao mesmo paciente. Existem dois tipos de trata-mentos distintos: os tratamentos gerais (destartarização, gengivectomia, ortopantomografia, teleradiografia) e os tratamentos aplicados especifi-camente 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.

4 Para um mesmo sistema podem ser apresentados diversos diagramas E-R adequa-dos.

Page 112: Access manual de base de datos , excelente xp

112 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 regis-tar a data. Mensalmente é preciso obter relatórios dos tratamentos e controlos efectuados nesse mês, para cada um dos pacientes. Da leitura atenta da descrição do sistema em causa, identificamos as seguintes entidades:

• Paciente

• Dente

• Tratamento geral

• Tratamento específico

• Aparelho. Passamos agora à identificação de relacionamentos entre estas entida-des:

• Relacionamento entre as entidades Tratamento Geral e Paciente Identificamos um relacionamento de muitos para muitos (M:N), entre as entidades Tratamento Geral e Paciente, visto que cada paciente pode efectuar vários tratamentos gerais e cada tratamento geral pode ser efectuado a vários pacientes. A participação das entidades é opcional visto existirem pacientes que poderão não efectuar algum tratamento geral e assim não participam no relacionamento, bem como poderão existir alguns tipos de tratamento geral que nunca foram efectuados e assim não participam no relacionamento. Este relacionamento é repre-sentado na figura I.4.17.

Page 113: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 113

pacientetratamento

geralé efectuadoM N

Figura I.4. 17 Relacionamento entre paciente e tratamento geral

• Relacionamento entre as entidades Tratamento Específico, Den-te e Paciente

Existe um relacionamento de muitos para muitos entre as três entidades Tratamento Específico, Dente e Paciente, dado que cada paciente pode efectuar vários tratamentos específicos a um dente, a cada dente de um paciente podem ser realizados vários tratamentos específicos e um tra-tamento específico pode ser realizado a vários dentes de vários pacien-tes. A participação de todas as entidades é opcional visto poderem exis-tir tratamentos específicos que não são realizados e dentes ou pacien-tes aos quais não são realizados quaisquer tratamentos específicos. Representamos este relacionamento na figura I.4.18.

paciente dente

tratamentoespecífico

realizar

M

N

P

Figura I.4. 18 Relacionamento entre as entidades Paciente, dente e Tratamento específico

Page 114: Access manual de base de datos , excelente xp

114 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• Relacionamentos entre as entidades aparelho e paciente

Identificamos dois relacionamentos entre as entidades aparelho e paciente. Um deles, a que chamamos colocar, é um relacionamento de muitos para muitos, dado que cada paciente pode colocar vários apa-relhos e cada aparelho pode ser colocado a vários pacientes. A partici-pação de ambas as entidades é opcional pois podem existir clientes que nunca colocaram aparelhos. O outro relacionamento, a que chamamos controlar, é também um relacionamento de muitos para muitos, visto que cada paciente pode controlar vários aparelhos e cada aparelho pode ser controlado a vários pacientes. Representamos estes dois rela-cionamentos na figura I.4.19.

paciente aparelho

coloca

controla

M N

MN

Figura I.4. 19 Relacionamento entre as entidades paciente e aparelho

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

Page 115: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 115

paciente

tratamentoespecífico

dente

tratamentogeral

aparelho

efectua

realiza

controla

coloca

N

P

M

M

N

M

N

M

N

Figura I.4. 20 Diagrama E-R para o exemplo apresentado

Passemos agora aos atributos. Quanto ao paciente, será necessário guardar os seus dados pessoais: nome do paciente, caixa, número de beneficiário, regime, data de validade do cartão, morada do paciente, telefone do paciente, data da primeira consulta, ... Além disso, é neces-sária a existência de uma chave primária. Assim sendo, os atributos da entidade cliente são: cod paciente, nome, morada, telefone, nº benefi-ciário, caixa, regime, data de validade, data da 1ª consulta. De forma análoga podemos identificar os atributos das restantes entidades. Para a entidade tratamento geral temos os atributos cod tratamento geral, descrição tratamento geral e custo tratamento geral; para a entidade tratamento específico temos os atributos cod tratamento específico, descrição tratamento específico e custo tratamento específico; para a entidade dente temos os atributos cod dente e descrição dente; para a entidade aparelho temos os atributos cod aparelho, descrição aparelho e custo aparelho.

Page 116: Access manual de base de datos , excelente xp

116 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

tratamentoespecífico dente

tratamentoespecíficoefectuado

paciente

tratamentogeral

efectuado

tratamentogeral

aparelho

cod dentecusto tratesp

descr tratesp

cod tratesp

codpaciente

descraparelho

descrdente

data 1ªconsulta

morada

datavalidade

telefone

codaparelho

cod dente

datatratamento

custo tratgeral

custoaparelho

nome

codpaciente

cod tratesp

regime

codpaciente

nºbeneficiáriocaixa

controlo

colocaçãodatacontrolo

codaparelho

cod tratgeral

descr tratgeral

datacolocação

codpaciente

codaparelho

datatratamento

cod tratgeral

codpaciente

1 MM 1

M

1

1

M

1

M

1

M

1

M

1

M

1

M

Figura I.4. 21 Diagrama E-R com atributos

Page 117: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 117

É também necessário transformar os relacionamentos realiza, efectua, controla e coloca em entidades compostas. Em cada um dos casos deverá ser incluído na chave primária dessas entidades compostas5 um atributo data, pois é necessário conhecer a data em foi efectuado cada tratamento geral de um cliente, a data em que foi realizado cada trata-mento específico ao dente de um cliente, a data em que foi colocado um aparelho a um cliente e a data em que foi controlado o aparelho de um cliente. Referimos que o mesmo tratamento pode ser realizado em datas diferentes ao mesmo cliente e ao mesmo dente, o mesmo apare-lho6 pode ser colocado em datas diferentes ao mesmo paciente e o mesmo aparelho de um cliente pode ter vários controlos em datas dife-rentes. Obtemos assim o diagrama E-R apresentado na figura I.4.217.

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 diagrama E-R. No caso de atributos compostos incluímos cada um dos atributos simples que o constituem. Para o diagrama apresen-tado na figura I.4.21 obtemos as relações seguintes: Paciente (cod paciente, nome, morada, telefone, nº beneficiário, cai-

xa, regime, data de validade, data da 1ª consulta)

5 Como já vimos, fazem obrigatoriamente parte da chave primária os atributos que são chaves primárias das entidades que se relacionam. 6 Tipo de aparelho. 7 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.

Page 118: Access manual de base de datos , excelente xp

118 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

TratamentoGeral (cod tratamento geral, descrição tratamento geral, custo tratamento geral)

TratamentoGeral (cod tratamento específico, descrição tratamento específico, custo tratamento específico)

Dente (cod dente, descrição dente) Aparelho (cod aparelho, descrição aparelho, custo aparelho)

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 enti-dade fraca é dependente. À chave primária dessa relação deve(m) ser adicionado(s) o(s) atributo(s) que formam a chave primária da entidade fraca. Tomando como exemplo o da figura I.4.13, 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 obtidas a partir de uma das entidades e incluímos a(s) chave(s) pri-mária(s) da(s) outra(s) como chave(s) estrangeira(s). É melhor escolher uma relação cuja entidade tenha participação total no rela-cionamento. Para o exemplo da figura I.4.12, 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 des-ta entidade como chave estrangeira da entidade que se encontra “do lado N”. A partir do exemplo da figura I.4.9 obtemos as seguintes relações: Cliente (cod cliente, ..., cod vendedor) Vendedor (cod vendedor, ....)

5. Cada relacionamento de M:N, foi previamente transformados numa entidade composta. Cada uma dessas entidades compostas dá lu-gar a uma nova relação no esquema relacional, com os atributos identificados, incluindo a chave primária. Por exemplo, a partir do

Page 119: Access manual de base de datos , excelente xp

I.4. MODELAÇÃO DE DADOS 119

diagrama apresentado na figura I.4.14 obtemos as relações seguin-tes: 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: Paciente (cod paciente, nome paciente, rua, porta, código postal,

data nascimento, idade, nome caixa, nº beneficiário) Telefone-pac (cod paciente, telefone)

Aplicando estas regras, a partir do diagrama E-R apresentado na figura I.4.21, obtemos o esquema relacional seguinte:

Paciente (cod paciente, nome, morada, telefone, nº beneficiário, cai-xa, regime, data de validade, data da 1ª consulta)

TratamentoGeral (cod tratamento geral, descrição tratamento geral, custo tratamento geral)

TratamentoEspecífico (cod tratamento específico, descrição trata-mento específico, custo tratamento específico)

Dente (cod dente, descrição dente) Aparelho (cod aparelho, descrição aparelho, custo aparelho) TratamentoGeralEfectuado (cod paciente, cod tratamento geral, data

do tratamento) TratamentoEspecíficoEfectuado (cod paciente, cod dente, cod tra-

tamento específico, data do tratamento) Colocação (cod paciente, cod aparelho, data colocação) Controlo (cod paciente, cod aparelho, data controlo)

Este esquema relacional irá ser utilizado nas partes II e III deste livro, como exercício guiado, sendo que cada relação deste esquema relacio-nal é uma tabela do MsAccess.

Page 120: Access manual de base de datos , excelente xp

120 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Page 121: Access manual de base de datos , excelente xp

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 afirmar que ao utilizar o modelo E-R seguida da validação das estruturas obtidas, através da normalização, estamos a fazer uma abor-dagem 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 apro-priado de relações. A normalização é uma técnica que consiste de várias fases chamadas Formas Normais. Em cada uma das fases é feita uma análise de rela-cionamentos 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). Exis-tem 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 consequente-mente ajudam a eliminar as anomalias que resultam dessas redundân-

Page 122: Access manual de base de datos , excelente xp

122 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

cias. 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 res-posta mais lenta. Devemos encontrar sempre o ponto de equilíbrio ade-quado a cada caso. Alguns autores afirmam que, para a maioria dos sistemas, basta efectuar a normalização até à 3FN, existindo, no entan-to, algumas aplicações especiais 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 normalizaçã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ên-cia funcional. Na secção 5.3 iremos estudar cada uma das formas nor-mais, 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 utili-zaremos nas partes II e III deste livro, como exercício guiado, e que já abordámos em 4.3. Consideremos o relatório apresentado na figura II.5.26. Podemos propor a tabela apresentada na figura I.5.1 como sendo uma tabela cujo con-teúdo corresponde às necessidades do relatório. Será este o ponto de partida para o trabalho a desenvolver ao longo deste capítulo.

cod paciente

nome Data Tratamento

Código Tratamento Específico

Designação Tratamento Específico

Código Dente

Descrição Dente

Custo

6 Ana Guedes 09-06-2002 exo Exodontia 11 Incisivo 50,00 €6 Ana Guedes 01-06-2002 endo Endodontia 15 Pré-Molar 50,00 €8 Artur Silva 10-06-2002 endo Endodontia 17 Molar 50,00 €4 Duarte Correia 11-06-2002 pro-e Prótese Esquelética 16 Molar 70,00 €4 Duarte Correia 05-06-2002 pro-a Prótese Acrílica 21 Incisivo 100,00 €4 Duarte Correia 02-06-2002 endo Endodontia 13 Canino 50,00 €4 Duarte Correia 01-06-2002 cor Coroa 17 Molar 52,00 €4 Duarte Correia 23-05-2002 endo Endodontia 11 Incisivo 50,00 €4 Duarte Correia 16-05-2002 pro-e Prótese Esquelética 15 Pré-Molar 70,00 €

Figura I.5. 1 Tabela não normalizada

Page 123: Access manual de base de datos , excelente xp

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

5.1 A IMPORTÂNCIA DA NORMALIZAÇÃO

Um dos principais objectivos que pretendemos atingir ao efectuar o desenho de uma base de dados relacional, é o de agrupar os atributos em relações de forma a minimizar as redundâncias dos dados, redu-zindo 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 con-junto de anomalias de inserção de dados, anomalias de eliminação de dados e anomalias de alteraçã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 trata-mento prótese acrílica para o paciente Artur Silva, devemos ter o cui-dado de inserir o preço correcto desse tratamento: pode acontecer que exista uma prótese acrílica com um preço de 100.00€ e outra prótese acrílica com um custo diferente. Outro tipo de anomalias de inserção acontece quando tentamos inserir um novo tratamento, que não foi apli-cado a nenhum dos pacientes. Isso obrigaria a que fosse inserido o valor nulo no código do paciente o que, sendo esse atributo chave primária, conduziria a uma quebra na restrição de integridade. Assim sendo, só poderemos inserir novos tratamentos na tabela da figura I.5.1 se eles forem efectuados a algum paciente.

• Anomalias de eliminação Se eliminarmos o tratamento coroa, efectuado ao paciente Duarte Cor-reia, perdemos a informação sobre esse tratamento, pois não existe em mais nenhuma linha da tabela.

• Anomalias de alteração Se o preço de um tratamento for alterado, deverá ser feita a actualiza-ção desse valor para todas as ocorrências desse tratamento. Se isso não acontecer a base de dados ficará num estado de inconsistência.

Page 124: Access manual de base de datos , excelente xp

124 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Para evitar as anomalias aqui apresentadas utilizamos a normalização. Através da aplicação desta técnica a tabela apresentada na figura I.5.1 vai ser decomposta em várias tabelas, 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 atri-butos. Por exemplo, se A e B são atributos de uma relação R, dizemos que B depende funcionalmente de A se cada valor de A está asso-ciado com exactamente um valor de B (A e B podem conter mais do que um atributo). Esta dependência funcional é representada por:

A àB. A diz-se o determinante. Tomemos o exemplo da tabela apresentada na figura I.5.1. O atributo Designação Tratamento Específico depende funcionalmente do atributo Código Tratamento Específico,

Código Tratamento Específico à Designação Tratamento Específico pois cada valor de Designação Tratamento Específico está associado com exactamente um valor de Designação Tratamento Específico:

cor à coroa endo à endodontia

No entanto, o atributo Data Tratamento não depende funcionalmente de atributo Código Tratamento Específico pois existem valores do atributo Código Tratamento Específico associados com mais do que um valor do atributo Data Tratamento:

Endo à 01-06-2002 Endo à 10-06-2002 Endo à 02-06-2002 Endo à 23-05-2002

Page 125: Access manual de base de datos , excelente xp

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

5.3 O PROCESSO DE NORMALIZAÇÃO

A normalização é executada como uma série de passos. Cada passo corresponde a uma Forma Normal com propriedades conhecidas, que serão apresentadas nas secções 5.3.1 a 5.3.5. À medida que procede-mos à 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 repetiti-vos - dizemos que ela se encontra numa forma não normalizada. No exemplo da figura I.5.1, podemos verificar que, para cada cliente exis-tem várias entradas do grupo de atributos Código Tratamento Especí-fico, Designação Tratamento Específico, Data Tratamento, Código Dente, Descrição Dente, Custo. Verificamos também que para cada tratamento de cada cliente existem várias entradas do grupo de atribu-tos Data Tratamento, Código Dente, Descrição Dente. 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 chave-tas. Assim para o exemplo da figura I.5.1 teremos1: Paciente = cod paciente, nome, morada, código postal, cidade,

{Código Tratamento Específico, Designação Tratamento Específico, {Código Dente, Descrição Dente, Data Tra-tamento}, Custo}

• 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 repeti-tivo são indentados. Para o exemplo da figura I.5.1 teremos:

1 Por conveniência para o processo de normalização, juntamos mais alguns atributos, além dos apresentados na tabela da figura I.5.1

Page 126: Access manual de base de datos , excelente xp

126 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Paciente cod paciente nome morada código postal cidade Tratamento*

Código Tratamento Específico Designação Tratamento Específico Dente*

Código Dente Descrição Dente Data Tratamento

Custo

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

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 atri-buto ou conjunto de atributos como chave primária da relação. Segui-damente, decompomos a estrutura removendo os atributos que formam os grupos repetitivos juntamente com os atributo(s) que formam 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 os grupos repetitivos. No exemplo que temos vindo a considerar obtemos (os atributos sublinhados formam a chave primária):

• Notação DeMarco

Page 127: Access manual de base de datos , excelente xp

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

Paciente = cod paciente, nome, morada, código postal, cidade Paciente/Tratamento = cod paciente, Código Tratamento Específico,

Designação Tratamento Específico, {Código Dente, Des-crição Dente, Data Tratamento}, Custo

• Notação Gane and Sarson

Paciente Paciente/Tratamento cod paciente cod paciente

Nome Código Tratamento Específico

Morada Designação Tratamento Específico

código postal Dente*

cidade Código Dente

Descrição Dente

Data Tratamento

Custo

Verificamos que ainda existem grupos repetitivos, pelo que aplicamos novamente o processo, obtemos:

• Notação DeMarco Paciente = cod paciente, nome, morada, código postal, cidade Paciente/Tratamento = cod paciente, Código Tratamento Específico,

Designação Tratamento Específico, Custo TratamentosEfectuados = cod paciente, Código Tratamento Especí-

fico, Código Dente, Descrição Dente, Data Tratamento

• Notação Gane and Sarson

Paciente Paciente/Tratamento TratamentosEfectuados cod paciente cod paciente cod paciente

Nome Código Tratamento Específico Código Tratamento Específico

Morada Designação Tratamento Específico Código Dente

Código postal Custo Descrição Dente

Cidade Data Tratamento

Page 128: Access manual de base de datos , excelente xp

128 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Vamos agora verificar que todos os atributos dependem funcionalmente da chave primária. A relação paciente apresenta as seguintes depen-dências funcionais:

f1: cod paciente à nome, morada, código postal, cidade f2: código postal à cidade

A relação Paciente/Tratamento apresenta a seguinte dependência fun-cional:

f3: Código Tratamento Específico à Designação Tratamento Específico, Custo

Figura I.5.2 Diagrama de dependências

Page 129: Access manual de base de datos , excelente xp

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

A relação TratamentosEfectuados apresenta a seguinte dependência funcional:

f4: Código Dente à Descrição Dente f5: cod paciente + Código Tratamento Específico + Código Dente à Data Tratamento

Apresentamos o diagrama de dependências de cada uma das relações obtidas, na figura I.5.2.

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 dependências parciais. No nosso exemplo, são dependên-cias parciais f3 e f4 (ver figura I.5.2). 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 dependentes juntamente com uma cópia do determinante, formando uma nova relação. A chave primária dessa nova relação é o determi-nante. No nosso exemplo obtemos:

• Notação DeMarco Paciente = cod paciente, nome, morada, código postal, cidade Paciente/Tratamento = cod paciente, Código Tratamento Específico,

Page 130: Access manual de base de datos , excelente xp

130 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Tratamento = Código Tratamento Específico, Designação Trata-mento Específico, Custo

TratamentosEfectuados = cod paciente, Código Tratamento Especí-fico, Código Dente, Data Tratamento

Dente = Código Dente, Descrição Dente

• Notação Gane and Sarson

Paciente Paciente/Tratamento TratamentosEfectuados cod paciente cod paciente cod paciente

Nome Código Tratamento Específico Código Tratamento Específico

Morada Código Dente

código postal Data Tratamento

cidade

Tratamento Dente

Código Tratamento Específico Código Dente

Designação Tratamento Específico Descrição Dente

Custo

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 dis-tintos, 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 é uma dependência transitiva, pois

cod paciente à código postal código postal à cidade

Uma relação está na 3FN se:

• está na 2FN;

• não contém dependências transitivas.

Page 131: Access manual de base de datos , excelente xp

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

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 transi-tivas. Para eliminar uma dependência transitiva de uma relação, remo-vemos os atributos transitivamente dependentes dessa relação, junta-mente com uma cópia do determinante, formando uma nova relação. Continuando com o nosso exemplo, obtemos:

• Notação DeMarco Paciente = cod paciente, nome, morada, código postal CodigoPostal = código postal, cidade Paciente/Tratamento2 = cod paciente, Código Tratamento Especí-

fico, Tratamento = Código Tratamento Específico, Designação Trata-

mento Específico, Custo TratamentosEfectuados = cod paciente, Código Tratamento Especí-

fico, Código Dente, Data Tratamento Dente = Código Dente, Descrição Dente

• Notação Gane and Sarson

Paciente Paciente/Tratamento TratamentosEfectuados cod paciente cod paciente cod paciente

Nome Código Tratamento Específico Código Tratamento Específico

Morada Código Dente

código postal Data Tratamento

código postal Tratamento Dente

código postal Código Tratamento Específico Código Dente

cidade Designação Tratamento Específico Descrição Dente

Custo

2 Analisando as relações obtidas, podemos verificar que esta relação é um subconjunto da relação TratamentosEfectuados, pelo que seria eliminada na implementação.

Page 132: Access manual de base de datos , excelente xp

132 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

5.3.4 Forma Normal de Boyce-Codd

Uma relação encontra-se na Forma Normal de Boyce-Codd (FNBC), se qualquer determinante é uma 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 can-didata podem não corresponder à FNBC. Por vezes considera-se a FNBC como um caso especial da 3FN. Para exemplificar a FNBC con-sideremos a relação

Consulta-Paciente (CodPaciente, data, hora, CodMedico, sala) que contém os detalhes das consultas marcadas numa clínica dentária. O dentista que irá efectuar a consulta está afecto a uma determinada sala, no dia da consulta. No entanto, uma sala pode ser alocada a vários médicos, consoante as necessidades desse dia. Um cliente 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. Esta relação tem as seguintes dependências funcionais:

CodPaciente + data à hora, CodMedico, sala CodMedico + data + hora à CodPaciente sala + data + hora à CodMedico, CodPaciente CodMedico + data à sala

Estas dependências são representadas no diagrama da figura I.5.3.

Page 133: Access manual de base de datos , excelente xp

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

Figura I.5.3 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 candi-data. Para normalizar a relação consulta-paciente devemos criar duas novas relações chamadas consulta e sala-médico:

Consulta (CodPaciente, data, hora, CodMedico) Sala-medico (CodMedico, data, sala)

Por vezes ao decompor uma relação de modo a obter a FNBC, as dependências funcionais não são preservadas, isto é, o determinante é 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 atri-butos 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ância nos dados.

Page 134: Access manual de base de datos , excelente xp

134 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

5.3.5 Quarta e Quinta Formas Normais

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ências. A Quarta Forma Normal (4FN) baseia-se no conceito de Mul-ti-dependência. 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 mul-ti-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, no nosso consultório, o paciente indica vários contac-tos telefónicos e endereços de correio electrónico. Para isso, considere-mos a relação:

Contactos-paciente (cod paciente, telefone, e-mail)

Na figura I.5.4 apresentamos uma instância desta relação. Verifica-se que:

Cod paciente telefone Cod paciente e-mail

Page 135: Access manual de base de datos , excelente xp

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

Mas telefone e e-mail são atributos independentes. Estas mul-ti-dependências são não triviais. Assim sendo, esta relação não se encontra na 4FN.

Cod paciente Telefone e-mail 1 12345 [email protected] 1 12345 [email protected] 1 12222 [email protected] 1 12222 [email protected]

Figura I.5.4 Instância de uma relação com multidependências

Para obter a 4FN, decompomos esta relação nas duas relações seguin-tes:

Telefone-cliente (cod paciente, telefone) e-mail-paciente (cod paciente, e-mail)

Na figura I.5.5, apresentamos uma instância destas relações.

Cod paciente Telefone Cod paciente e-mail 1 12345 1 [email protected] 1 12222 1 [email protected]

Figura I.5.5 Instâncias de uma relação na 4FN

Podemos verificar que ao voltar a ligar estas relações através de um NATURAL JOIN, obtemos a mesma relação sem que tenham sido inseri-dos tuplos corrompidos. Dizemos que existe uma dependência de jun-ção na relação contactos-paciente. Quando uma relação não apresenta dependências de junção, isto é, quando ao decompor a relação obte-mos relações tais que a sua junção, através de um NATURAL JOIN, pro-voca a inserção de tuplos que não fazem parte da relação original, dize-mos que essa relação está na 5FN. Vejamos um exemplo concreto. Para isso, consideremos que a clínica dentária tem vários consultórios. A relação,

Cons-paci-med (cod consultório, cod paciente, cod medico)

Page 136: Access manual de base de datos , excelente xp

136 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

contém a informação sobre os médicos e pacientes em cada um dos consultórios. Apresentamos uma instância desta relação na figura I.5.6.

Cod consultorio Cod paciente Cod medico 1 1 1 1 2 2 2 1 2 2 3 1 3 2 3

Figura I.5.6 Instância de uma relação com dependência de junção

Esta relação encontra-se na FNBC, pois não apresenta dependências parciais nem dependências transitivas. Como não apresenta multi-dependências não triviais, está na 4FN. A relação apresenta dependências de junção, pelo que não se encontra na 5FN. Para obter relações na 5FN, decompomos a relação nas três relações seguintes:

Consultório-paciente (cod consultório, cod paciente) Consultório-medico (cod consultório, cod medico) Paciente-medico (cod paciente, cod medico)

Na figura I.5.7, apresentamos instâncias das três relações:

cod consultório

cod paciente

cod consultório

cod medico

cod paciente

cod medico

1 1 1 1 1 1 1 2 2 2 1 2 2 1 1 2 2 2 2 3 3 1 2 1 3 2 2 3 3 3

Figura I.5.7 Instâncias de relações na 5 FN

Page 137: Access manual de base de datos , excelente xp

PARTE II Na Parte II deste livro vamos fazer uma abordagem prática ao Sistema de Gestão de Base de Dados Microsoft Access XP, sustentada em conceitos teóricos abordados na Parte I. Essa abordagem será feita de forma simples e objectiva, proporcio-nando ao utilizador um conhecimento de nível intermédio e avan-çado das técnicas necessárias à realização e gestão de uma Bases de dados. Nesta parte do livro, serão abordados os diferentes objectos do Sistema de Gestão de Base de Dados MS Access XP, e simulta-neamente serão apresentados, para cada um, procedimentos e funcionalidades no âmbito de um exercício guiado baseado numa base de dados de uma clínica dentária que será construída e opti-mizada ao longo dos restantes capítulos.

Page 138: Access manual de base de datos , excelente xp
Page 139: Access manual de base de datos , excelente xp

1 Microsoft Access XP

1.1 DEFINIÇÃO O Microsoft Access é um Sistema de Gestão de Base de Dados relacio-nal em ambiente gráfico, possibilitando ao utilizador o armazenamento, organização e gestão dos dados de uma forma simples e directa. É uma aplicação interactiva para o Windows XP, o que significa que tem capacidade para relacionar dados provenientes de diferentes origens. Nesta qualidade, é uma ferramenta poderosa de organização, localiza-ção e apresentaçã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, páginas, macros e módulos, que visam o armazenamento, edição, apresentação ou gestão de um conjunto de dados.

1.2 CARACTERÍSTICAS GERAIS Em 1991, fruto de um trabalho de 7 anos, a Microsoft apresentou o MSAccess, uma aplicação que aproveita todas as vantagens que o ambiente Windows proporcionava. De facto, quem já trabalhou com outras aplicações do Windows, como o Excel ou o Word, não terá qual-quer dificuldade com os menus, barras de ferramentas, caixas de diá-logo, bem como, com as técnicas mais recentes do manuseamento do rato.

Page 140: Access manual de base de datos , excelente xp

140 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

O MSAccess 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 locali-zação de informação, independentemente do formato ou do local onde ela se encontra. Os programas de gestão de base de dados clássicos, apenas conside-ram como base de dados os ficheiros de dados, gravando todas as for-mas de apresentação destes dados em ficheiros separados. A filosofia do MSAccess difere desta abordagem na medida em que considera uma base de dados como um conjunto das tabelas de informações, com os respectivos modos de apresentação. Assim, um ficheiro de base de dados em MSAccess pode conter uma ou várias tabelas de dados, rela-tórios, consultas, formulários, macros e módulos de programação possi-bilitando ao utilizador o desenvolvimento da base de dados gra-dualmente, incluindo novos elementos e combinando-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 exigentes. De facto, através dos Assistentes, o MSAccess possibilita a criação dos referidos objectos com imagens, objectos gráficos e sons sem qualquer necessidade de programação. Com o MSAccess conseguimos, de uma forma rápida, elaborar repre-sentações que nos ajudarão a ver o rumo da nossa actividade, permi-tindo assim, tomar uma decisão de alterar, ou não, o rumo delineado. Podemos também, elaborar relatórios que filtram a nossa informação, apresentando apenas os dados estritamente necessários, inviabilizando assim, a apresentação de informação excedente que poderia provocar uma dispersão e consequente demora na retirada de conclusões.

Page 141: Access manual de base de datos , excelente xp

II.1. BASE DE DADOS NO MSACCESS 141

1.3 NOVIDADES DO MSACCESS XP A aparência e funcionamento do MSAccess XP são muito semelhantes às da versão anterior, bem como o formato padrão de arquivos, que é o mesmo do Access 2000. A diferença é que o MSAccess XP deixa seleccionar um novo formato extensível, o qual permite a adição de recursos que venham a ser introduzidos em futuras versões do Access, sem ter que fazer uma conversão de arquivos. O Desenho de páginas tem agora vários níveis de desfazer e refazer, assim como melhorias para possibilitar mais controlo sobre o tamanho de campos e páginas conectadas. A Integração com a Web e o controlo do utilizador foram colocados com criatividade em todos os lugares do MSOffice e a Microsoft não sacrifi-cou nenhuma funcionalidade com essas adições. As tabelas pivô do MSExcel agora estão embutidas no MSAccess, mas com uma interface um pouco diferente. Por fim, a Microsoft passa aos utilizadores o comando dos programas, em vez de ditar o seu funcio-namento.

1.4 NOVAS FUNCIONALIDADES DO MICROSOFT ACCESS XP As novas funcionalidades no MSAccess XP estão disponíveis quando se utiliza um ficheiro do MSAccess 2000 no formato de ficheiros do MSAccess XP, mas não o contrário. Estas funcionalidades estão referi-das nos manuais de referência do MSAccess XP e incluem:

Funcionalidades de acessibilidade melhoradas

O MSAccess XP oferece agora uma maior facilidade em trabalhar com Formulários e Relatórios.

• Ao premir F8 na estrutura de Formulário ou Relatório, visualiza a lista de campos.

Page 142: Access manual de base de datos , excelente xp

142 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• Ao premir ENTER depois de seleccionar um campo na lista de campos na VISTA DE ESTRUTURA do Formulário ou Relatório, adi-ciona automaticamente o campo à estrutura básica do formulário ou relatório.

• Ao premir CTRL+TAB move o foco de uma secção de formulário ou relatório para uma subsecção.

• Foram adicionados dois poderes adicionais (1000% e 500%) à opção ZOOM no modo de pré-visualização.

Vistas de gráfico dinâmico e de tabela dinâmica

O MSAccess XP introduz vistas de tabela dinâmica e de gráfico dinâ-mico em tabelas, consultas, vistas, procedimentos armazenados, fun-ções e formulários. Pode agora efectuar análises de dados e criar boas soluções de vistas de tabela dinâmica e de gráfico dinâmico mais rapi-damente que nunca. Suporte XML

O MSAccess XP oferece formas poderosas e intuitivas de partilhar dados XML, independentemente das diferenças nas regras da plata-forma, formato de dados ou protocolo. Suporte para propriedades alargadas no Microsoft SQL Server 2000

A integração incorporada entre o MSAccess XP e o Microsoft SQL Ser-ver 2000 melhorou significativamente, devido à inclusão do suporte para propriedades de bases de dados SQL, alargadas no projecto do Access. Ao utilizar propriedades alargadas nos projectos do MSAccess XP, pode implementar funcionalidades como, por exemplo, relações de pesquisa, regras de validação ou formatação de texto. Alternar

Já pode modificar e trabalhar com ficheiros do Access 2000 no MSAc-cess XP e vice-versa, sem converter o formato do ficheiro. Isto permite-lhe partilhar facilmente as diferentes versões dos ficheiros de base de dados com outros utilizadores do Access.

Page 143: Access manual de base de datos , excelente xp

II.1. BASE DE DADOS NO MSACCESS 143

Anular e refazer várias vezes

Tem agora a capacidade para anular e refazer várias acções na VISTA

DE ESTRUTURA em todos os objectos de base de dados do MSAccess XP, bem como em vistas, procedimentos armazenados e funções no projecto do MSAccess. Actualizações de lotes em projectos do MSAccess utilizando o Microsoft SQL Server

Já pode ter entradas de todos os dados actualizados de projectos do MSAccess e enviá-las para o servidor quando o utilizador navegar num registo, fechar um formulário ou seleccionar um comando. Também pode criar um botão no formulário que guarde todos os registos e anule todas as alterações efectuadas a registos de forma programada. Páginas de acesso a dados Offline actualizáveis

Já pode ter as páginas de acesso a dados Offline no projecto do Access, alterá-las no computador portátil e sincronizá-las automatica-mente quando restabelecer a ligação ao servidor SQL. Registo de erros de conversão

Se ocorrerem problemas durante a conversão a partir do Access 95 e versões posteriores, o MSAccess XP cria uma tabela que apresenta uma lista sobre cada erro, facilitando a identificação e resolução de pro-blemas. Subformulários/Subrelatórios activados na Vista de estrutura

Podemos abrir Subformulários ou Subrelatórios na respectiva janela VISTA DE ESTRUTURA directamente no Formulário ou Relatório ou no menu VER. A deslocação também foi melhorada de forma a facilitar o trabalho com Subformulários e Subrelatórios na VISTA DE ESTRUTURA.

Protecção da palavra-passe num projecto do MSAccess

Podemos alterar a palavra-passe de início de sessão num projecto do Access ligado a uma base de dados do Microsoft SQL Server 6.5 ou de versões posteriores, directamente no menu do MSAccess XP.

Page 144: Access manual de base de datos , excelente xp

144 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.1.1 Ecrã inicial do MSAccess XP, com várias opções de abertura de uma base de dados

O Assistente de ligação de tabelas

O Assistente de ligação de tabelas dá-lhe orientações durante o pro-cesso de ligação das tabelas a uma base de dados do SQL Server, bem como no projecto do MSAccess.

1.5 INICIAR O MSACCESS Ao activar o MSAccess XP através do botão INICIAR, comando PROGRA-

MAS – MSACCESS, surge um ecrã de início de trabalho (Figura II.1.1), que nos apresenta 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 nova

Para além da caixa de diálogo inicial que apresenta as referidas alter-nativas de acesso a uma base de dados, também podemos, em qual-quer altura, aceder ao menu FICHEIRO onde temos os habituais coman-dos:

NOVA BASE DE DADOS e ABRIR BASE DE DADOS .

Page 145: Access manual de base de datos , excelente xp

II.1. BASE DE DADOS NO MSACCESS 145

Figura II.1.2 Ecrã que apresenta os modelos disponíveis para a escolha entre diversas Bases de Dados típicas que se encontram parcialmente criadas

1.5.1 Opções no menu de arranque do Access XP As alternativas para abrir uma base de dados estão disponíveis na parte lateral direita da janela do MSAccess (Figura II.1.1). As diferentes alter-nativas estão agrupadas nas seguintes opções: Abrir um ficheiro - Permite abrir um ficheiro já existente. Esse ficheiro pode ser seleccionado com base numa lista dos ficheiros utilizados recentemente. Novo - Cria uma nova base de dados. Possibilita a abertura de um ficheiro novo em branco para começar a trabalhar, cria uma nova pági-na Web, ou cria um ficheiro de MSAccess para o acesso a uma base de dados Microsoft SQL Server. Novo a partir de ficheiro existente - Mostra a caixa de diálogo ABRIR

FICHEIRO de modo a poder seleccionar um ficheiro existente que funcio-nará como base para um ficheiro novo. Novo a partir de um modelo - Cria um ficheiro baseado num modelo ou assistente. Abre uma caixa de diálogo (Figura II.1.2) com modelos para esta aplicação ou, em alternativa, acede ao site da Microsoft, para a utilização de modelos adicionais.

Page 146: Access manual de base de datos , excelente xp

146 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

1.6 CRIAR UMA BASE DE DADOS NO MSACCESS

O MSAccess fornece dois métodos para criar uma base de dados. Podemos utilizar um Assistente de base de dados para criar com uma única 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 que o utilizador defina cada elemento da base de dados separadamente). Independentemente do método escolhido, é possível modificar e com-plementar a base de dados em qualquer altura depois de ter sido criada. Partindo do princípio que se encontra com o MSAccess activo, execute as seguintes etapas para os dois métodos de criação de uma base de dados.

1.6.1 Criar uma base de dados utilizando o Assistente de base de dados

1. Clique no botão NOVO na BARRA DE FERRAMENTAS.

2. No painel de tarefas NOVO FICHEIRO, em NOVO A PARTIR DE UM

MODELO, clique em MODELOS GERAIS.

3. No separador Bases de dados (figura II.1.2), clique no ícone do tipo de base de dados que deseja criar e, em seguida, clique em OK.

4. Na caixa de diálogo NOVO FICHEIRO DE BASE DE DADOS, especifi-que um nome e uma localização para a base de dados e, em seguida, clique em CRIAR.

5. Siga as instruções apresentadas pelo Assistente de base de dados.

Page 147: Access manual de base de datos , excelente xp

II.1. BASE DE DADOS NO MSACCESS 147

1.6.2 Criar uma base de dados sem utilizar o Assistente de base de dados

2. Clique em NOVO na BARRA DE FERRAMENTAS.

3. No painel de tarefas NOVO FICHEIRO, em NOVO, clique em BASE

DE DADOS VAZIA.

4. Na caixa de diálogo NOVO FICHEIRO DE BASE DE DADOS, especifi-que um nome e a localização para a base de dados e, em seguida, clique em CRIAR.

Posteriormente, o MSAccess apresenta a janela principal da base de dados (Figura II.1.3), que disponibiliza um conjunto de objectos que caracterizam os diversos procedimentos associados à manipulação de uma base de dados.

Uma base de dados no MSAccess não é apenas uma única tabela de dados, mas sim uma entidade formada por um conjunto de objectos, armazenados num ficheiro com extensão MDB.

Figura II.1.3 Ecrã principal da base de dados com os vários objectos.

Page 148: Access manual de base de datos , excelente xp

148 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

1.7 OS OBJECTOS NA JANELA DE UMA BASE DE DADOS Os Objectos disponíveis na janela da base de dados (Figura II.1.3) são apresentados com uma orientação vertical. Na barra de ferramentas da referida janela podemos abrir e criar os seguintes objectos:

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 arma-zenados sobe a forma de registos e campos.

Objecto que apresenta todas as Consultas da base de dados. As con-sultas são utilizadas para seleccionar um conjunto de informação, nor-malmente segundo condições pré-estabelecidas. Também podem ser utilizadas como a origem de registos para Formulários, Relatórios e Páginas de acesso a dados.

Objecto que apresenta todos os Formulários da base de dados. Tam-bém designados por ecrãs de apresentação, são utilizados para intro-duzir 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 assumir diversas formas, desde uma simples tabela a listagens com agrupamento de dados e cálculos numéricos.

Page 149: Access manual de base de datos , excelente xp

II.1. BASE DE DADOS NO MSACCESS 149

Apresenta todos os atalhos para as Páginas de acesso a dados da base de dados. Uma Página de acesso a dados é um tipo especial de página Web destinada a visualizar e trabalhar com dados provenientes da Internet. Os dados das páginas estão armazenados numa base de dados do MSAccess.

Apresenta todas as Macros da base de dados. As Macros são constituí-das por um conjuntos de comandos, que têm por objectivo automatizar tarefas comuns na base de dados. Ao utilizar grupos de macros, pode desempenhar várias tarefas em simultâneo.

Os Módulos são um conjunto de declarações, instruções e procedi-mentos executados na linguagem de programação do Access (Visual Basic), com o objectivo de facilitar a gestão da informação, executando acções difíceis de conseguir em modo de utilização. Os Módulos são abordados na Parte III deste livro.

É possível criar grupos especiais na base de dados para proporcionar ajuda na organização de Tabelas relacionadas, Consultas, Formulários, Relatórios, Páginas de acesso a dados, Macros e Módulos. É possível também guardar atalhos em cada um destes grupos que indicam os respectivos objectos existentes.

Page 150: Access manual de base de datos , excelente xp

150 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Page 151: Access manual de base de datos , excelente xp

2 Tabelas

2.1 DEFINIÇÃO Uma base de dados é constituída por grupos de campos organizados em Tabelas. Uma Tabela é uma estrutura de dados cuja vocação é a de armazenar um grupo específico de informação estruturada em registos (linhas) e campos (colunas). Cada grupo de informação será armaze-nado na sua tabela específica, sendo possível estabelecer relações entre essas tabelas, de forma a uma melhor compreensão e utilização dos seus respectivos dados. As tabelas são um dos blocos fundamentais na criação de uma base de dados, pois os restantes objectos como consultas, formulários, relató-rios ou páginas assentam em tabelas predefinidas. De facto, o planea-mento de uma Base de Dados começa precisamente pela definição e estruturação de um conjunto de Tabelas.

2.1 CRIAÇÃO DE UMA TABELA O MSAccess disponibiliza um conjunto de opções para a criação de uma nova tabela. Antes de começar este procedimento temos de tomar consciência dos diferentes modos de criação, bem como das particula-ridades associadas a cada um. Para criar uma nova Tabela, devemos:

Page 152: Access manual de base de datos , excelente xp

152 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

1. Na JANELA BASE DE DADOS, premir o botão ou escolher a opção TABELAS dentro de OBJECTOS DE BASES DE

DADOS, no menu VER.

2. Premir no botão .

Depois de activado o botão , surge no ecrã uma caixa de diálogo (Figura II.2.1) que apresenta os seguintes modos de criação de tabelas:

• FOLHA DE DADOS - a criação da tabela é feita a partir da inserção de um conjunto de dados, sendo configurados automaticamente.

• VISTA DE ESTRUTURA – a criação da tabela é feita pelo utilizador, indicando os campos e suas propriedades.

• ASSISTENTE DE TABELAS - a criação da tabela é feita com a ajuda de um assistente.

• IMPORTAÇÃO DE TABELAS - a criação da tabela é feita com a aju-da de um assistente de importação de tabelas.

• LIGAÇÃO DE TABELAS - a criação da tabela é feita com a ajuda de um assistente que permite a ligação a uma outra tabela.

Figura II.2.1 Ecrã “Nova Tabela” que permite a selecção do modo de criação de tabelas.

Page 153: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 153

2.2 COMO CRIAR UMA TABELA COM O

ASSISTENTE DE TABELAS

Quando criamos uma tabela ela está, como seria de esperar, vazia. A maneira mais fácil de criar uma tabela é através do ASSISTENTE DE

TABELAS, onde podemos escolher tipos específicos de tabelas com os respectivos campos, como: contactos de negócios, investimentos, ou inventários de casas. Mas como podemos constatar, existe um conjunto limitado de temas que podem ser incluídos no Assistente de Tabelas.

Na JANELA DE BASE DE DADOS:

1. Premir o botão TABELAS ou escolher a opção dentro de Objectos de Bases de Dados, no menu VER.

2. Duplo clique em

3. Seguir as indicações das caixas de diálogos do ASSISTENTE DE

TABELAS (Figura II.2.2).

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 sem o ASSISTENTE DE TABELAS.

Figura II.2.2 Janela do Assistente para a selecção de campos da tabela

Page 154: Access manual de base de datos , excelente xp

154 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

2.3 COMO CRIAR UMA TABELA POR INSERÇÃO DE DADOS Uma opção bastante válida para os utilizadores com poucos conheci-mentos de MSAccess é a de recorrerem ao modo de criação de Tabelas por inserção de dados. Este processo possibilita a inserção de um con-junto de dados que serão interpretados pelo MSAccess 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 à posteriori alterações à estrutura da tabela de forma a adequá-la às nossas necessidades. Para criar uma tabela por Inserção de Dados, devemos:

1. Premir o botão TABELAS ou escolher a opção dentro de OBJECTOS DE BASES DE DADOS, no menu VER.

2. Duplo clique em

3. Inserir os dados na tabela da Figura II.2.3.

4. Fechar e gravar a tabela. Com estes procedimentos será feita automaticamente a configuração da estrutura da tabela e dos respectivos campos.

Figura II.2.3 Janela para a inserção de dados no modo de CRIAÇÃO DE TABELAS POR INSERÇÃO DE DADOS

Page 155: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 155

2.4 COMO CRIAR UMA TABELA SEM O

ASSISTENTE DE TABELAS Embora os dois processos anteriormente descritos tenham a sua utili-dade, o modo de criação de tabelas mais utilizado é o modo VISTA DE

ESTRUTURA, pois é o que nos disponibiliza uma maior liberdade de con-figuração da estrutura da tabela. Para criar esta tabela no MSAccess devemos partir da JANELA DE BASE

DE DADOS (Figura II.2.1):

1. Premir o botão TABELAS ou escolher a opção dentro de OBJECTOS DE BASES DE DADOS, no menu VER

2. Duplo clique em Como podemos verificar na Figura II.2.4, deparamos com a janela de definição da estrutura de uma tabela, que está dividida em duas partes. Na parte superior o utilizador deverá indicar o nome de cada campo da tabela, bem como os respectivos tipos e, opcionalmente uma descrição do significado do campo. Na parte inferior, indicam-se outras proprieda-des que complementam a caracterização do campo.

Figura II.2.4 Ecrã Vista de estrutura para a criação de campos

Page 156: Access manual de base de datos , excelente xp

156 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

2.4.1 Utilizar o Construtor de Campos Se estivermos inseguros na escolha de alguns dos campos e respecti-vos tipos de dados da nossa tabela, podemos encontrar uma forma mais fácil de definir a lista de campos. Assim, devemos:

1. Na janela de definição da estrutura de uma tabela, clicar na linha onde desejamos criar o campo.

2. Premir o botão direito do rato, para mostrar um pequeno menu (Figura II.2.5) e escolher a opção COMPILAR ou premir no botão

COMPILAR, na BARRA DE FERRAMENTAS.

3. Escolher a tabela através do quadro TABELAS DE EXEMPLO (Figu-ra II.2.6).

4. Definir o nome do campo no quadro CAMPOS DE EXEMPLO (Figura II.2.6).

5. Premir OK.

Figura II.2.5 Menu para acesso à opção COMPILAR

Figura II.2.6 Ecrã para a construção de campos pré-definidos

Page 157: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 157

2.4.2 Escolher tipos de dados Na coluna NOME DO CAMPO, digitamos o nome que pretendemos dar a cada campo da tabela (o MSAccess permite uma grande flexibilidade na atribuição do nome, cujo comprimento poderá ter no máximo 64 carac-teres). Depois de teclarmos Enter ou movimentarmos o cursor para a direita, entramos na coluna TIPO DE DADOS. Na Figura II.2.7 mostramos os vários tipos de dados disponibilizados pelo MSAccess. Quando criamos um campo, ele assume automaticamente o tipo de dados Texto. Se quisermos que o tipo de dados seja outro, podemos defini-lo no botão de listagem que é mostrado à direita do tipo do cam-po. Tipo de dados Mostra 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

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

Até 64.000 caracte

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.

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

Figura II.2.7 Tipos de dados que podem ser escolhidos na definição de um campo.

Page 158: Access manual de base de datos , excelente xp

158 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Com a utilização destas propriedades podemos controlar a aparência dos dados, prevenir inserções incorrectas, especificar valores por defei-to entre outras acções. A tabela da Figura II.2.8 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, quando é inserido 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”.

Como definir as propriedades de um campo numa tabela:

1. Abrir a tabela clicando no botão ESTRUTURA.

2. Escolher o campo para o qual se desejam definir as proprieda-des.

Figura II.2.8 Propriedades que podem ser especificadas para os campos das tabelas.

Page 159: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 159

3. Para escolher as várias opções de cada propriedade deve-se premir com o rato na seta invertida, que se situa na direita de cada propriedade.

4. Premir o rato na opção desejada.

5. No menu FICHEIRO, 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, seleccionando a propriedade TAMANHO DO CAMPO. Para campos com dados tipo Texto, podemos definir o número máximo de caracteres que pode ter um campo. Para os campos tipo Número, podemos definir o número de valores que pode conter o campo, para além de ser fraccionário. Por defeito, o MSAccess define a propriedade TAMANHO DO CAMPO em Número Inteiro Longo. No entanto, poderemos escolher outro tipo de formato numérico tal como mostra a tabela da Figura II.2.9.

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

Formato Número e propriedade de casas decimais

Se não se especificar um formato para os dados numéricos, o MSAc-cess mostra números com o seu aspecto mais simples. No entanto, o MSAccess apresenta um conjunto de formatos pré-definidos que se adequam às diferentes utilizações.

Figura II.2.9 Tipos de dados numéricos

Page 160: Access manual de base de datos , excelente xp

160 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

A tabela da Figura II.2.10 mostra os formatos disponíveis para os cam-pos como 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,5 ESC. Euro 1234,5 1234,0 €

Fixo 1234,5 1235 Padrão 1234,5 1234,50

Percentagem 0,824 82,40%

Científico 1234,5 1,23E+03

Formato Data/Hora

A tabela da Figura II.2.11 mostra os formatos disponíveis para campos com dados de tipo Data/Hora e a forma como são visualizados no for-mulário ou na folha de dados.

Formato Modo de visualização

Data Geral 26/11/00 16:30:00

Data por Extenso Domingo, 26 de Novembro de 2000

Data Normal 26/Nov/00

Data Abreviada 26/11/2000

Hora Completa 20:36:23

Hora Normal 8:36 PM

Hora Abreviada 20:36

Formato Sim/Não

Por defeito, o MSAccess define o formato como Sim/Não, apesar de existirem ainda, os formatos Verdadeiro/Falso.

Máscara de Introdução

Se desejarmos ter um campo com um layout diferente de todos os outros e que facilite a inserção de dados, teremos que utilizar a proprie-dade MÁSCARA DE INTRODUÇÃO. Esta funcionalidade facilitaria, por

Figura II.2.10 Tipos de formatos para dados numéricos

Figura II.2.11 Tipos de formatos para datas e horas

Page 161: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 161

exemplo, a inserção de dados no campo que regista um número de tele-fone específico de um país, ou no campo que regista a matrícula de um automóvel. Apresentamos, na tabela da Figura II.2.12, um conjunto de definições de MÁSCARA DE INTRODUÇÃO e respectivos valores:

Máscaras de introdução Tipos de Valores

(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

Para facilitar a criação de uma máscara de introdução num campo de uma tabela, o MSAccess disponibiliza-nos um conjunto de máscaras tipo (Figura II.2.13) 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 posteriormente no pequeno menu que aparece no ecrã

escolher a opção COMPILAR ou premir botão COMPILAR na BARRA DE

FERRAMENTAS.

Figura II.2.12 Exemplos de máscaras de introdução

Figura II.2.13 Assistente de Máscaras de Introdução

Page 162: Access manual de base de datos , excelente xp

162 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Usar Valores por defeito

Se desejarmos que um determinado campo tenha um valor por defeito, 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 defeito da data seja a data actual inserimos na propriedade a expressão =Date(). Inserção de dados requerida

Se desejarmos que a inserção de dados num determinado campo seja obrigatória, seleccionamos a propriedade NECESSÁRIO desse mesmo campo passando-a para Sim. O valor por defeito 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 con-teú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 consiste 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 da Figura II.2.14 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 2001

Figura II.2.14 Exemplos de regras de validação

Page 163: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 163

Criação de indexações

Para facilitar a procura de um registos numa tabela podemos indexar um campo. O campo que deve ser indexado deve ser de pequeno tamanho e de preferência de simples memorização, para que a procura de registos numa tabela seja feita da forma mais rápida possível. As opções associadas a esta propriedade são apresentadas na tabela da Figura II.2.17.

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

A indexação sem duplicados (Sim (Duplicação Não Autorizada))

deve ser utilizada sempre que se pretende que não seja possível inserir nesse campo um conjunto de dados que já exista noutro registo. Por exemplo, o campo Nome do Paciente poderá ser sujeito a esta proprie-dade pois deverá apresentar sempre valores diferentes (embora no mundo real isto não seja verdade). Se desejarmos visualizar ou editar indexações, podemos abrir a janela ÍNDICES na vista de construção de tabela.

1. Abrir a tabela clicando no botão ESTRUTURA.

2. No menu VER, escolher a opção ÍNDICES ou premir o botão ÍNDICES, na BARRA DE FERRAMENTAS.

Figura II.2.17 Opções de Indexação

Figura II.2.18 Janela para criação de índices

Page 164: Access manual de base de datos , excelente xp

164 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

3. Para gravar as alterações para a tabela, escolher a opção GUARDAR no menu FICHEIRO.

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 correcta apresentação de documentos, independentemente da lingua-gem 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 exis-tente na Base de dados, em vez da sua constante digitação. Vamos supor que se pretende evitar que o utilizador digite os códigos dos Tratamentos Gerais, quando estiver a registar um tratamento feito por um Paciente. Neste caso deveríamos:

1. Abrir a tabela T-TratamentosGeraisEfectuados, na VISTA DE

ESTRUTURA.

2. Seleccionar o campo “Cod Tratamento Geral”, cujos valores irão ser disponibilizados numa CAIXA DE COMBINAÇÃO.

3. Seleccionar o separador PESQUISA (Figura II.2.15).

4. Alterar a propriedade Mostrar controlo para CAIXA DE COM-BINAÇÃO e, na propriedade Origem da linha, indicar o nome da tabela que contém os códigos dos Tratamentos Gerais.

1 Padrão internacional de codificação adoptado no Office

Page 165: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 165

Durante a inserção dos registos na tabela do exemplo, o conteúdo do campo “Cod Tratamento Geral” já poderia ser seleccionado e não digi-tado, tal como mostra a Figura II.2.16.

2.4.4 Campo chave primária

A definição da estrutura de uma tabela pode (deve) ainda incluir a indi-cação de uma chave primária. Este campo (ou conjunto de campos, no caso da chave ser composta) é utilizado para podermos mais facilmente identificar de modo único cada registo de uma tabela. Esta chave per-mite ao MSAccess manter a tabela sempre ordenada pelo campo esco-lhido e possibilita o relacionamento entre tabelas. Os conceitos e

Figura II.2.15 Proprieda-des da Pesquisa

Figura II.2.16 Utilização da Propriedade Pesquisa na folha de dados

Page 166: Access manual de base de datos , excelente xp

166 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

definições associados às chaves primárias foram abordados em 3.2 da Parte I. Para fácil identificação e procura de dados numa tabela, o campo chave deve ter um tamanho pequeno, como um código identificador. Um cam-po com o código do Paciente poderia ser utilizado como chave primária, uma vez que cada Paciente tem um código exclusivo que não será igual ao de outro Paciente (pois podemos ter Pacientes com nomes iguais).

Como definir um campo-chave:

1. Seleccionar o campo ou campos que irão ser chave primária.

2. No menu EDITAR, escolher a opção CHAVE PRIMÁRIA ou premir o

botão CHAVE PRIMÁRIA na BARRA DE FERRAMENTAS.

Campos-chave múltiplos

Se uma tabela não contém apenas um campo com valores únicos, será aconselhável ter mais do que um campo como campo chave primária. Podemos ter tantos campos na chave primária quantos os necessários. O modo de selecção de campos-chave múltiplos é idêntico ao modo de selecção de um único campo chave primária.

2.5 RELACIONAMENTOS ENTRE TABELAS

Para haver um bom funcionamento de uma base de dados, todas as tabelas devem (têm de) estar relacionadas, caso contrário não existe o fluxo de dados que caracteriza uma boa e eficiente base de dados. O MSAccess usa os relacionamentos para:

• Criar ligações entre novas consultas;

• Mostrar registos relacionados num SUBFORMULÁRIO ou num SUBRELATÓRIO ;

Page 167: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 167

• Reforçar a integridade referencial para proteger o relaciona-mento 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 liga-dos frequentemente têm (mas não obrigatoriamente) o mesmo nome em cada tabela. Ou seja, poderemos relacionar a chave primária de uma tabela com um campo (chave estrangeira) ligado noutra tabela.

2.5.1 Criação de relacionamentos

Para criar um relacionamento entre duas tabelas começamos por abrir a

janela RELAÇÕES ao clicar no botão que se encontra na BARRA DE

FERRAMENTAS. Posteriormente, devemos seleccionar as tabelas que se desejam relacionar e, seguidamente definimos o relacionamento com base nos procedimentos:

1. Clicar 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, arrastar o rato até ao campo correspondente na outra tabela.

Figura II.2.22 Janela para a configuração de relacionamentos entre tabelas

Page 168: Access manual de base de datos , excelente xp

168 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Este procedimento dá origem ao aparecimento da janela de relaciona-mentos (Figura II.2.22) que apresenta os nomes das tabelas, os campos que estabelecem o relacionamento, bem como o tipo de associação em causa.

Podemos simplesmente clicar em CRIAR 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.

2.5.2 Integridade Referencial

Em alguns relacionamentos o MSAccess pode reforçar a integridade referencial, quando podemos inserir ou apagar registos em tabelas rela-cionadas. A integridade referencial ajuda a garantir que os relaciona-mentos entre os registos são válidos, e que nós, acidentalmente, não apagamos dados relacionados. O MSAccess 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 MSAc-cess (se as tabelas estão ligadas, elas têm que pertencer à mesma base de dados do MSAccess).

Na janela da Figura II.2.22 podemos assinalar as opções relacionadas com a integridade referencial. No entanto, só assinalando a primeira opção, poderemos assinalar as outras duas. As opções são as seguin-tes:

• IMPOR A 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.

Page 169: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 169

• PROPAGAR ACTUALIZAÇÃO DOS CAMPOS RELACION ADOS Não pode ser alterado o valor de um registo num campo que é chave primária numa tabela, se, numa outra tabela relacionada com a primeira, existirem registos que apresentam esse mesmo valor no campo correspondente (chave estrangeira).

• PROPAGAR ELIMINAÇÃO DOS CAMPOS RELACIONADOS Não pode ser eliminado um registo numa tabela, se, numa outra tabela relacionada com a primeira, existirem registos que apre-sentem, no campo chave externa, valores que correspondem ao registo que se pretende eliminar.

2.5.3 Tipos de relacionamentos

Para relacionamentos em que a integridade referencial é reforçada, existe a possibilidade de estabelecer um de dois tipos de relaciona-mento: “um-para-muitos” e “um-para-um”. No caso do tipo de relacionamento ser de “um-para-muitos” (o mais usual), cada registo na primeira tabela pode ser associado com muitos registos na tabela relacionada, ou seja, cada valor do campo chave pri-mária aparece muitas vezes 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.

2.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 relacionamentos, clicando sobre o botão RELA-ÇÕES na BARRA DE FERRAMENTAS.

Page 170: Access manual de base de datos , excelente xp

170 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 em DELETE. Para visualizar os relacionamentos da nossa base de dados, deve-mos escolher a opção MOSTRAR TUDO no menu RELAÇÕES ou premir o

botão . Para visualizar um relacionamento em particular deve-se escolher a opção MOSTRAR RELAÇÕES DIRECTAS, no menu RELAÇÕES ou

premir o botão .

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.

2.6 A FOLHA DE DADOS DE UMA TABELA Quando estamos na área de construção de tabelas podemos apenas alterar o nome dos campos, as suas características e o seu tamanho; enquanto que na área de folha de dados podemos inserir a informação contida nesses campos, ou seja, os registos. Para aceder a esta área sem ir à área de construção, basta premir o

botão estando seleccionada a tabela desejada na janela da BASE DE DADOS. Depois de activarmos o modo FOLHA DE DADOS, vamos deparar com uma tabela bidimensional com o aspecto semelhante ao apresentado na Figura II.2.19, que possibilita a manipulação de dados relativos aos campos (coluna) e aos registos (linhas).

Page 171: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 171

À medida que inserimos os registos na tabela, surge na janela do modo FOLHA DE DADOS um conjunto de símbolos informativos, cujo significado é apresentado na Figura II.2.20.

Símbolo Significado

Registo em edição

Fim do ficheiro / novo registo

Registo corrente

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 Figura II.2.21.

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.2.19 Tabela Pacientes em modo FOLHA DE DADOS

Figura II.2.21 Símbolos para movimentação de registos no modo Folha de Dados

Figura II.2.20 Símbolos informati-vos no modo Folha de Dados

Page 172: Access manual de base de datos , excelente xp

172 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

2.7 IMPORTAÇÃO E EXPORTAÇÃO DE DADOS

O MSAccess tem a grande vantagem de permitir o acesso a dados com outros 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 MSAccess 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 menu FICHEIRO.

2.7.1 Importar dados

Para importar dados de outras aplicações deveremos accionar o comando OBTER DADOS EXTERNOS e posteriormente o comando

IMPORTAR. Este comando abre uma janela (Figura II.2.23) na qual podemos indicar a localização e o nome do ficheiro que contém os dados pretendidos. Na referida janela devemos também indi-car o tipo de ficheiro em causa.

Figura II.2.23 Janela para importar dados prove-nientes de outras apli-cações

Page 173: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 173

O tipo de ficheiro é definido consoante a aplicação que o criou, e poderá ser uma tabela do MSExcel ou Lotus 123, um ficheiro de texto, ou um ficheiro de dBASE ou Paradox. Depois de identificar o ficheiro deveremos accionar o botão IMPORTAR.

O comando LIGAR TABELAS que se encontra também no menu OBTER DADOS EXTERNOS, 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 – Object Linking and Embeding). Depois de realizarmos a importação ou ligação, de uma tabela externa, é bom que se identifiquem as propriedades, especialmente o campo chave.

2.7.2 Exportar dados

Para exportar dados de uma tabela ou consulta do MSAccess para uma outra aplicação deveremos:

1. Abrir a base de dados que contém a tabela ou consulta que se deseja exportar.

2. Seleccionar a tabela ou consulta a exportar.

3. Na janela BASE DE DADOS, escolher a opção EXPORTAR no menu FICHEIRO.

4. Indicar o local e o nome ao ficheiro que irá ter os dados bem como o tipo de ficheiro pretendido.

5. Premir EXPORTAR.

O tipo de ficheiro definido na janela EXPORTAR TABELA 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 foram referidas para o

Page 174: Access manual de base de datos , excelente xp

174 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

processo de importação, nomeadamente uma tabela do MSExcel ou Lotus 123, um ficheiro de texto, ou um ficheiro de dBASE ou Paradox.

Page 175: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 175

2.8 EXERCÍCIO GUIADO Criar a Base de Dados

A base de dados que iremos criar, para exemplificação das operações com o MSAccess, é a base de dados Dr.Dentinho cuja estrutura foi definida na primeira parte deste livro. Depois de arrancar com o MSAccess, deparamos com um conjunto de opções de criação de base de dados. Para a criação da nossa Base de Dados, deveremos escolher a opção BASE DE DADOS VAZIA. Posterior-mente deveremos atribuir o nome Dr.Dentinho à nossa base de dados. Criar as Tabelas da Base de Dados

Comecemos por criar a tabela Pacientes composta pelos seguintes campos: Cód. Paciente, Nome, Morada, Telefone, Nº Beneficiário, Cai-xa, Regime, Data de Validade, Data da 1ª consulta. Para criar esta tabela, no MSAccess devemos partir da janela principal da base de dados (Figura II.2.1) e accionar o comando:

. Inserir campos nas tabelas No caso da tabela T-Pacientes, o primeiro campo vai ser designado por CódPaciente. Para este campo podemos optar pelo tipo de dados Numeração Automática, uma vez que pretendemos estabelecer um código sequencial diferente para cada paciente. O tamanho deste cam-po poderá ser Inteiro Longo. Todos os restantes campos serão do tipo texto exceptuando os cam-pos do tipo data (Data de Validade e Data da 1ª consulta). Para os

Page 176: Access manual de base de datos , excelente xp

176 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

campos de tipo texto deveremos considerar um tamanho que se ade-que à informação a registar no campo respectivo. No final, a nossa tabela de Pacientes deverá apresentar a estrutura de campos que é indicada na Figura II.2.24.

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 uma propriedade para o campo “Data de validade” que impossibilita a inserção de um paciente cuja validade do cartão tenha sido ultrapassada (Figura II.2.25).

Figura II.2.24 Estrutura de campos da tabela T-Pacientes.

Page 177: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 177

Podemos definir para o campo “Nº Beneficiário” uma máscara de intro-dução que facilite e uniformize a entrada destes dados para cada paciente. Assim, na propriedade Máscara de introdução deveremos accionar o respectivo assistente, clicando no botão da direita com reti-cências e posteriormente escolher a máscara que se adeque a este campo (Figura II.2.26).

Podemos também definir para o campo “Data da 1ª Consulta” uma pro-priedade que introduza automaticamente a data do dia em que se regis-

Figura II.2.25 Definição das propriedades para o campo ”Data de validade”

Figura II.2.26 Definição das propriedades para o campo ”Nº Beneficiário”

Page 178: Access manual de base de datos , excelente xp

178 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

regista os dados do paciente na Base de dados. Desta forma, devere-mos introduzir na propriedade valor predefinido a função =Data(). 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 T-Pacientes, a chave primária deverá ser o campo CódPaciente, uma vez que foi criado precisamente para identificar de modo único cada registo. Assim, seleccionar o campo CódPaciente e no

menu EDITAR escolher a opção CHAVE PRIMÁRIA ou premir o botão

CHAVE PRIMÁRIA, na BARRA DE FERRAMENTAS . Introduzir dados nas tabelas Para introduzirmos os dados que irão constituir o conteúdo da nossa tabela, devemos passar do MODO DE ESTRUTURA para o modo de tabela ou FOLHA DE DADOS. Os dados que poderemos introduzir na tabela são os da Figura II.2.27.

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.

Figura II.2.27 Estrutura de campos e dados da tabela T-Pacientes

Page 179: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 179

Após a introduçã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 definição da tabela T-Pacientes, vamos em seguida definir a estrutura de cada uma das restantes tabelas da nossa base de dados. Deveremos respeitar a estrutura 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.2.28).

Definição de relacionamentos entre tabelas

Depois de definirmos a estrutura das tabelas, deveremos definir os rela-cionamentos existentes entre elas.

Figura II.2.28 Estrutura de campos e dados das tabelas T-Aparelho, T-TratamentoGeral,

T-Dentes, TTratamentoEspecifico

Page 180: Access manual de base de datos , excelente xp

180 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Para entrar no modo de definição de relacionamentos entre tabelas,

deveremos accionar o comando RELAÇÕES, que está disponível no menu FERRAMENTAS. Este comando permite aceder à janela MOSTRAR

TABELA, onde podemos escolher as tabelas da nossa Base de Dados que serão adicionadas à janela dos RELACIONAMENTOS (Figura II.2.29).

Vamos começar por introduzir na janela dos RELACIONAMENTOS as tabe-las T-Paciente, T-TratamentoGeral, e T-TratamentoGeraisEfectuados. Na janela dos RELACIONAMENTOS, obteremos algo de semelhante à Figura II.2.30.

No nosso exemplo, pretendemos estabelecer relacionamentos entre as entidades Paciente e Tratamento Geral que apresentam uma cardinali-dade M para N, visto que um paciente pode fazer vários Tratamentos Gerais e um Tratamento Geral pode ser feito por vários Pacientes. Como os SGBD não podem traduzir directamente este tipo de relacio-

Figura II.2.29 Janela Mostrar Tabela com a listagem das tabelas da Base de Dados

Figura II.2.30 Janela Relacionamentos

Page 181: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 181

namento, tivemos de criar uma terceira tabela, correspondente ao rela-cionamento existente entre as duas anteriores. A partir daí, passamos a ter dois relacionamentos do tipo 1 para N. Os dois relacionamentos que salvaguardam a situação anterior são os seguintes:

• Entre a tabela T-Paciente e a tabela T-Tratamento GeraisEfec-tuados, através do campo comum a essas duas tabelas: CodPa-ciente. O relacionamento é do tipo 1 para N.

• Entre a tabela T-TratamentoGeral e a tabela T-Tratamento GeraisEfectuados, através do campo comum a essas duas tabelas: CodTratamentoGeral. O relacionamento é do tipo 1 para N.

Na tabela T-TratamentoGeraisEfectuados, cada paciente pode aparecer várias vezes e cada Tratamento Geral também. Na Figura II.2.31 pode-mos visualizar que o Paciente com o código 1 teve vários tratamentos em diferentes dias. Simultaneamente, o tratamento com o código ”geng” foi feito a vários pacientes.

Estabelecer os relacionamentos O primeiro relacionamento será definido clicando sobre o campo Cod-Paciente da tabela T-Pacientes e arrastando o rato até ao mesmo cam-

Figura II.2.31 Estrutura de campos e dados da tabela T-TratamentosGeraisEfectuados que relaciona dados das tabelas T-Pacientes e T-TratamentosGerais

Page 182: Access manual de base de datos , excelente xp

182 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

campo da tabela T-TratamentoGeraisEfectuados. Na janela que apa-rece no ecrã (Figura II.2.32) activar as opções que impõem a integri-dade referencial e posteriormente clicar em CRIAR.

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 CodPaciente da Tabela T-TratamentoGeraisEfectuados, se esse valor não existir no campo CodPaciente da tabela T-Pacientes.

• Activando a segunda opção “PROPAGAR ACTUALIZAÇÃO DOS

CAMPOS RELACIONADOS” provoca que uma alteração de um Cod-Paciente na tabela T-Pacientes, se registe em todas as ocorrên-cias desse código na Tabela T-TratamentoGeraisEfectuados.

• Activando a terceira opção “PROPAGAR ELIMINAÇÃO DOS CAMPOS

RELACIONADOS”, faz com que uma eliminação de um CodPa-ciente na tabela T-Pacientes, provoque a eliminação de todos os registos que contêm esse código na Tabela T-TratamentoGerais Efectuados.

Figura II.2.32 Janela de edição dos relacionamen-tos

Page 183: Access manual de base de datos , excelente xp

II.2. TABELAS NO MSACCESS 183

Para definir o segundo relacionamento clicamos sobre o campo Cod-TratamentoGeral da tabela T-TratamentoGeral e arrastamos o rato até ao mesmo campo da tabela T-TratamentoGeraisEfectuados. Na janela que aparece no ecrã (Figura II.2.32) activar as opções que impõem a integridade referencial e posteriormente clicar em CRIAR. Depois de definirmos os dois relacionamentos referidos, veremos apa-recer, na janela de relacionamento, a sua representação através de linhas ligando as tabela (Figura II.2.33).

Definição dos restantes relacionamentos da Base de Dados

Para inserirmos mais tabelas na janela de relacionamentos, podemos

clicar no botão da BARRA DE FERRAMENTAS MOSTRAR TABELA e adi-cionamos à janela de relacionamentos todas as tabelas da nossa base de dados.

Posteriormente, acrescentamos os seguintes relacionamentos:

• Entre a tabela T-Paciente e a tabela T-ColocaAparelho, através do campo comum a essas duas tabelas: CodPaciente. O rela-cionamento é do tipo 1 para N.

• Entre a tabela T-Paciente e a tabela T-ControlosAparelhos, atra-vés do campo comum a essas duas tabelas: CodPaciente. O relacionamento é do tipo 1 para N.

• Entre a tabela T-Paciente e a tabela T-Tratamentos EspecificoE-fectuados, através do campo comum a essas duas tabelas: CodPaciente. O relacionamento é do tipo 1 para N.

Figura II.2.33 Janela Relacionamentos

Page 184: Access manual de base de datos , excelente xp

184 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• Entre a tabela T-Aparelho e a tabela T-ColocaAparelho, através do campo comum a essas duas tabelas: CodAparelho. O rela-cionamento é do tipo 1 para N.

• Entre a tabela T-Aparelho e a tabela T-ControlosAparelhos, atra-vés do campo comum a essas duas tabelas: CodAparelho. O relacionamento é do tipo 1 para N.

• Entre a tabela T-Dentes e a tabela T-Tratamentos EspecificoE-fectuados, através do campo comum a essas duas tabelas: CodDente. O relacionamento é do tipo 1 para N.

• Entre a tabela T-TratamentoEspecifico e a tabela T-Tratamentos EspecificoEfectuados, através do campo comum a essas duas tabelas: CodtratEspecifico. O relacionamento é do tipo 1 para N.

No final da definição destes relacionamentos, o esquema da base de dados estará pronto e com a configuração apresentada na Figura II.2.34. Antes de abandonar a janela de relacionamentos, podemos pedir para guardar a estrutura de relacionamentos anteriormente defi-

nida, clicando no botão GUARDAR, da BARRA DE FERRAMENTAS.

Figura II.2.34 Estrutura de Relacionamentos da Base de Dados DrDentinho

Page 185: Access manual de base de datos , excelente xp

3 Consultas

3.1 DEFINIÇÃO

Uma consulta (query) é uma forma de visualizar os dados de uma tabe-la ou um conjunto de tabelas relacionadas entre si. Com o recurso ao objecto Consultas do MSAccess é 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.

Uma consulta pode incidir sobre todos os campos de uma tabela, ou conjunto de tabelas, ou apenas em relação a alguns campos; pode apresentar todos os registos ou efectuar uma filtragem de modo a apre-sentar apenas os dados que correspondem a determinada condição.

As consultas facilitam a selecção de dados com o propósito de eliminar redundâncias e retirar os dados em excesso. Assume um formato semelhante ao de uma tabela, embora esta seja virtual uma vez que não existe na realidade, mas apenas por via da definição de alguns parâmetros. Os dados seleccionados numa consulta podem ser altera-dos, apagados ou tratados como se pertencessem a uma tabela

O MS Access permite formular diferentes tipos de consultas, utilizando diversos métodos e procedimentos:

• Consultas de Selecção – São as consultas mais usadas pela maio-ria dos utilizadores, onde será possível seleccionar um conjunto de campos de uma ou várias tabelas, filtrar um conjunto restrito de registos e criar campos calculados.

Page 186: Access manual de base de datos , excelente xp

186 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• Consulta de Referência Cruzada: Com uma CONSULTA DE REFE-

RÊNCIA CRUZADA, podemos sumariar grandes quantidades de infor-maçã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 muitos registos numa só operação. Usa-se uma CONSULTA DE ACÇÃO para fazer uma nova tabela, apagar, juntar ou fazer alterações de registos de uma tabela.

• Consultas SQL (Structured Query Language): Utiliza uma lingua-gem específica de interrogação de base de dados, das quais desta-camos:

o Consulta União: Combina campos unidos em duas ou mais tabelas.

o Consulta Pass-through: Envia declarações para uma base de dados de SQL como Microsoft ou Sybase SQL Server.

o Consulta Definição dos Dados: Cria, altera, ou apaga tabelas numa base de dados do MSAccess, usando declarações de SQL.

3.2 RAZÕES PARA APLICAR UMA CONSULTA

• Seleccionar campos - Podemos incluir numa consulta apenas um conjunto limitado de campos de uma tabela. Numa tabela de Pacientes, a consulta pode mostrar apenas o nome e a morada, e ocultar o telefone.

• Seleccionar registos - Podemos especificar um critério na con-sulta que limite a apresentação dos registos de uma tabela. Por exemplo, podemos apenas seleccionar os Pacientes de uma certa cidade.

• Ordenar registos - Podemos visualizar os registos de uma tabela com uma certa ordem. Por exemplo, podemos ordenar os nomes de Pacientes por ordem alfabética.

Page 187: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 187

Figura II.3.1 Ecrã com as várias opções de criação de uma nova consulta

• Fazer questões acerca de dados em várias tabelas - Podemos usar uma consulta para responder a uma questão acerca de dados de mais do que uma tabela e apresentar os resultados numa só folha de dados. Podemos fazer questões acerca de dados de outras bases de dados.

• Realizar cálculos - Podemos criar novos campos que contenham resultados de um cálculo, chamados campos calculados. Por exemplo, para encontrar o custo total, podemos criar um campo que some os custos dos tratamentos de cada paciente.

• Usar uma consulta como um tipo de dados para formulários, relatórios ou outras consultas - Podemos criar uma consulta de selecção e usá-la como base para a execução de um formulário ou relatório. Usando uma consulta, podemos incluir dados de mais do que uma tabela e seleccionar um critério para mostrar apenas um limite de dados.

• Fazer alterações de dados em tabelas - Podemos alterar, eliminar ou ligar um grupo de registos, usando CONSULTAS DE ACÇÃO. Podemos criar uma nova tabela que inclua os registos para uma tabela existente ou um grupo de tabelas.

3.3 CRIAÇÃO DE UMA CONSULTA

Page 188: Access manual de base de datos , excelente xp

188 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.2 Ecrã “Assistente de consultas Simples”, onde o utilizador selecciona a(s) tabela(s) e respectivos campos a inserir na consulta .

Podemos criar consultas com a ajuda do ASSISTENTE DE CONSULTAS. Se

utilizar o botão na janela da base de dados, surgirá no ecrã uma caixa de diálogo onde devemos indicar qual o processo de criação.

Como se pode visualizar na Figura II.3.1, o MSAccess apresenta-nos um conjunto de Assistentes que possibilitam a criação de diferentes consultas, nomeadamente:

• 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 relaciona-dos com registos de outra tabela.

• CONSULTAS SIMPLES Cria consultas que obtêm dados de campos de uma ou mais tabe-las ou consultas.

3.4 COMO CRIAR UMA CONSULTA COM ASSISTENTE

Page 189: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 189

Figura II.3.3 Ecrã “Mostrar Tabela”, onde o utilizador selec-ciona a(s) tabela(s) a inserir na consulta.

Se utilizar a opção será activado um assistente onde poderá definir um conjunto de campos de várias tabelas que irão ser utilizados na consulta (Figura II.3.2) Com a ajuda deste assistente, podemos construir uma consulta simples de uma forma fácil e rápida. Para isso, siga as instruções apresentadas nas caixas de diálogo do assistente. Escolha a tabela ou tabelas e res-pectivos campos que contenham os dados que irão ser utilizados na consulta

3.5 COMO CRIAR UMA CONSULTA SEM ASSISTENTE

Existem ainda as consultas mais comuns que não necessitam do ASSIS-

TENTE DE CONSULTAS. Fica aqui o modo de criar uma consulta sem o Assistente de Consultas

Para iniciar a definição de uma consulta QBE (Query By Example), ou seja, consulta através de exemplo, devemos posicionar-nos na janela principal da Base de Dados e posteriormente:

1. Premir o botão referente ao objecto CONSULTA.

2. Duplo clique na opção .

Page 190: Access manual de base de datos , excelente xp

190 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.4 Ecrã para a defini-ção de uma con-sulta em modo de estrutura

3. Surge uma caixa de diálogo MOSTRAR TABELA (Figura II.3.3), a partir da qual podemos seleccionar a(s) tabela(s)/consulta(s) que vão servir de base para essa consulta.

4. Depois de seleccionar a(s) tabela(s)/consulta(s) pretendida(s) premir o botão ADICIONAR.

5. 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 definição da consulta (Figura II.3.4).

3.5.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:

• na parte superior da janela são mostradas as tabelas/consultas seleccionadas para a consulta que pretendemos criar;

• na parte inferior da janela temos uma grelha (QBE: query-by-exam-ple), na qual poderemos indicar os campos a incluir na consulta, bem como critérios ou condições para filtragem de dados.

Page 191: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 191

Figura II.3.5 Descrição dos parâmetros de configuração da grelha da consulta

3.5.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 tabela da Figura II.3.5.

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 referenciados na linha de cima

Ordenar Permite-nos ordenar a consulta com base nesse campo, por ordem ascendente 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

3.5.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 na tabela para a coluna da grelha 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 lista-gem; esta caixa de listagem apresenta-nos os campos das tabelas seleccionadas para a consulta, permitindo assim a escolha do cam-po a inserir na coluna onde nos encontramos.

Temos ainda outras acções que podem ser realizadas na janela de construçã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 campo, por cima do nome deste.

Page 192: Access manual de base de datos , excelente xp

192 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

2. Manter o dedo no botão esquerdo do rato e movê-lo para o local desejado.

Alterar o tamanho das colunas:

Esta acção pode ser útil para o caso de existirem campos com tamanho excessivamente grande ou pequeno. 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 ou escolher a opção APAGAR no menu EDI-

TAR. Alterar o nome dos campos numa consulta:

A alteração do nome dos campos pode ser útil em futuras criações de formulários ou relatórios, em que estas consultas sejam referenciadas. Assim, para alterar o nome dos campos, deve:

1. Colocar o campo que irá ser renomeado na grelha QBE.

2. Antes do nome antigo do campo e separado por dois pontos, inserir o novo nome do campo apenas para esta consulta.

3.5.4 Visualizar a consulta através da folha de dados

Existem várias opções para activar uma consulta:

• Aceder ao menu VER, escolher a opção FOLHA DE DADOS.

• Fazer clique no botão ou aceder ao menu CONSULTA e seleccionar o comando EXECUTAR.

• Através do botão 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

Page 193: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 193

Figura II.3.6 A janela da consulta apresen-ta a informação dos Pacientes da BD Dr.Dentinho

e nas linhas são incluídos os registos correspondentes ao critério da consulta.

Na Figura II.3.6 é apresentada uma consulta que foi gerada em função da configuração definida na figura II.3.4, ou seja, o seu dynaset será o conteúdo dos campos Código do Paciente, Nome, Morada.

3.5.5 Especificar o tipo de ordenação:

O tipo de ordenação pode ser útil numa consulta para que haja um melhor esclarecimento da informação dessa consulta. Essa ordenação pode ser crescente ou decrescente com base num campo desejado ou em vários campos.

Como especificar a ordenação dos campos:

1. Premir o rato no rectângulo em branco, correspondente à opção ORDENAR no campo desejado.

2. Escolher Ascendente (0-9 ou A-Z) ou Descendente (9-0 ou Z-A). Os registos ficarão ordenados conforme a escolha anteriormente utilizada.

Page 194: Access manual de base de datos , excelente xp

194 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.7 Caixa de combinação com os valores superiores

3.5.6 Valores superiores

O MSAccess possibilita a visualização de uma determinada percenta-gem ou número de registos, em relação ao total de registos obtido pela consulta. Para isso, devemos estar no modo VISTA DE ESTRUTURA de uma con-sulta e posteriormente seleccionar a opção VALORES SUPERIORES (Figu-ra II.3.7) da barra de ferramentas. O valor definido por defeito é a opção Tudo, no entanto, podemos seleccionar ou inserir um valor específico ou uma determinada percen-tagem de registos a visualizar. Para que o conjunto de valores a visuali-zar seja o pretendido, devemos impor a ordenação dos registos com base num campo da consulta.

3.6 DEFINIÇÃO DE CRITÉRIOS EM CONSULTAS

A principal acção na construção de uma consulta é a criação de critérios que possibilitam a geração de dynasets referentes a um conjunto filtrado de dados. As condições podem ser simples ou múltiplas, consoante impliquem uma ou mais restrições aos dados a pesquisar pela consulta. Para que fiquemos a conhecer um pouco melhor como definir os crité-rios associados às consultas, vamos abordar a utilização de seus dife-rentes tipos. Consulta com condição simples

O MSAccess dá-nos uma grande flexibilidade na forma de inserir as expressões referentes aos critérios. A condição simples é sempre indi-cada na linha CRITÉRIO.

Page 195: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 195

Figura II.3.8 Exemplos de consultas utilizando operadores de comparação

Para identificar conjuntos de registos, costuma-se usar a expressão ENTRE... E... ou sinais de comparação (<, >, <>, <=, =>). Estes opera-dores de comparação podem ser usados não apenas com campos numéricos, mas também com campos de texto ou data. Também pode-mos recorrer aos operadores lógicos E e OU para especificar critérios. Podemos escrever estes operadores em português ou inglês, pois o MSAccess reconhecerá qualquer das formas.

No quadro da Figura II.3.8 encontra alguns exemplos de critérios usa-dos para a selecção de vários registos:

Expressão Significado

>18 Clientes com idades superiores a 18 anos Entre #1/2/00# E #6/6/01# Vendas efectuadas entre 1 de Fevereiro de 2000 e

6 de Junho de 2001 “Matosinhos” Clientes residentes na localidade Matosinhos >=“Porto” Todos as localidades que sejam alfabeticamente

superiores a Porto <=12.5 Números decimais menores ou iguais a 12.5 Maria* Todos os nomes de clientes que comecem por

Maria >2000 E <=2500 Vendas superiores a 2000 e inferiores ou iguais a

2500

Usar símbolos para definirem caracteres:

Os símbolos que podemos utilizar para seleccionar registos são os seguintes: * (asterisco) e ? (ponto de interrogação); o primeiro pode substituir um conjunto de caracteres, exemplos: “B*”- registos que ini-ciem com a letra B, ou “12/*/01” - todos os registos com data do dia 12 no ano de 2001; o segundo substitui um só carácter, exemplo: “bol?”-todos os registos que tenham aquelas três letras mais uma qualquer, como bolo ou bola. 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 não mostra qual-quer registo em que este campo se inicie com a letra C.

Page 196: Access manual de base de datos , excelente xp

196 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.9 Consultas selecção com condições múltiplas operadores de comparação

Consulta com condição múltipla

A grelha QBE pode ter mais do que um critério, para aumentar a flexibi-lidade de uma consulta. Para isso usamos as expressões E ou OU num campo. Para aumentar ainda mais a capacidade da consulta podemos utilizar mais do que um critério, como por exemplo: usar o critério “ADSE” no campo de texto “caixa” da tabela “T-Pacientes” e ao mesmo tempo usar “22*” no campo tipo texto “Telefone” da mesma tabela, seleccionando desta forma apenas os registos (Pacientes) que pertencem à ADSE e simultaneamente sejam moradores na zona do Porto.

Como se pode verificar na Figura II.3.9, depois de activar a consulta surge um dynaset no qual todos os registos correspondem às condições impostas.

3.7 CRIAÇÃO DE CONSULTAS COM BASE EM VÁRIAS TABELAS

Uma das grandes potencialidades de um SGBD relacional reside na possibilidade de podermos efectuar consultas que envolvem ao mesmo

Page 197: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 197

Fig II.3.10 Consultas selecção com várias tabelas relacionadas

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 “Dr.Dentinho”, podemos querer saber informações como a seguinte: Quais os Pacientes que adquiriram aparelhos e em que data. Para criar a nova consulta precisamos de utilizar as tabelas “T-Paciente”, “T-Aparelho” e “T-Paciente/Aparelhos”.

Através do modo VISTA DE ESTRUTURA da consulta, inserimos as respec-tivas tabelas, e deveremos confirmar se os relacionamentos entre elas são visíveis. Se esses relacionamentos não aparecerem, teremos de os definir na janela de relacionamentos (conforme vimos em 2.6, na Parte II). Posteriormente, seleccionamos os campos de cada tabela que pre-tendemos incluir na consulta. O dynaset desta consulta é apresentado na Figura II.3.10.

Page 198: Access manual de base de datos , excelente xp

198 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.11 Apresentação de uma consulta com um parâmetro

3.8 CONSULTAS COM PARÂMETROS

Se executarmos frequentemente a mesma consulta, temos que mudar sempre o mesmo critério. Para evitar perder tempo nessa acção temos que utilizar a consulta parametrizada. Quando executamos a consulta parametrizada, não temos que abrir a janela de consulta e fazer alterações na grelha QBE, pois durante a execução deste tipo de consultas é apresentada uma caixa de diálogo pedindo-lhe informações; tais como CRITÉRIOS para obter registos ou um valor que pretenda inserir num campo. 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 rectos.

4. No menu VER, escolher a opção FOLHA DE DADOS ou premir o botão FOLHA DE DADOS na barra de ferramentas.

5. Inserir um valor e premir OK.

Page 199: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 199

A introdução de um critério dentro de parêntesis rectos actua como parâmetro, ou seja, ao pedirmos a visualização dos dados da consulta, o MSAccess pede-nos a introdução de um valor, o qual vai actuar como critério ou filtro da consulta. Consideremos uma consulta que apresenta a informação dos pacientes que efectuaram um determinado tratamento Geral (Figura II.3.11). Ao executar esta consulta aparecerá um caixa de diálogo que solicitará a introdução de um valor. No caso do exemplo será a designação de um tratamento. Os valores introduzidos irão actuar em conformidade com a expressão indicada, pois os parâmetros (dentro dos parêntesis rectos) aparecem associados aos operadores de comparação. Assim, apenas são apre-sentados os registos com Tratamentos Gerais iguais ao tratamento introduzido no parâmetro.

3.9 CRIAR CAMPOS CALCULADOS

Uma consulta não tem necessariamente de conter apenas os campos que pertencem às tabelas definidas na consulta, podemos também criar novos campos resultantes de operações aritméticas entre campos utili-zados na consulta.

Consideremos o exemplo, em que se pretende criar uma consulta que deverá apresentar o IVA referente aos custos dos tratamentos efectua-dos pelos respectivos Pacientes. Para criar a nova consulta precisamos de utilizar as tabelas “T-Paciente”, “T-TratamentoGeral” e “T-Paciente/TratamentoGeral”. Uma vez aberta a consulta em MODO DE ESTRUTURA, vamos inserir os respec-tivos campos de cada tabela para complementar a informação da con-sulta. Posteriormente, vamos posicionar o indicador do rato na linha CAMPO e na primeira coluna da grelha que estiver vazia. Nessa célula escrevemos Custo*1,17. Depois de teclarmos Enter o programa rees-creverá a expressão (ver Figura II.3.12).

Page 200: Access manual de base de datos , excelente xp

200 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.12 Consulta com um campo cálculado

Figura II.3.13 Dynaset com campo calculado da Consulta da figura II.3.12

Expr1: [Custo TratamentoGeral]*1,17

Ao activar a consulta, irá obter o dynaset já com o resultado do cálculo efectuado (Figura II.3.13). O campo calculado aparece na última coluna com o nome “Expr1”. Os valores apresentados nesse campo são resul-tado da expressão introduzida.

Se quisermos, podemos atribuir um nome mais significativo ao novo campo. Para isso, na grelha de consulta, posicionamos o cursor na célula onde introduzimos a expressão, e substituímos “Expr1” por “Cus-to c/IVA”.

Page 201: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 201

Figura II.3.14 Exemplos de cálculos automáticos que podem ser feitos no agrupamento de dados operadores de comparação

Cálculos automáticos em função de agrupamentos de dados

As consultas do MSAccess permitem-nos ainda efectuar outros tipos de cálculos, que se baseiam nos possíveis agrupamentos de dados asso-ciados aos campos da consulta, ou seja, poderemos fazer questões acerca de grupos de dados como por exemplo saber o nº de tratamen-tos feitos por cada paciente.

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 valores 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 con-sulta

Último O valor do campo do último registo numa tabela ou consulta

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

Através destas consultas podem ser obtidos resultados numéricos a partir da utilização de funções estatísticas já utilizadas no MSExcel, como mostra o quadro da Figura II.3.14. 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.

Page 202: Access manual de base de datos , excelente xp

202 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.15 Exemplo de Cálculos automáticos em função de agrupamentos de dados

2. No menu VER, escolher a opção TOTAIS ou premir o botão na barra de ferramentas. 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 opção TOTAL, do espaço por baixo de cada campo, seleccio-nar o tipo de total (como Soma, Média, ou Min).

4. Premir o botão VER FOLHA DE DADOS na barra de ferramentas para ver o registo seleccionado.

Como exemplo, poderemos utilizar a seguinte questão: Qual a soma e o valor médio dos custos dos tratamentos gerais efec-tuados na clínica dentária? Para construir uma consulta que responda a esta questão, deveremos utilizar as tabelas T-TratamentoGeral e T-TratamentoGeralEfectuados. Depois de adicionar as tabelas à janela MODO DE ESTRUTURA da con-sulta, vamos colocar o campo “Descrição do tratamento” na primeira coluna da grelha QBE. Posteriormente, vamos colocar o campo “Custo do tratamento” em três colunas da mesma grelha, uma vez que este campo vai ser alvo de três tipos de cálculos.

Page 203: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 203

Depois de activar o botão vamos agrupar os registos da consulta pelo campo “Descrição do tratamento” e em seguida vamos impor para o campo “Custo do tratamento” os diferentes cálculos (SOMA, MÉDIA, CONTAR) que estão disponíveis na caixa de combinação da linha “Total:”. A figura II.3.15 apresenta o aspecto final da consulta no MODO

DE ESTRUTURA, bem como os resultados obtidos.

3.10 CONSULTAS DE REFERÊNCIA CRUZADA

As consultas tabela de referência cruzada são utilizadas para calcular e reestruturar dados de forma a facilitar a sua análise. Este tipo de con-sulta apresenta uma grande sumariaçã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 cal-culam 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 essencial-mente a dois procedimentos:

• Inicialmente, escolhe-se uma coluna ou campo para, a partir dos seus diferentes dados, serem criadas linhas de uma nova tabela;

• Depois, indica-se uma outra coluna ou campo para, a partir dos seus dados, serem criadas as colunas dessa nova tabela.

Desta forma, é criada uma nova tabela, em cujas células aparecerão números relativos à quantidade de ocorrências dos valores em linha, em correspondência com os valores em coluna.

Page 204: Access manual de base de datos , excelente xp

204 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.16 Assistente de consulta de referência cruzada

3.10.1 Criar uma Consulta Tabela de refe-rência cruzada com um assistente

1. Na janela BASE DE DADOS, premir o botão Consulta e, em segui-

da, na barra de ferramentas, clique em .

2. Na caixa de diálogo Nova consulta, clique em ASSISTENTE DE

CONSULTAS TABELA DE REFERÊNCIA CRUZADA e, em seguida, em OK.

3. Siga as instruções apresentadas nas caixas de diálogo do assis-

tente (Figura II.3.16). Escolha a tabela ou consulta que contenha os dados que irão ser confrontados na tabela de referência cru-zada.

4. Se a consulta resultante não for exactamente a que pretende, pode executar novamente o assistente ou alterar a consulta na VISTA DE ESTRUTURA.

Como exemplo, apresentamos na Figura II.3.17 uma consulta de refe-rência cruzada que apresenta os nomes dos pacientes em confronto com os custos dos tratamentos Gerais por eles efectuados.

Na concepção desta tabela, consideramos que o campo “Nome Pacien-te” define o número de linhas consoante os diferentes Pacientes exis-tentes, enquanto que o campo “Designação” (Tratamento Geral) define o número de colunas. Em cada célula, resultante do cruzamento de uma

Page 205: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 205

Figura II.3.17 Exemplo de uma consulta de referência cruzada

de uma linha com uma coluna, aparecem os custos de cada Tratamento Geral.

A criação de uma consulta de referência cruzada com recurso ao Assis-tente é feita de uma forma fácil e rápida, no entanto também é possível criar a consulta sem este recurso

3.10.2 Como criar uma consulta de refe-rência cruzada sem Assistente

1. Na janela BASE DE DADOS, premir o botão CONSULTA e faça duplo

clique em.

2. Seleccionar as tabelas ou consultas que contenham os campos que se deseja inserir nesta consulta.

3. Trazer os campos para a linha de campo na grelha QBE e espec i-ficar o critério.

4. No menu CONSULTA, escolher a opção REFERÊNCIA CRUZADA ou

premir o botão na BARRA DE FERRA-MENTAS.

5. Premir no espaço em branco da Referência Cruzada para o nome do campo que se deseja usar como linha de cabeçalho, premir a seta, e seleccionar a opção TÍTULO DA LINHA, da lista (ver Figura II.3.18).

6. Premir no espaço em branco da Referência Cruzada para o nome do campo de que se deseja usar como coluna de cabeçalho, pre-

Page 206: Access manual de base de datos , excelente xp

206 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.18 Vista de estrutura da consulta de referência cruzada do exemplo da Figura II.3.15

cálculos automáticos que podem ser feitos no agrupamento de dados operadores de comparação

mir a seta, e seleccionar a opção CABEÇALHO DA COLUNA, da lista (ver Figura II.3.18).

7. Premir no espaço em branco da Referência Cruzada para o nome do campo que se deseja ter um sumário dos valores, premir a seta, e seleccionar a opção VALOR, da lista (ver Figura II.3.18).

8. Premir no espaço em branco da Referência Cruzada para o nome do campo de que se deseja ter um sumário dos valores, premir a seta, e seleccionar o tipo de totais (com SOMA, MAX, ou CON-TAR) que se desejam na lista (ver Figura II.3.18).

9. No menu VER, escolher a opção FOLHA DE DADOS ou premir o botão Folha de Dados na barra de ferramentas para ver o registo seleccionado.

3.10.3 Especificar os cabeçalhos de colunas

Por defeito, os cabeçalhos de coluna são ordenadas e aparecem por ordem alfabética ou numérica. Ao seleccionarmos a propriedade da consulta CABEÇALHO DAS COLUNAS para alterar o formato de defeito, podemos:

Page 207: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 207

• Especificar a ordem dos cabeçalhos de colunas.

• Improvisar um formato - Se tivermos de criar uma consulta que sirva de base para um relatório, para aumentar a rapidez de execução, especificamos os cabeçalhos de coluna fixas.

• Designar quais as colunas que são visualizadas - Se tivermos de criar uma consulta que sirva de base para um relatório em que este só deverá imprimir um número limitado de colunas.

3.11 CONSULTAS DE ACÇÃO

O MSAccess permite-nos ainda definir outros tipos de consultas, gene-ricamente designadas por CONSULTAS DE ACÇÃO , e que têm em comum o facto de produzirem alterações reais sobre a base de dados. Com consultas de acção, podemos criar novas tabelas ou alterar dados exis-tentes nelas. Assim, o MSAccess põe-nos à disposição quatro tipos de consultas de acção:

• CONSULTA CRIAR TABELA - Cria uma nova tabela a partir da totali-dade ou de uma parte dos dados existentes numa ou várias tabelas.

• CONSULTA ELIMINAÇÃO - Apaga um grupo de registos de uma ou mais tabelas.

• 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 numa ou mais tabelas.

3.11.1 Consulta criar tabela

Quando criamos tabelas por este meio, podemos escolher os campos e dados que desejamos incluir nela. Um consulta criar tabela, é útil para:

Page 208: Access manual de base de datos , excelente xp

208 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.19 Vista de estrutura de uma consulta Criar tabela

• Criar relatórios que mostrem dados numa determinada altura.

• Fazer uma cópia de uma tabela.

• Criar uma tabela que contenha registos antigos.

• Improvisar um tipo de formulários ou relatórios baseados em con-sultas tipo tabelas-múltiplas.

Como criar uma consulta de construção de uma nova tabela:

1. Criar uma consulta, seleccionando as tabelas ou consultas que contêm os campos que se deseja incluir na nova tabela.

2. No menu CONSULTA, escolher a opção CRIAR TABELA ou premir

na BARRA DE FERRAMENTAS e realizar as seguintes acções:

• Inserir o nome da nova tabela (Fig. II.3.19) que se deseja criar (se desejar criar uma nova tabela para fazer a substituição por uma existente, seleccione a tabela na caixa de combinação).

• Indicar a nova base de dados do MSAccess, e inserir o nome desta.

3. Escolher OK.

Page 209: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 209

4. Escolher os campos que se deseja incluir na nova tabela e selec-cionar um critério.

3.11.2 Consulta eliminação

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.

Por exemplo, pode utilizar uma Consulta Eliminação para remover Apa-relhos obsoletos ou para os quais não existem pacientes. Como criar uma consulta que apague registos:

1. Criar uma consulta, seleccionando a(s) tabela(s) em que se deseja apagar registos usando um critério.

2. No menu CONSULTA, escolher a opção ELIMINAR ou premir

na BARRA DE FERRAMENTAS.

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

4. Especificar o critério necessário.

5. Escolher a opção EXECUTAR, no menu CONSULTA ou premir o

botão EXECUTAR na BARRA DE FERRAMENTAS.

6. Para completar a consulta e apagar os registos, escolher OK.

Com as consultas eliminação, elimina sempre registos inteiros e não apenas campos seleccionados dentro dos registos. Pode utilizar uma CONSULTA ELIMINAÇÃO para eliminar registos de uma única tabela ou de múltiplas tabelas. Por exemplo, pode utilizar uma

Page 210: Access manual de base de datos , excelente xp

210 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

CONSULTA ELIMINAÇÃO para eliminar todos os aparelhos e respectivos pacientes que os aplicaram.

3.11.3 Consulta acrescentar

A consulta acrescentar é usada para juntar registos de uma tabela do MSAccess para outra tabela já existente. Este tipo de consulta permite seleccionar, com base num critério um conjunto de registos de uma consulta, para os adicionar ao fim de uma ou várias tabelas da mesma base de dados ou de uma outra base de dados.

Por exemplo, suponha que admitem alguns Pacientes novos e as infor-mações dos mesmos se encontram numa tabela de uma outra base de dados. Para evitar ter de introduzir manualmente todas estas informa-ções, seria possível acrescentar as mesmas à tabela “T-Pacientes”. Como criar uma consulta acrescentar:

1. Criar uma consulta, seleccionar as tabelas ou consultas que con-têm os registos que se deseja juntar à outra tabela.

2. No menu CONSULTA, escolher a opção ACRESCENTAR ou premir

na BARRA DE FERRAMENTAS. E fazer o seguinte:

• Inserir o nome da tabela em que se desejam juntar os regis-tos. Esta pode ser uma tabela numa base de dados do MSAccess ou uma tabela de outra base de dados. Se esco-lher outra base de dados do MSAccess, inserir o nome da base de dados (e o caminho, se necessário).

3. Premir OK.

4. Trazer os seguintes campos para a grelha QBE:

• Todos os campos que se desejam juntar.

• Qualquer campo que se deseja usar, especificando um crité-rio.

Page 211: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 211

• O campo correspondente ao campo chave da tabela à qual se desejam juntar os registos.

5. Especificar um critério se necessário.

6. Na linha ACRESCENTAR A, inserir os nomes dos campos que se desejam juntar.

7. Escolher a opção EXECUTAR, no menu CONSULTA ou premir o

botão EXECUTAR na BARRA DE FERRAMENTAS.

8. Para completar a consulta e juntar os registos, prime-se OK.

3.11.4 Consulta actualização

Este tipo de consulta permite efectuar alterações reais nas tabelas que estiverem associadas à consulta. Com esta consulta, podemos introdu-zir novos valores ou expressões nos campos pretendidos.

Por exemplo, pode aumentar os preços em 10% para todos os Trata-mentos Gerais. Como criar uma consulta actualização:

1. Criar uma consulta, seleccionando as tabelas ou consultas que incluam os registos que se desejam alterar.

2. No menu CONSULTA, escolher a opção ACTUALIZAR ou premir

na BARRA DE FERRAMENTAS.

3. Escolher os campos em que irão fazer 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.

5. Na área de ESTRUTURA, escolher a opção EXECUTAR, no menu

CONSULTA ou premir o botão EXECUTAR na BARRA DE FER-

RAMENTAS.

Page 212: Access manual de base de datos , excelente xp

212 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.20 Exemplo de uma consulta Vista de estrutura e o correspondente código em linguagem SQL gerado automaticamente pelo MSAccess

6. Para completar a consulta e mudar a informação dos registos, escolher OK.

3.12 CONSULTAS SQL

Uma consulta SQL (linguagem de consulta estruturada) é uma consulta criada através de instruções SQL. As instruções SQL são muitas vezes usadas para consultar, actualizar e gerir bases de dados relacionais como o MSAccess.

Sempre que é criada uma consulta na VISTA DE ESTRUTURA, o MSAc-cess constrói as instruções SQL equivalentes em segundo plano de uma forma automática. Essas instruções SQL podem ser visualizadas ou editadas na VISTA DE SQL.

A Figura II.3.20 apresenta uma consulta de selecção criada através do modo VISTA DE ESTRUTURA, e apresenta também as respectivas instru-ções SQL criadas automaticamente pelo MSAccess.

Page 213: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 213

3.12.1 Como visualizar ou modificar uma declaração do SQL

Se estivermos familiarizados com a linguagem SQL, podemos querer modificar ou visualizar declarações de SQL, em vez de usar a grelha de QBE. Nesse caso, temos que:

1. Criar uma consulta, ou abrir uma já existente na área de ESTRU-TURA.

2. No menu VER, escolher a opção SQL ou premir o botão na BARRA DE FERRAMENTAS .

3. Se desejar fazer alterações, deve inseri-las na condição do SQL.

4. No menu VER, escolher a opção VISTA DE ESTRUTURA ou premir o botão VER ESTRUTURA na BARRA DE FERRAMENTAS. A grelha QBE reflecte as alterações anteriormente realizadas.

3.12.2 Consultas de SQL específicas

Algumas consultas SQL, chamadas de Consultas de SQL específicas, não podem ser criadas na GRELHA DE ESTRUTURA, mas sim directamente na VISTA DE SQL. 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 MSAccess.

Consulta de UNIÃO As consultas de união são particularmente vantajosas quando:

• Combinam dados de muitas tabelas ou consultas;

Page 214: Access manual de base de datos , excelente xp

214 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• É necessário criar tabelas com dados de muitos tipos;

• É necessário criar relatórios para sumariar os dados de muitas bases de dados;

Para criar uma consulta de UNIÃO , devemos:

1. Na janela BASE DE DADOS, premir o botão e fazer

duplo clique em

2. Escolher o botão FECHAR na caixa de diálogo MOSTRAR TABELA.

3. No menu CONSULTA, escolher a opção ESPECÍFICO DE SQL e

seguidamente, escolher a opção .

4. Inserir as condições de SQL SELECT para a consulta de união.

5. Escolher a opção FOLHA DE DADOS no menu VER ou premir o botão VER FOLHA DE DADOS na BARRA DE FERRAMENTAS.

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 alte-ração de dados.

Para criar uma consulta de Ligação, devemos:

1. Na janela BASE DE DADOS, premir o botão e fazer

duplo clique em

2. Escolher o botão FECHAR na caixa de diálogo MOSTRAR TABELA.

3. No menu CONSULTA, escolher a opção ESPECÍFICO DE SQL e segui-

damente, escolher a opção .

4. Na folha das propriedades , seleccionar a propriedade Cadeia de ligação ODBC para especificar a informação da base de dados a conectar.

Page 215: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 215

5. Inserir a consulta de passagem de dados.

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. Escolher a opção EXECUTAR, no menu CONSULTA ou premir o botão

EXECUTAR na BARRA DE FERRAMENTAS.

Consulta de definição de dados

Utiliza-se este tipo de consulta para criar ou alterar objectos de 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 Junta-se um novo campo a uma tabela já

existente.

• 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. Na janela BASE DE DADOS, premir o botão e fazer

duplo clique em

2. Escolher o botão FECHAR na caixa de diálogo MOSTRAR TABELA.

3. No menu CONSULTA, escolher a opção ESPECÍFICO DE SQL e

seguidamente, escolher a opção .

Page 216: Access manual de base de datos , excelente xp

216 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

4. Inserir a condição para a consulta de definição de dados.

5. Escolher a opção EXECUTAR, no menu CONSULTA ou premir o botão Executar na barra de ferramentas.

3.12.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. É 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. A SUBCONSULTA é uma consulta que se baseia na consulta principal, por exemplo, uma SUBCONSULTA que tenha os mesmos preços, preços esses que pertenciam a uma consulta com vários preços, incluindo esses iguais. 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.

Page 217: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 217

Figura II.3.22 Ecrã “Mostrar Tabela”, onde o utilizador selec-ciona a(s) tabela(s) a inserir na consulta.

3.13 EXERCÍCIO GUIADO Consideremos novamente a nossa base de dados Dr.Dentinho, para exemplificação das operações de consultas com o MSAccess. Vamos fazer uma abordagem a grande parte dos procedimentos inerentes às consultas, recorrendo a exemplos que se enquadrem na utilização de uma base de dados de uma clínica dentária. Criação de consultas com base em várias tabelas Vamos começar por criar uma consulta que apresente os dados refe-rentes aos pacientes que fizeram Tratamentos específicos. A consulta deverá apresentar a data do tratamento, o nome do Paciente, o nome do dente tratado e o nome e o custo do tratamento específico efec-tuado.

Para criar a nova consulta, devemos seleccionar o objecto da janela da Base de Dados, e em seguida seleccionar a opção

. A partir do quadro Mostrar Tabela, adi-cionamos as tabelas cujos campos sejam utilizados na consulta, nomeadamente T-Pacientes, T-Dentes, T-TratamentosEspecificos e T-TratamentosEspecificosEfectuados.

Page 218: Access manual de base de datos , excelente xp

218 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.23 Estrutura da consulta

Figura II.3.24 Janela para a gravação da consulta

As referidas tabelas deverão aparecer na parte superior da janela da VISTA DE ESTRUTURA (Figura II.3.22) ligadas pelos respectivos relacio-namentos. Em seguida, seleccionamos os campos que pretendemos incluir na consulta. Vamos incluir na consulta os campos data do tratamento, nome do Paciente, nome do dente tratado e nome e custo do trata-mento específico efectuado. Para inserir um campo na grelha de consulta, como já sabemos, pode-mos arrastá-lo da respectiva tabela para a grelha ou seleccioná-lo na caixa de listagem, que podemos abrir na primeira linha da grelha.

No final, a nossa consulta deve apresentar uma estrutura como a que pode ser vista na Figura II.3.23. Depois de concluída a primeira fase da elaboração na consulta, devemos efectuar a sua gravação. Para tal,

clicamos no respectivo botão GUARDAR e digitamos o nome Trata-mentos Específicos na janela que entretanto aparece no ecrã (Figura II.3.24).

Page 219: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 219

Figura II.3.24 Janela para a gravação da consulta

Figura II.3.25 Janela folha de dados com os 6 registos ordenados pela Data de Tratamento e de forma descendente

Estabelecer uma ordenação

Vamos estabelecer uma ordenação dos registos da nossa consulta pela data de tratamento, de forma que aparecem primeiro os tratamentos mais recentes. Assim, devemos premir o rato no rectângulo em branco correspondente à opção ORDENAR no campo “Data de tratamento”. Em seguida, devemos escolher a opção Descendente que aparece na caixa de combinação (Figura II.3.24).

Valores superiores Para restringir a nossa consulta aos últimos 6 tratamentos, devemos utilizar a opção VALORES SUPERIORES da barra de ferramentas. Na caixa

vamos digitar o número 6 de maneira que ao executarmos

a consulta, sejam visualizados apenas 6 registos, como é apresen-tado na Figura II.3.25

Page 220: Access manual de base de datos , excelente xp

220 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.26 Processo para a imposição de condições na consulta

Critérios para a consulta Podemos agora, a partir desta consulta, definir os mais variados crité-rios de selecção. Por exemplo, vamos elaborar a consulta que apre-sente apenas os Tratamentos específicos ”restauração” ou “Exodontia” no mês de Junho de 2002. Vamos chamar a esta consulta ”Tratamentos de Junho”, 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 II.3.26.

Consultas com parâmetros Suponhamos que, ao abrir a consulta “Tratamentos Específicos”, que-ríamos indicar um determinado Mês para visualizar os respectivos tra-tamentos, sem sermos obrigados a alterar a condição no modo VISTA DE

ESTRUTURA da consulta. Para resolver este problema vamos criar uma nova consulta com o nome “Tratamentos Prótese Mês” que terá como base a consulta ante-rior. Adicionalmente vamos impor que esta consulta apresente apenas os tratamentos cuja designação seja Prótese. A Figura II.3.27 apresenta

Page 221: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 221

Figura II.3.27 Procedimentos a adoptar para a elaboração da consulta, desde a configuração dos critérios da consulta ate a sua execução

a sequência dos procedimentos a adoptar, desde a configuração dos critérios da consulta até à sua execução.

De notar que, um dos critérios da consulta “Tratamentos Prótese Mês” utiliza o símbolo * (asterisco) que permite condicionar a visualização de registos que tenham no campo designação do tratamento os caracteres iniciais “Prótese”.

Campos calculados Ainda recorrendo à consulta “Tratamentos Específicos”, vamos efectuar algumas alterações que permitam introduzir um campo calculado. Neste caso vamos inserir um novo campo que apresente os custos dos trata-mentos com um desconto de 10%. Uma vez aberta a consulta em MODO DE ESTRUTURA, vamos posicionar o indicador do rato na linha CAMPO e na primeira coluna da grelha que estiver vazia. Nessa célula escrevemos “Custo c/desconto:” que será a

Page 222: Access manual de base de datos , excelente xp

222 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.28 Procedimentos a adoptar para a elaboração da consulta com um campo calculado, desde a configuração da estrutura até à sua execução

legenda a apresentar para esta nova coluna e digitamos a Expressão que efectue o cálculo (Figura II.3.28).

Cálculos automáticos em função de agrupamentos de dados

Considerando de novo os tratamentos Específicos efectuados pelos pacientes, vamos criar uma nova consulta que nos permita saber para cada Paciente o número de tratamentos efectuados, bem como a soma e a média dos custos dispendidos nos mesmos. Para construir esta consulta, deveremos utilizar as tabelas T-Pacientes, T-TratamentosEspecificos e T-TratamentosEspecificosEfectuados. Depois de adicionar as tabelas à janela MODO DE ESTRUTURA da con-sulta, vamos colocar o campo “Nome do Paciente” na primeira e na segunda coluna da grelha QBE. Posteriormente, vamos colocar o cam-po “Custo do tratamento Especifico” nas duas colunas seguintes da mesma grelha, uma vez que este campo vai ser alvo de dois cálculos (soma e média).

Page 223: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 223

Figura II.3.29 Procedimentos a adoptar para a elaboração da consulta com campos calculados automaticamente

Depois de activar o botão vamos agrupar os registos da consulta pelo campo “Nome do Paciente” e em seguida vamos impor para o mesmo campo o cálculo Contar. Para cada coluna do campo “Custo do tratamento Especifico” introduzimos a Soma e a Média respectiva-mente (FIGURA II.3.29).

Consultas de referência cruzada Consideremos a nossa consulta “Tratamentos específicos” para a ela-boração de uma nova consulta de referência cruzada. Suponhamos que queríamos saber como se distribuíam os custos dos tratamentos pelos diferentes Pacientes. A resposta a esta pergunta pode ser dada através de uma tabela com a seguinte estrutura:

Page 224: Access manual de base de datos , excelente xp

224 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.30 Consulta de Referência Cruzada que apresenta os custos dos tratamentos específicos para cada Paciente

Figura II.3.31 Quadros do assistente de consulta de Referência Cruzada que permitem escolher os cabeçalhos para as linhas e colunas

Para criar a consulta de referência cruzada da Figura II.3.30, devemos criar uma nova consulta com base na consulta “Tratamentos específi-cos”. Para isso vamos utilizar o assistente CONSULTAS TABELA DE REFE-

RÊNCIA CRUZADA.

1. Na janela BASE DE DADOS, premir o botão Consulta e, em segui-

da, na barra de ferramentas, clique em .

2. Na caixa de diálogo Nova consulta, clique em ASSISTENTE DE

CONSULTAS TABELA DE REFERÊNCIA CRUZADA e, em seguida, em OK.

3. No primeiro quadro do assistente, escolher a consulta “Trata-mentos específicos”.

4. Escolher como cabeçalho das linhas o campo “Nome” e no qua-dro seguinte escolher como cabeçalho das colunas o campo “Designação Tratamento específico” (Figura II.3.31).

Page 225: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 225

Figura II.3.32 Modo Vista de Estrutura da consulta de elimi-nação para o aparelho “Fixo inferior X”

5. Em seguida escolher o campo “Custo Tratamento Específico” que irá ser alvo de um cálculo (soma) que relacione o valor de cada linha (“Nome”) com cada coluna (“Designação Tratamento específico”).

6. Seleccionar a opção .

7. Finalmente, atribua um nome à consulta.

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. Assim, vamos começar por criar uma consulta que permita eliminar a informação inerente a um aparelho que por se ter tornado obsoleto não é mais comercializado. O aparelho em causa tem a designação “Fixo inferior X” e obviamente encontra-se na tabela “T-Aparelhos”. Para criar esta consulta de eliminação, deve:

1. Criar uma consulta, seleccionando a tabela “T-Artigos” em que se deseja apagar um registo.

2. No menu CONSULTA, escolher a opção ELIMINAR ou premir

na barra de ferramentas.

3. Levar o campo “Descrição Aparelho” para a grelha QBE:

4. Especificar o critério “Fixo Inferior X” (Figura II.3.32).

Page 226: Access manual de base de datos , excelente xp

226 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.3.33 Modo Vista de Estrutura da consulta de actualização para os custos dos Tratamentos Gerais

5. Escolher a opção EXECUTAR, no menu CONSULTA ou premir o botão

EXECUTAR na BARRA DE FERRAMENTAS.

6. Para completar a consulta e apagar os registos, escolher Sim, na caixa de diálogo que pergunta se deseja eliminar o registo encon-trado.

Ainda no âmbito da criação de consultas de acção vamos criar uma nova consulta. Suponhamos que pretendemos inflacionar em 10% todos os preços dos Tratamentos Gerais. Para atingir este objectivo vamos utilizar uma consulta de actualização que deverá efectuar este cálculo e simultaneamente registá-lo para todos os tratamentos Gerais.

Para criar esta consulta de actualização, deve:

1. Criar uma consulta, seleccionando a tabela “T-TratamentosGe-rais” em que se deseja alterar os registos.

2. No menu CONSULTA, escolher a opção ACTUALIZAR ou premir

na BARRA DE FERRAMENTAS.

3. Levar o campo “Custo Tratamento Geral” para a grelha QBE.

4. Na linha “Actualizar para:” da grelha QBE introduzir a expressão que salvaguarde o aumento dos custos em 10% (Figura II.3.33).

Page 227: Access manual de base de datos , excelente xp

II.3. CONSULTAS EM MSACCESS 227

5. Na área de ESTRUTURA, escolher a opção EXECUTAR, no menu

CONSULTA ou premir o botão EXECUTAR na BARRA DE FER-

RAMENTAS.

6. Para completar a consulta e alterar a informação dos registos, escolher Sim, na caixa de diálogo que pergunta se deseja actua-lizar os quatro registos encontrados.

Page 228: Access manual de base de datos , excelente xp

228 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Page 229: Access manual de base de datos , excelente xp

4 Formulários

4.1 DEFINIÇÃO

Um formulário é um objecto da base de dados MSAccess em que podem ser colocados controlos para executar acções ou para introduzir, visualizar e editar dados em campos. Os formulários constituem uma forma de mostrar os dados de tabelas ou consultas com uma melhor apresentação, e permitem ao utilizador utilizar uma variedade de artifícios gráficos e outros elementos como cores, texto, figuras, etc. 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 na entrada.

4.2 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. As ferramentas de construção disponíveis ajudam-nos a criar formulários de fácil utilização:

• Apresenta os dados de uma forma atractiva com fontes espe-ciais e outros efeitos gráficos como cores ou sombras.

• Assemelha-se a uma folha de papel com os respectivos cabeça-lhos e rodapés.

Page 230: Access manual de base de datos , excelente xp

230 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• Calcula totais.

• Permite a execução de pesquisas de informação com a introdu-ção de critérios de selecção ou filtragem.

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

4.3 MODOS DE CRIAÇÃO DE FORMULÁRIOS

Podemos criar formulários com ou sem a ajuda do Assistente de For-mulários. As diferentes formas de criação de um formulário são:

• Formulários automáticos;

• Assistentes;

• Vista de estrutura.

Embora as duas primeiras opções sejam bastante práticas e fáceis de utilizar 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. Para criar um novo formulário, devemos:

1. Na janela BASE DE DADOS, premir o botão ou esco-

lher a opção FORMULÁRIO dentro de OBJECTOS DE BASES DE

DADOS no menu VER.

2. Premir no botão (Figura II.4.1).

Page 231: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 231

Figura II.4.1 Ecrã “Novo formulário”, onde são apresentadas diversas formas de criação de um formulário

4.4 FORMULÁRIOS COM “FORMULÁRIOS AUTOMÁTICOS”

O Formulário Automático é a forma mais simples de criação de um for-mulário. Normalmente, é utilizado quando necessitamos rapidamente de obter uma ficha de uma tabela ou consulta Quando usamos um formulário para inserir ou visualizar dados, deve-mos conectar o formulário a uma tabela ou consulta que fornecerá os dados. Esta forma de criação de formulários apresenta todos os campos e registos existentes na tabela ou consulta previamente escolhida. Con-tudo, não é possível ao utilizador durante o processo de criação fazer qualquer tipo de personalização. Existem três tipos de Formulários automáticos disponíveis, nomeada-mente Colunas, Tabelas e Folha de dados.

4.4.1 Formulário Automático: Colunas

É o formato mais típico de formulários. Mostra valores de registos numa coluna, e cada valor do campo numa linha separada. Mostra um registo de cada vez (Figura II.4.2).

Page 232: Access manual de base de datos , excelente xp

232 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.2 Aspecto de um formulário tipo “colunas” criado automaticamente

Figura II.4.3 Aspecto de um formulário tipo “Tabelas” criado automaticamente

4.4.2 Formulário Automático: Tabelas O formulário apresenta um formato semelhante a uma tabela. Mostra os campos em colunas e os valores em registos, um em cada linha. Pode mostrar vários registos de cada vez (Figura II.4.3).

4.4.3 Formulário Automático: Folha de Dados O formulário apresenta o aspecto de uma folha de Dados. Mostra os campos em colunas e os registos em linhas. Pode mostrar vários regis-tos de cada vez (Figura II.4.4).

Page 233: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 233

Figura II.4.4 Aspecto de um formulário tipo “Folha de Dados” criado automaticamente

4.5 FORMULÁRIOS USANDO OS ASSISTENTES

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.

Através do botão , poderá aceder aos seguintes três tipos de assistentes de formulários:

• Formulário – cria um formulário tradicional.

• Gráficos – cria um formulário com um gráfico que representa os dados de uma tabela.

• Tabelas Dinâmicas - cria um formulário com ligação a uma tabe-la dinâmica de dados.

4.5.1 Como criar um novo formulário com Assistente

1. Na janela BASE DE DADOS, premir o botão ou esco-

lher a opção FORMULÁRIOS dentro de OBJECTOS DE BASES DE

DADOS no menu VER.

Page 234: Access manual de base de datos , excelente xp

234 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.5 Primeiro quadro do assistente, onde se podem escolher os campos a inserir no formulário.

2. Faça duplo clique na opção

3. Na caixa TABELAS/CONSULTAS, seleccionar a tabela ou consulta que contêm os dados que serão mostrados no formulário (Figura II.4.5).

4. Inserir campo a campo através do botão , ou todos os cam-

pos através do botão .

5. Escolher o esquema de apresentação dos dados: Colunas, Tabela, Folha de Dados, Justificado, Tabela dinâmica ou Gráfico Dinâmico.

6. Escolher o estilo de apresentação gráfica que configura os dados e o fundo do formulário.

7. Finalmente, introduzir o nome a dar ao formulário.

Page 235: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 235

Figura II.4.6 Janela do formulário em Vista de estrutura, onde se pode definir a estrutura de um formulário novo ou alterar a estrutura de um formulário existente

4.6 FORMULÁRIOS USANDO A VISTA DE ESTRUTURA

4.6.1 Como criar um formulário sem Assistente Se desejarmos construir um formulário à nossa maneira, iniciando essa construção com o formulário em branco, onde é possível inserir qual-quer tipo de controlo, devemos:

1. Na janela BASE DE DADOS, premir o botão ou esco-lher a opção FORMULÁRIOS dentro de OBJECTOS DE BASES DE

DADOS no menu VER.

2. Premir no botão .

3. No quadro NOVO FORMULÁRIO escolher VISTA DE ESTRUTURA.

4. Na caixa TABELA/CONSULTA, seleccionar a tabela ou consulta que contém os dados que serão mostrados no formulário.

5. Premir o botão OK.

Desta forma, aparecerá uma janela de formulário (Figura II.4.6) com uma área de trabalho vazia, com uma caixa referente aos campos da tabela previamente escolhida, bem como uma caixa de ferramentas com os botões que permitirão introduzir e manipular os objectos do for-

Page 236: Access manual de base de datos , excelente xp

236 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.7 Vista de estrutura de um formulário, com a apresentação de um campo com as duas componentes

mulário (caixas de texto, botões de comandos, caixas de combinação, etc) Na BARRA DE FERRAMENTAS temos agora alguns novos botões, entre os

quais o botão LISTA DE CAMPOS, o qual nos permite seleccionar campos a inserir no nosso formulário. Depois de premir este botão é aberta a caixa de listagem de campos (Figura II.4.6).

4.6.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 em que são apresentados os dados do campo (Figura II.4.7).

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.

Podemos clicar de forma a manipular as duas componentes do campo (nome e caixa de dados) ao mesmo tempo, ou podemos manipular cada um desses componentes individualmente. Quando o indicador do rato assume a forma de uma mão aberta, as acções do rato abrangem as

Page 237: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 237

Figura II.4.9 Vista de estrutu-ra de um formu-lário com três secções distin-tas

Figura II.4.8 Selecção de controlos

duas componentes ao mesmo tempo. Quando o indicador do rato assume a forma de uma mão com o dedo a apontar, as acções do rato incidem apenas no elemento seleccionado (Figura II.4.8).

4.7 SECÇÕES DO FORMULÁRIO

O modo VISTA DE ESTRUTURA do objecto 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é. Quando é criado um formulário, o MSAccess apresenta apenas três secções, tal como é apresentado na Figura II.4.9.

Page 238: Access manual de base de datos , excelente xp

238 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Vamos agora descrever cada uma destas secções:

• 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 topo do formulário quando este estiver activo.

• DETALHE - É o corpo do formulário. Mostra principalmente os controlos 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 ili-mitados que aceitem inserção. O seu conteúdo irá aparecer na parte inferior do formulário quando este estiver activo. Este tipo de rodapé não aparece na vista de Folha de Dados.

4.7.1 Alterar o tamanho de uma secção: Para que o tamanho de cada secção fique ao nosso gosto e que fique bem enquadrada no ecrã, o MSAccess permite-nos alterar o tamanho de cada uma das secções.

Como mudar o tamanho de uma secção:

1. Na área de Estrutura, colocar o ponteiro do rato no rodapé ou no lado direito da secção que se deseja ajustar.

2. Mover a cruz formada pelo ponteiro para ajustar o tamanho da secção.

4.7.2 Seleccionar as propriedades de uma secção ou do próprio formulário

As propriedades de um formulário são outro aspecto de alteração de uma secção. Várias características são apresentadas nestas proprieda-des, tais como: cores, nome, visibilidade, etc.

Page 239: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 239

Figura II.4.10 Formulário com diferentes tipos de controlos

Como aceder às propriedades de uma secção:

1. Chamar a folha de propriedades da secção, (premindo duas ve-zes o rato na cabeça ou na secção em si).

2. Seleccionar a categoria de propriedades que se deseja visuali-zar.

3. Alterar, se desejar, as propriedades da secção.

4.8 CONTROLOS NUM FORMULÁRIO

4.8.1 Controlos dependentes, independentes e de cálculo Vamos considerar que todos os objectos inseridos no interior de um formulário serão controlos. Quando se cria um controlo temos que ter em consideração a informação que ele representará. Essa informação, pode ser referente a dados da base de dados, instruções, legendas, valores de cálculo. A Figura II.4.10 mostra-nos os tipos de controlos que foram referidos:

Page 240: Access manual de base de datos , excelente xp

240 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.11 Caixa de ferramentas com os respectivos 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 texto, datas, números, figuras ou gráficos. A caixa de texto é o controlo dependente mais comum.

• Controlo independente - É um controlo que não tem tipos de dados (campo ou expressão). É utilizado para mostrar informa-ção, linhas, 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 operado-res, nomes de controlos, nomes de campos, funções e constan-tes

4.8.2 Criar outros controlos usando a Caixa de Ferramentas Para criar controlos independentes ou de cálculo, usamos a caixa de ferramentas, que tem um papel fundamental para a sua personalização. O MSAccess mostra automaticamente a caixa de ferramentas quando o formulário é aberto na vista de estrutura. A caixa de ferramentas oferece um conjunto de comandos que podemos utilizar para “desenhar” o for-mulário na VISTA DE ESTRUTURA (Figura II.4.11).

Seleccionar objectos

Rótulo

Grupo de opções

Botão de opções

Caixa de combina-

Botão de comando

Moldura de objecto independente

Quebra de página

Subformulário/Subrelatório

Rectângulo

Assistentes de controlo

Caixa de texto

Botões de alternar

Caixa de verificação

Caixa de listagem

Imagem

Moldura de objecto dependen-te Controlo separador

Linha

Mais controlos

Page 241: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 241

4.8.3 Criar controlos que calculem valores Quando desejamos mostrar um valor que seja o resultado de cálculo, usa-se uma expressão como tipo de dados para um controlo. Cada vez que abrimos o formulário, o MSAccess calcula os valores correctos usados nos últimos dados. Como criar uma caixa de texto calculado:

1. Na CAIXA DE FERRAMENTAS premir o botão CAIXA DE TEXTO.

2. Premir no formulário, para criar um valor por defeito da caixa de texto, ou trazê-la e só de seguida‚ ajustar o tamanho desejado.

3. Mover o ponteiro do rato dentro da caixa de texto e premir o seu botão quando o ponteiro passa a ser uma barra.

4. Escrever o sinal de igual seguido da expressão que faz parte desta caixa de texto.

4.8.4 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 mos-tram valores de campos ou expressões e são sempre ilimitados. São também estáticos, ou seja, nunca se alteram sempre que se abre um formulário como os registos ou valores calculados. A etiqueta pode também servir de etiqueta de um campo como a etiqueta de uma caixa de texto. Como criar uma etiqueta:

1. Na CAIXA DE FERRAMENTAS premir o botão RÓTULO.

2. Criar uma etiqueta, que o MSAccess ajusta ao tamanho dese-jado, transportando-o para o local pretendido no formulário.

Como ligar uma etiqueta a um controlo

1. Na CAIXA DE FERRAMENTAS premir o botão RÓTULO.

Page 242: Access manual de base de datos , excelente xp

242 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.12 Janela de configuração das propriedades dos controlos

2. Escolher o formulário onde se deseja criar a etiqueta e inserir o texto desejado para essa etiqueta

3. Premir ENTER para seleccionar a etiqueta.

4. No menu EDITAR, escolher a opção CORTAR.

5. Seleccionar o controlo que se deseja ligar à etiqueta.

6. No menu EDITAR, escolher a opção COLAR

4.8.5 Alterar as propriedades de um controlo já existente Depois de criarmos um formulário podemos alterar as propriedades de alguns controlos. Mudar as propriedades de um controlo existente:

1. Premir duas vezes o rato no controlo (se o controlo tiver uma eti-queta deve-se premir no controlo e não na etiqueta).

2. No topo do quadro das propriedades (Figura II.4.12), pode-se escolher a categoria de propriedades que se desejam ver (Figura II.4.13).

Page 243: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 243

Figura II.4.13 Categorias de propriedades dos controlos

Propriedade Descrição Tudo Mostra todas as propriedades do controlo. Dados Determina as características dos dados que são mostrados

no controlo, como o valor por defeito, o número de casas decimais, o formato dos dados, etc.

Acontecimentos Especifica uma macro ou procedimentos (procedures) que o MSAccess 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.

3. Na folha de propriedades, premir a propriedade que se deseja alterar ou inserir (caso esta esteja em branco). Pode aparecer uma lista de opções para esta propriedade ou não existir nenhum valor por defeito para escolha.

Caso queiramos definir as propriedades de um conjunto de controlos, basta seleccionar esse conjunto e proceder da mesma forma que se procede para a alteração das propriedades de um controlo.

4.8.6 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 alternativas que ficam necessariamente associadas a um campo de uma tabela. As alternativas de um GRUPO DE OPÇÕES podem ser apre-sentadas em BOTÕES DE OPÇÃO, CAIXAS DE VERIFICAÇÃO ou BOTÕES DE

ALTERNAR, mas apenas uma pode ser activada.

Page 244: Access manual de base de datos , excelente xp

244 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.14 Assistente do GRUPO DE OPÇÕES que sugere a entrada dos nomes das opções

Como exemplo, vamos construir um GRUPO DE OPÇÕES que apresente as designações dos Regimes possíveis para os Pacientes e que facilite a escolha por parte do utilizador. Como criar um Grupo de Opções com o assistente

1. Na VISTA DE ESTRUTURA do formulário, eliminar o controlo que representa o Regime, visto que este controlo irá ser substituído pelo GRUPO DE OPÇÕES a criar.

2. Na CAIXA DE FERRAMENTAS, activar a opção ASSISTENTE DE

CONTROLOS.

3. Na CAIXA DE FERRAMENTAS, premir o botão GRUPO DE

OPÇÕES.

4. Desenhar um rectângulo na área desejada do formulário. Auto-maticamente o Assistente do GRUPO DE OPÇÕES irá ser des-poletado.

5. Na primeira caixa de diálogo (Figura II.4.14) digitar os nomes

que pretendemos para cada opção. Considerando o nosso exemplo, digitamos as três possibilidades para o Regime do Paciente.

Page 245: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 245

Figura II.4.15 Assistente de GRUPO DE OPÇÕES que sugere a escolha da opção predefinida

Figura II.4.16 Assistente de GRUPO DE OPÇÕES que sugere a introdução de valores para as opções

6. Na caixa de diálogo seguinte (Figura II.4.15), indicar a opção

que deve estar seleccionada por predefinição. No nosso exem-plo, não pretendemos que isso aconteça, pelo que selecciona-mos a segunda opção.

7. Na caixa de diálogo (Figura II.4.16), indicar quais os valores que

ficarão armazenados na tabela, consoante a opção seleccionada pelo utilizador.

Page 246: Access manual de base de datos , excelente xp

246 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.17 Assistente de GRUPO DE OPÇÕES que sugere a escolha do campo que irá armazenar os dados

Figura 4.18 Assistente de GRUPO DE OPÇÕES que sugere a escolha do estilo das opções

8. Em seguida, na caixa de diálogo (Figura II.4.17), indicar o nome

do campo da tabela ou consulta que irá armazenar o valor seleccionado. O campo que deverá armazenar a opção esco-lhida no nosso exemplo é o campo Regime.

9. Na caixa de diálogo da Figura II.4.18, escolher o estilo que irá

estar associado ao GRUPO DE OPÇÕES, tanto ao nível do formato dos botões como ao contorno exterior.

Page 247: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 247

Figura II.4.19 Exemplo de GRUPO DE OPÇÕES na vista do form ulário

10. Finalmente, na última caixa de diálogo, indicar o nome que irá caracterizar o GRUPO DE OPÇÕES e premir o botão TERMINAR.

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 escolhidas (Figura II.4.19).

Como criar um Grupo de Opções sem o assistente

1. Na VISTA DE ESTRUTURA do formulário, eliminar o controlo que representa o Regime, visto que este controlo irá ser substituído pelo GRUPO DE OPÇÕES a criar.

2. Na CAIXA DE FERRAMENTAS, desactivar a opção ASSISTENTE

DE CONTROLOS.

3. Na CAIXA DE FERRAMENTAS, premir o botão GRUPO DE

OPÇÕES.

4. Desenhar um rectângulo na área desejada do formulário.

5. Escolher entre as opções: BOTÃO DE ALTERNAR, CAIXA

DE VERIFICAÇÃO ou BOTÃO DE OPÇÃO na CAIXA DE FERRA-MENTAS.

6. Dentro da estrutura do GRUPO DE OPÇÕES, premir o rato onde deseja que o BOTÃO DE OPÇÃO, a CAIXA DE VERIFICAÇÃO, ou o BOTÃO DE ALTERNAR, se situe e posteriormente introduza a

Page 248: Access manual de base de datos , excelente xp

248 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.20 Vista de estrutura do GRUPO DE OPÇÕES

Figura II.4.21 Caixa de propriedades do GRUPO DE OPÇÕES

designação do controlo, tal como é apresentado na Figura II.4.20.

7. Repetir os passos 5 e 6 para cada GRUPO DE OPÇÃO. O MSAc-cess coloca a propriedade Valor de opção da primeira opção com o valor um, a segunda com o valor dois, a terceira com o valor três, e assim sucessivamente.

8. Activar a CAIXA DE PROPRIEDADES do GRUPO DE OPÇÕES e na pro-priedade Origem do controlo escolher o campo Regime (Figura II.4.21)

4.8.7 Caixa de Listagem e Caixa de Combinação

As CAIXAS DE LISTAGEM e 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 pro-curas rápidas de informação.

Page 249: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 249

A escolha por um dos controlos depende do tipo de informação que desejamos mostrar nas linhas da lista. Com a ajuda do assistente, podemos escolher uma de três opções para definir a informação a apre-sentar nas linhas das caixas, nomeadamente:

• 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 campos de uma tabela, em que o valor seleccionado irá fazer com que os outros registos do formulário sejam automatica-mente actualizados.

Como exemplo, vamos construir uma CAIXA DE COMBINAÇÃO ou de LIS-

TAGEM que apresente as designações dos aparelhos disponíveis e que facilite a escolha por parte do utilizador.

Como criar uma Caixa de Listagem ou Caixa de combinação usan-do o assistente

1. Na VISTA DE ESTRUTURA do formulário, eliminar o controlo que representa o aparelho, visto que este controlo irá ser substituído pela CAIXA DE COMBINAÇÃO a criar.

2. Na CAIXA DE FERRAMENTAS , activar a opção ASSISTENTE DE

CONTROLOS.

3. Na CAIXA DE FERRAMENTAS, premir o botão CAIXA DE LIS-

TAGEM ou CAIXA DE COMBINAÇÃO.

4. Desenhar um rectângulo na área desejada do formulário. Auto-maticamente o Assistente da CAIXA DE COMBINAÇÃO ou de LISTA-

GEM irá ser despoletado

Page 250: Access manual de base de datos , excelente xp

250 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Fig II.4.22 Assistente de CAIXA DE COMBINAÇÃO que sugere a entrada da origem de dados

Figura II.4.23 Assistente de CAIXA DE COMBINAÇÃO que sugere a escolha da tabela ou consulta

5. Na primeira caixa de diálogo (Figura II.4.22) indicar a origem dos

dados a apresentar na CAIXA DE COMBINAÇÃO ou de LISTAGEM. Considerando o nosso exemplo, escolher a primeira opção.

6. Na caixa de diálogo seguinte (Figura II.4.23), indicar o nome da

tabela ou consulta onde os valores a apresentar na CAIXA DE

COMBINAÇÃO estão armazenados.

Page 251: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 251

Fig II.4.24 Assistente de CAIXA DE COMBINAÇÃO que sugere a escolha do campo da tabela ou consulta

Figura II.4.25 Assistente de CAIXA DE COMBINAÇÃO que sugere a correcção da largura da coluna

7. Na caixa de diálogo seguinte (Figura II.4.24), indicar o nome do

campo da tabela ou consulta onde os valores a apresentar na CAIXA DE COMBINAÇÃO estão armazenados.

8. Em seguida, confirmar os dados a apresentar na Caixa de Com-

binação e ajustar a largura da coluna.

Page 252: Access manual de base de datos , excelente xp

252 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.26 Assistente de CAIXA DE COMBINAÇÃO que sugere a escolha do campo que irá armazenar os dados

Figura II.4.27 Exemplo de CAIXA DE COMBINAÇÃO e CAIXA DE

LISTAGEM na VISTA DO FORMULÁRIO

9. Na caixa de diálogo seguinte (Figura II.4.26), indicar o nome do campo da tabela ou consulta que irá armazenar o valor seleccio-nado.

10. Finalmente, na última caixa de diálogo, indicar o nome que irá caracterizar a CAIXA DE COMBINAÇÃO e premir o botão TERMINAR.

Depois de concluir o processo de criação da CAIXA DE COMBINAÇÃO ou de LISTAGEM, podemos usufruir de um formulário que nos permitirá loca-lizar de uma forma mais fácil e rápida a descrição dos aparelhos, tal como demonstra a Figura II.4.27.

Page 253: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 253

Figura II.4.28 Assistente de SUBFORMULÁRIOS que sugere a entrada da origem de dados

4.8.8 Subformulários Um SUBFORMULÁRIO é uma forma de incluir informação de mais do que uma tabela num formulário, ou seja um SUBFORMULÁRIO é um controlo que permite a visualização da informação contida em várias tabelas. Um SUBFORMULÁRIO é um formulário dentro de outro formulário. No MSAccess o primeiro formulário é chamado formulário principal. Entre estes dois formulários é indispensável que haja uma ligação, normal-mente uma relação do tipo um-para-muitos.

Como exemplo, vamos construir um SUBFORMULÁRIO que apresente a informação dos tratamentos Gerais efectuados por cada paciente. O SUBFORMULÁRIO a criar, terá de estar incluído no formulário principal da ficha do Paciente. Neste exemplo, iremos utilizar o cod. Paciente como campo de ligação entre os pacientes e os tratamentos Gerais por eles efectuados.

Como criar um Subformulário usando o assistente

1. Na Caixa de Ferramentas, activar a opção Assistente de Controlos.

2. Na Caixa de Ferramentas, premir o botão Subformulário.

Page 254: Access manual de base de datos , excelente xp

254 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.29 Assistente de SUBFORMULARIO, que sugere a selecção das tabelas e respec-tivos campos a utilizar no SUB-

FORMULÁRIO.

3. Desenhar um rectângulo na área desejada do formulário (nor-malmente disponibiliza-se uma área considerável na zona infe-rior do formulário principal). Automaticamente o Assistente do subformulário irá ser despoletado.

4. Na primeira Caixa de diálogo (Figura II.4.28) deverá indicar que

vai utilizar uma tabela e não uma consulta para a criação do SUBFORMULÁRIO.

5. Em seguida, indicar qual a tabela e quais os campos a incluir no subformulário. Para o nosso exemplo, devemos seleccionar os campos Cod. Tratamento Geral e Data tratamento (T-TratamentosGeraisEfectuados) e Descrição Tratamento Geral e Custo Tratamento Geral (T-TratamentosGerais) (Figura II.4.29).

6. Na caixa de diálogo seguinte (Figura II.4.30), o MSAccess irá questionar qual o campo de ligação entre o formulário e o SUB-

Page 255: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 255

Figura II.4.30 Assistente de SUBFORMULA-

RIO, que suge-re a indicação da ligação a efectuar

Figura II.4.31 Exemplo de um SUBFOR-

MULÁRIO na VISTA DE

FORMULÁRIO

SUBFORMULÁRIO. No nosso exemplo, devemos seleccionar a ligação reconhecida pelo MSAccess.

5. Finalmente, na última caixa de diálogo, indicar o nome que irá identificar o SUBFORMULÁRIO e premir o botão TERMINAR.

Depois de concluir o processo de criação do SUBFORMULÁRIO, podemos usufruir de um formulário que nos permitirá localizar de uma forma mais fácil e rápida a descrição dos aparelhos, tal como demonstra a Figura II.4.31.

Page 256: Access manual de base de datos , excelente xp

256 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.32 Inserção de CAIXA DE TEXTO na área de detalhe do FORMULÁRIO

Figura 4.II.33 Alteração das propriedades da CAIXA DE TEXTO no FORMULÁRIO

4.8.9 Cálculos num formulário Para criar um campo calculado no FORMULÁRIO, vamos utilizar como exemplo um campo que calcula os dias de validade do cartão do Paciente, ou seja, calcula o nº de dias entre a data de validade e o dia de hoje. Como criar um cálculo no FORMULÁRIO:

1. Aceder em modo VISTA DE ESTRUTURA ao FORMULÁRIO Pacientes.

2. Na área de detalhe do FORMULÁRIO, insira o controlo CAIXA

DE TEXTO que se encontra na CAIXA DE FERRAMENTAS (Figura II.4.32).

5. Activar a CAIXA DE PROPRIEDADES. Alterar as propriedades Nome, Origem de controlo, formatar e casas deci-mais de acordo com a Figura II.4.33.

6. Ainda na CAIXA DE PROPRIEDADES, seleccione o ROTULO da CAIXA

DE TEXTO e altere a sua propriedade legenda para “Dias de Validade”.

Page 257: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 257

Figura II.4.34 Exemplo de um cálculo no FORMULÁRIO

7. Grave as alterações no FORMULÁRIO e active-o em modo VISTA

DE ESTRUTURA. Será apresentado o conjunto de campos refe-rentes à informação de cada paciente, bem como o novo campo calculado “Dias de validade”, tal como é apresentado na Figura II.4.34.

4.8.10 Cálculos num subformulário Para criar um campo calculado no SUBFORMULÁRIO, vamos utilizar como exemplo um campo que calcula o total dos custos que cada Paciente teve nos tratamentos efectuados na clínica. Como criar um cálculo no SUBFORMULÁRIO:

1. Aceder em modo VISTA DE ESTRUTURA ao FORMULÁRIO Pacientes, e posteriormente seleccione o subformulário “Tratamentos Gerais”.

2. Na sua área interior, abra a zona rodapé do FORMULÁRIO, insira

o controlo CAIXA DE TEXTO que se encontra na CAIXA DE FER-

RAMENTAS (Figura II.4.35).

Page 258: Access manual de base de datos , excelente xp

258 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.36 Alteração das propriedades da CAIXA DE TEXTO no FORMULÁRIO

Figura II.4.35 Inser-ção de CAIXA

DE TEXTO na área de rodapé do FORMULÁRIO

3. Activar a CAIXA DE PROPRIEDADES. Alterar as propriedades Nome, Origem de controlo e formatar de acordo com a figura II.4.36.

4. Ainda na CAIXA DE PROPRIEDADES, seleccione o ROTULO da CAIXA

DE TEXTO e altere a sua propriedade legenda para “Total de custos”.

5. Seleccionar o canto superior esquerdo do SUBFORMULÁRIO e car-regar no botão direito do rato. Activar CAIXA DE PROPRIEDADES DO

SUBFORMULÁRIO. Alterar a propriedade Vista predefinida de acordo com a Figura II.4.37.

Page 259: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 259

Figura II.4.37 Alteração das propriedades do SUBFORMULÁRIO

6. Grave as alterações no FORMULÁRIO e active-o em modo VISTA

DE ESTRUTURA. Confirme se o custo total reflecte a soma dos diferentes custos dos tratamentos Gerais efectuados por cada Paciente

4.8.11 Botões de comandos Nós usamos um botão de comando num formulário para iniciar uma acção. O BOTÃO DE COMANDO com Assistente é mais fácil a nível gráfico. Podemos criar assim um BOTÃO DE COMANDO para aumentar a rapidez de execução de tarefas. As acções que um BOTÃO DE COMANDO pode desempenhar são muito diversificadas. Se optarmos pelo assistente para a criação do BOTÃO DE

COMANDO vamos deparar com um conjunto de categorias cada uma das quais apresentando um conjunto de acções. Contudo, podemos alargar o leque de escolha para associarmos uma acção a um BOTÃO DE

COMANDO. Essa possibilidade é apresentada nas propriedades deste controlo, recorrendo à definição de uma macro. Como exemplo, vamos criar no formulário Ficha do Paciente um botão que possibilite através de um clique fechar este formulário.

Page 260: Access manual de base de datos , excelente xp

260 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.38 Assistente de BOTÃO DE COMANDO, que sugere a selecção do tipo de acção que deve ter o botão

Como criar um botão de comando com Assistente:

1. Na CAIXA DE FERRAMENTAS , activar a opção ASSISTENTE DE

CONTROLOS.

2. Na CAIXA DE FERRAMENTAS, premir o botão BOTÃO DE

COMANDO.

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á ser despoletado.

4. Na caixa de diálogo (Figura II.4.38), é possível escolher a CATE-

GORIA e a respectiva ACÇÃO que o botão irá desempenhar. No nosso exemplo, devemos seleccionar a CATEGORIA Operações de Formulários, e posteriormente, seleccionar a ACÇÃO Fechar Formulário.

5. Na caixa de diálogo seguinte (Figura II.4.39), o MSAccess suge-re a escolha de uma imagem ou texto que caracterize o botão. No nosso exemplo, vamos seleccionar o texto “Fechar formulá-rio”.

Page 261: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 261

Figura II.4.39 Assistente de BOTÃO DE

COMANDO, que sugere a escolha do aspecto que caracterize o botão

6. Finalmente, na última caixa de diálogo, indicar o nome que irá identificar o BOTÃO DE COMANDO e premir o botão CONCLUIR.

Como criar um botão de comando sem Assistente:

Quanto à criação de um BOTÃO DE COMANDO sem Assistente, ao contrá-rio do botão de comando com Assistente, podemos através da PRO-

PRIEDADE Ao Fazer Clique definir a tarefa que deve ser executada por este botão.

1. Na CAIXA DE FERRAMENTAS, desactivar a opção ASSISTENTE

DE CONTROLOS.

2. Na CAIXA DE FERRAMENTAS, premir o botão BOTÃO DE

COMANDO.

3. Premir o rato no local onde se deseja colocar o canto superior esquerdo do botão de comando.

4. Premir o rato duas vezes no BOTÃO DE COMANDO para mostrar as suas propriedades.

5. Seleccionar a propriedade Ao Fazer Clique.

6. Premir o botão de construção para criar uma nova macro ou pro-cedimento.

Page 262: Access manual de base de datos , excelente xp

262 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.40 Janela para a definição de macros

7. Criar uma nova macro escolhendo a opção CONSTRUTOR DE

MACROS (Figura II.4.40), ou escolher a opção CONSTRUTOR DE

CÓDIGO para criar uma novo procedimento.

Para além da propriedade Ao Fazer Clique temos outras proprieda-des que podem definir as características e a funcionalidade dos GRUPO

DE OPÇÕES, que são de fácil compreensão.

4.8.12 Quebras de página Se acharmos conveniente fazer uma quebra de página num formulário, para que a informação que esteja abaixo da quebra passe para uma página seguinte, é bastante fácil realizar esta tarefa.

Como introduzir uma quebra de página num formulário:

1. Na CAIXA DE FERRAMENTAS, seleccionar a QUEBRA DE PÁGI-

NA.

2. Premir o rato no local do formulário onde deseja quebra de pági-na. O MSAccess marca uma pequena linha no lado esquerdo do formulário.

4.8.13 Moldura de objecto dependente e independente Um objecto é uma unidade de informação criada e manipulada numa aplicação do Windows. Um Objecto de Ligação Embutida (Object Lin-king Embedding - OLE) pode ser toda a informação de um ficheiro ou

Page 263: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 263

parte dele. O OLE não só dá acesso a objectos criados noutras aplica-ções como edita esses objectos directamente para um formulário ou relatório. No que diz respeito à manipulação de objectos, temos de considerar os conceitos embutido e ligado. Quando embutimos um objecto num for-mulário ou num relatório, este fica a fazer parte da base de dados (.MDB). 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 for-mulário ou para um relatório, este mostra um controlo chamado objecto tipo figura. 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 lhes serve de base. O objecto permanece constante sempre que percorremos os registos do formulário ou do relató-rio.

• OBJECTOS DEPENDENTES Usados quando queremos um objecto OLE num formulário ou num relatório, e que seja armazenado num campo da tabela que lhes serve de base. É apresentado um objecto diferente à medi-da que percorremos os registos do formulário ou do relatório

Como ligar ou embutir um objecto novo numa estrutura de objecto inde-pendente:

1. Abrir um formulário no modo VISTA DE ESTRUTURA.

2. Escolher a ferramenta MOLDURA DE OBJECTO INDEPENDENTE na CAIXA DE FERRAMENTAS .

3. No formulário, premir o rato no local onde irá colocar o canto superior esquerdo da estrutura de objecto, (este posicionamento pode ser alterado).

Page 264: Access manual de base de datos , excelente xp

264 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.41 Jane-la para a definição de um novo objecto

4. Seleccionar o botão Criar novo. Na lista de tipos de objectos, seleccionar o tipo de objecto que deseja implantar (Figura II.4.41).

5. Se desejar mostrar o objecto no formulário como ícone, em vez de objecto propriamente dito, deve-se seleccionar a opção Mos-trar como ícone.

6. Premir OK.

7. Criar o objecto (no nosso exemplo, vamos criar uma folha de cál-culo).

8. Para voltar ao MSAccess, escolhe-se a opção SAIR, no menu FICHEIRO da aplicação onde o objecto está situado. Se aparecer a mensagem que pergunte se deseja fazer a transformação (update) do objecto, a resposta deve ser SIM.

9. Para ser possível abrir o documento através de um duplo clique teremos de alterar a sua PROPRIEDADE ACTIVADO para Sim.

Como ligar ou embutir um objecto existente numa estrutura de objecto independente:

1. Abrir um formulário no modo VISTA DE ESTRUTURA.

2. Escolher a ferramenta MOLDURA DE OBJECTO INDEPENDENTE na CAIXA DE FERRAMENTAS .

Page 265: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 265

Figura II.4.42 Janela para a definição de um novo objecto

3. No formulário ou relatório, premir o rato no local onde irá colocar o canto superior esquerdo da estrutura do objecto (este posicio-namento pode ser alterado).

4. Na janela da Figura II.4.41, seleccionar o botão Criar a par-tir do ficheiro.

5. Na janela da Figura II.4.42, inserir o nome e o caminho (path do campo que contém o objecto que se deseja embutir ou ligar) em FICHEIRO. Ou pode-se premir o botão PROCURAR para seleccio-nar o campo desejado.

6. Se desejar ligar um objecto em vez de o embutir, seleccione a opção Ligar.

7. Se desejar mostrar o objecto no formulário como ícone em vez de objecto propriamente dito, deve-se 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

4.9 EFEITOS ESPECIAIS DE CONSTRUÇÃO

Existem vários efeitos gráficos que podem ajudar a melhorar o aspecto de um formulário: rectângulo, linha, imagem, criação de um texto com as suas características, cores e linhas limítrofes. Vamos agora explicar como é que é possível criar alguns destes efeitos gráficos.

Page 266: Access manual de base de datos , excelente xp

266 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

4.9.1 Como obter uma grande selecção de cores

1. Seleccionar os controlos ou as suas secções, nos quais se dese-ja atribuir uma cor.

2. Abrir a Janela de PROPRIEDADES.

3. Seleccionar a propriedade que reflecte a cor e alterar para cor desejada.

4. Premir o botão Compilar depois de ter escolhido a proprie-dade.

5. Escolher a cor desejada.

6. Premir o botão OK, quando a cor estive seleccionada.

4.9.2 Formatação dos controlos do Formulário No MSAccess é possível utilizar um conjunto de formatações predefini-das que permitem melhorar o aspecto do nosso formulário. Essa melho-ria passa pela aplicação de uma determinada cor de fundo, tipos de letra, limites, etc. Para activar esta opção de formatação automática, devemos:

1. Abrir um formulário no modo VISTA DE ESTRUTURA.

2. Escolher a ferramenta FORMATAÇÃO AUTOMÁTIC A na BARRA

DE FERRAMENTAS.

3. Fazer as opções de formatação (figura II.4.43), considerando que esta pode ser feita em áreas específicas do formulário ou na sua globalidade.

Page 267: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 267

Figura II.4.43 Janela formatação automática

4.9.3 Caixas de informação para os controlos

Com o objectivo de proporcionar ao utilizador um complemento de informação sobre cada um dos controlos, nomeadamente dos campos das respectivas tabelas, o MSAccess disponibiliza os screen tips que surgem no ecrã quando o apontador do rato se desloca sobre determi-nado controlo. Vamos utilizar o campo “Data de validade”, para exemplificar este pro-cedimento. Assim deve:

1. Em modo VISTA DE ESTRUTURA, seleccionar a caixa de texto “Data de validade”.

2. Activar a caixa de propriedades e alterar a sua propriedade Texto da descr. do controlo, digitando o texto “Data de validade do cartão da caixa”, tal como é apresentado na figura II.4.44

Page 268: Access manual de base de datos , excelente xp

268 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.44 Alteração da propriedade Texto da descr. do controlo

3. Ao activar o formulário, posicionar o rato sobre o controlo.

4.11 IMPRESSÃO E GRAVAÇÃO DE UM FORMULÁRIO

Para imprimir um formulário devemos prioritariamente aceder à vista PRÉ-VISUALIZAR, pois esta vista dá-nos uma perspectiva real da impres-são. Para acedermos a essa vista temos que ir ao menu FICHEIRO,

escolher a opção PRÉ-VISUALIZAR ou premir o botão na BARRA DE

FERRAMENTAS. Para a execução da impressão, devemos escolher a opção IMPRIMIR, no menu FICHEIRO. Se o formulário tiver mais do que uma página, este é impresso página por página. A impressão pode ser feita sobre a FOLHA

DE DADOS, sobre A VISTA DE ESTRUTURA ou sobre a própria VISTA DE

FORMULÁRIO. No que diz respeito à gravação, esta pode ser feita a qualquer momento da construção do formulário. Para gravar, devemos:

1. No menu FICHEIRO, escolher a opção GUARDAR.

2. Se o formulário não tem nome, devemos inseri-lo na caixa NOME

DO FORMULÁRIO, e escolher OK.

Page 269: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 269

4.12 EXERCÍCIO GUIADO

Para começar os procedimentos associados à criação de formulários na nossa base de dados, vamos criar alguns formulários simples, que serão feitos, cada qual, a partir de uma única tabela. Na nossa base de dados Dr.Dentinho, 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, vamos criar vários formulários com a mesma estru-tura e com o mesmo aspecto gráfico. Vamos exemplificar este procedi-mento recorrendo ao assistente de formulários para a Tabela T-Pacientes.

Criação de formulários com o assistente Para criar o formulário simples que apresente a informação dos Pacien-tes, teremos de seleccionar na janela BASE DE DADOS, o botão

dentro de OBJECTOS DE BASES DE DADOS no menu VER. Em seguida, fazemos duplo clique na opção

. Depois de arrancar com o assistente, seleccionar a tabela “T-Pacientes” que contém os dados que serão mostrados no formulário e posterior-

mente inserir todos os campos no formulário clicando em (Figura II.4.45).

Page 270: Access manual de base de datos , excelente xp

270 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.45 Primeiro quadro do assistente, onde escolhemos os campos a inserir no formulário.

Figura II.4.46 Vista de formulário para as tabelas “T-Pacientes” em colunas e “T-TratamentoGeral” em Tabela

No quadro seguinte do assistente de formulários, escolher o esquema de apresentação dos dados em colunas. Depois, escolher o estilo de apresentação gráfica “Padrão”, que configura os dados e o fundo do formulário. Finalmente, introduzir o nome “Pacientes” a dar ao formulá-rio. Para as restantes tabelas primárias da nossa base de dados, vamos utilizar exactamente os mesmos procedimentos adoptados na tabela T-Pacientes exceptuando a escolha do esquema gráfico, que para estas deverá ser em Tabela, pois são compostas por um número muito redu-zido de campos (Figura II.4.46).

Page 271: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 271

Figura II.4.48 Área do Cabe-çalho do For-mulário.

Figura II.4.47 Aumentar a área de deta-lhe

Alteração de formulários através da vista de estrutura

Para personalizar os formulários criados através do assistente, temos a possibilidade de utilizar um conjunto de procedimentos. Por exemplo, podemos aumentar a área de detalhe, para alterar a disposição dos campos da tabela (Figura II.4.47)

Podemos também seleccionar, mover, redimensionar, alinhar e formatar os controlos que fazem parte do formulário. Inserir cabeçalho A inserção do cabeçalho nos formulários será feita na área CABEÇALHO

DO FORMULÁRIO. Como o processo de criação de um formulário simples apresenta esta área fechada, a primeira tarefa será utilizar o rato para criar algum espaço de forma a inserir um título (Figura II.4.48).

Depois de disponibilizar espaço na Área do Cabeçalho do Formulário,

vamos seleccionar o controlo RÓTULO da BARRA DE FERRA-MENTAS e accioná-lo na referida área. Posteriormente, vamos digitar o título que identifique a informação do nosso formulário (Figura II.4.49). Na perspectiva de uniformizar o aspecto dos formulários da nossa base de dados, devemos repetir este procedimento para todos os formulários que criarmos.

Page 272: Access manual de base de datos , excelente xp

272 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.49 Inserção dos rótu-los com os respec-tivos títulos na área do Cabeçalho do Formulário.

Figura II.4.50 Quadros do assistente de formulários em que se seleccionam as tabelas e respectivos campos.

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 resultam do desdobramento entre tabelas primárias com relações de muitos-para-muitos. Assim, pretendemos criar um formulário que nos apresente dados rela-tivos aos Tratamentos Específicos efectuados pelos Pacientes. As tabe-las que pretendemos incluir são T-TratamentosEspecíficos, T-Pacientes, T-Dentes, T-TratamentosEspecíficosEfectuados. Para incluirmos várias tabelas num formulário, podemos recorrer ao Assistente de Formulários. Depois de clicar em

, começamos por seleccionar a tabela T-Trata-mentosEspecíficos e todos os seus campos. Em seguida, na caixa “TABELAS/CONSULTAS”, seleccionamos individualmente as outras tabelas e os campos que pretendemos incluir no formulário (Figura II.4.50).

Page 273: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 273

Figura II.4.51 Definição da estrutura de dados do formulário.

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.4.51 que coloca no formulário principal a tabela T-TratamentosEspecíficos e no subformulário os restantes campos.

Após a escolha do esquema em “Tabela” e do estilo em “Padrão”, gra-vamos o formulário e o subformulário resultantes deste procedimento. Sempre que desejarmos introduzir um novo Tratamento Específico, só temos de seleccionar o seu código na parte referente ao formulário prin-cipal, e definir a data, o código do Paciente e o código do dente. Inserir caixas de combinação Para facilitar a identificação dos Pacientes e dos Dentes no processo de inserção de um novo Tratamento Específico, vamos introduzir caixas de combinação, prescindindo assim dos respectivos códigos dos Pacientes e dos Dentes. O procedimento associado à criação de caixas de combinação já foi descrito neste capítulo em 4.8.7. No final deverá ter um formulário com o aspecto apresentado na Figura II.4.52.

Page 274: Access manual de base de datos , excelente xp

274 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.52 Formulário com a inclusão de caixas de combinação

Figura II.4.53 Inserção de um campo calculado no subformulário.

Inserir cálculos no subformulá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 no rodapé do subformulário que apresente o total de Tratamentos efectua-dos, e vamos inserir um novo campo no formulário que apresente O valor Total recebido por cada tipo de Tratamento específico. Depois de aceder em modo VISTA DE ESTRUTURA ao FORMULÁRIO T-TratamentosEspecíficos, posicione-se no subformulário. Na sua área

interior, abra a zona rodapé do subformulário, insira o controlo CAI-

XA DE TEXTO que se encontra na CAIXA DE FERRAMENTAS. Em seguida, aceda a CAIXA DE PROPRIEDADES. Alterar as propriedades Nome, Ori-gem de controlo de acordo com a Figura II.4.53.

Na área de detalhe do FORMULÁRIO, insira o controlo CAIXA DE TEX-

TO que se encontra na CAIXA DE FERRAMENTAS. Aceder às propriedades

Page 275: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 275

Figura II.4.55 Aspecto final do Formulário Tratamentos Específicos

Figura II.4.54 Configurar a propriedade Origem de controlo através do CONSTRUTOR DE EXPRESSÕES

des do controlo e em seguida seleccionar a propriedade Origem de con-trolo. Clicar em para aceder ao CONSTRUTOR DE EXPRESSÕES. Introduzir a respectiva expressão tal como é apresentada na Figura II.4.54.

Na Figura II.4.55, apresentamos o aspecto final do formulário Trata-mentos Específicos.

Page 276: Access manual de base de datos , excelente xp

276 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.56 Caixa para a escolha do tipo de objecto e área de detalhe do formulário com a imagem e título inseridos

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 formu-lário, criado em modo VISTA DE ESTRUTURA, onde incluiremos alguns controlos do tipo RÓTULO (texto para os títulos) uma IMAGEM e BOTÕES

DE COMANDO (para activar macros). Vamos começar por criar um novo formulário em modo VISTA DE ESTRU-

TURA. Antes de inserir os novos controlos vamos maximizar a área de detalhe do formulário. Em seguida vamos inserir na parte superior da área de detalhe do formulário um objecto (imagem) recorrendo ao botão

MOLDURA DO OBJECTO INDEPENDENTE. Depois de accionar este botão vamos deparar com uma janela (Figura II.4.41) onde podemos escolher o tipo de objecto Clip Gallery e posteriormente a imagem que aparece na Figura II.4.56. Na mesma figura encontramos um título na área de detalhe do formulário que deverá ser introduzido através do

botão RÓTULO.

Page 277: Access manual de base de datos , excelente xp

II.4. FORMULÁRIOS EM MSACCESS 277

Figura II.4.57 Controlo separador com quatro páginas para o agrupa-mento de opções

Figura II.4.58 Aspec-to final do Formulário Menu Principal

Depois de configurar a parte superior do nosso formulário vamos criar um conjunto de procedimentos eu permitam um acesso fácil às funcio-

nalidades da nossa aplicação. Assim, vamos utilizar o CONTROLO

SEPARADOR para agrupar as diferentes opções da nossa base de dados. Seleccionando este controlo, podemos desenhar um rectângulo na área do formulário. O CONTROLO SEPARADOR deverá apresentar quatro pági-nas diferentes com os formatos e as legendas que são apresentados na Figura II.4.57.

Depois de concluir o processo de configuração do CONTROLO SEPAR A-

DOR vamos inserir um conjunto de botões. Para inserir um botão no nosso formulário, que permita abrir um outro formulário ou relatório, procedemos do modo que foi descrito neste capítulo em 4.8.11. Se repetirmos estas operações para criar outros BOTÕES DE COMANDO, então podemos ter, no final, um formulário semelhante ao que é mos-trado na Figura II.4.58.

Page 278: Access manual de base de datos , excelente xp

278 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.4.59 Janela “Arranque” onde é possível definir o “Menu Principal” como formulário de arranque da base de dados

Considerando este formulário como o Menu Principal de toda a aplica-ção, que possibilitará o acesso a todos os dados da nossa base de dados, será conveniente que este apareça logo de início quando abri-mos a base de dados e a partir do qual centralizamos todas as opera-ções.

Para que esta situação esteja salvaguardada, clicar no menu FER-

RAMENTAS e posteriormente seleccionar a opção . Na janela que aparece no ecrã, introduzir o nome do formulário “Menu Prin-cipal” na caixa MOSTRAR FORMULÁRIO/PÁGINA (Figura II.4.59).

Page 279: Access manual de base de datos , excelente xp

5 Relatórios

5.1 DEFINIÇÃO

Um relatório é um objecto da base de dados MSAccess que permite organizar e apresentar informação contida numa base de dados. A apresentação dos dados num relatório é normalmente feita sob a for-ma de um documento impresso. Os relatórios constituem uma forma de mostrar os dados de tabelas ou consultas com uma melhor apresentação, e permitem ao utilizador utili-zar uma variedade de artifícios gráficos e outros elementos como cores, texto, figuras, etc.

5.2 APLICAÇÃO DE RELATÓRIOS

Tal como o formulário, também o relatório funciona como uma folha de papel onde podemos construir uma estrutura de informação. As ferra-mentas de construção disponíveis ajudam-nos a criar relatórios de fácil utilização. Algumas das características principais dos relatórios são:

• Apresenta os dados de uma forma atractiva com fontes espe-ciais, linhas, figuras e outros efeitos gráficos como cores ou sombras.

• Assemelha-se a uma folha de papel com os respectivos cabeça-lhos e rodapés.

Page 280: Access manual de base de datos , excelente xp

280 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• Organiza os dados em grupos.

• Calcula totais simples, grupos de totais e percentagens de totais.

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

5.3 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 subrelatórios, apesar desta segunda situação poder ter indirecta-mente tabelas ou consultas. Tal como os outros objectos podemos criar um relatório com ou sem ASSISTENTE DE RELATÓRIOS. Claro que com o ASSISTENTE DE RELA-TÓRIOS, a construção do relatório é muito mais rápida, tendo o inconve-niente de estar restringida a certas estruturas e não possibilitar uma grande liberdade na sua criação. No MSAccess, os relatórios podem ser feitos de diferentes maneiras e assumir formas muito diversificadas. As diferentes formas de criação de um formulário são:

• Relatórios automáticos

• Assistentes

• Vista de estrutura

Page 281: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 281

Figura II.5.1 Ecrã “Novo relatório”, onde são apresentadas diversas formas de criação de um relatório

Embora a primeira opção seja bastante prática e fácil de utilizar, a ver-dade é que nem sempre é a mais indicada porque apresenta insuficiên-cias e limitações na personalização de relatórios. O processo de criação mais utilizado é o de criar relatórios com base num assistente. Este processo permite desde uma simples listagem em colunas, até à criação de relatórios que representam informações oriun-das de várias tabelas, com múltiplos agrupamentos e ordenações. No entanto, sempre que este processo não cumpra com os objectivos pro-postos é inevitável o recurso à utilização da VISTA DE ESTRUTURA. Para criar um novo Relatório, deve:

1. Na janela BASE DE DADOS, premir o botão ou esco-

lher a opção RELATÓRIOS dentro de OBJECTOS DE BASES DE

DADOS no menu VER.

2. Premir no botão (Figura II.5.1).

Page 282: Access manual de base de datos , excelente xp

282 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.5.2 Aspecto de um relatório tipo “Colunas” criado automaticamente

5.4 RELATÓRIO COM RELATÓRIOS AUTOMÁTICOS

O RELATÓRIO AUTOMÁTICO é a forma mais simples de criação de um Relatório. Normalmente, é utilizado quando necessitamos rapidamente de obter 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 personalização. Existem dois tipos de Relatórios automáticos disponíveis, nomeada-mente Colunas e Tabelas.

5.4.1 Relatório Automático: Colunas Mostra valores de registos numa coluna, e cada valor do campo numa linha separada (Figura II.5.2).

Page 283: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 283

Figura II.5.3 Aspecto de um relatório tipo “Tabelas” criado automaticamente

5.4.2 Relatório Automático: Tabelas É o formato mais típico de Relatório. O Relatório apresenta um formato semelhante a uma tabela. Mostra os campos em colunas e os valores em registos, um em cada linha. Pode mostrar vários registos em cada página (Figura II.5.3).

5.5 RELATÓRIOS USANDO OS ASSISTENTES

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 tabelas ou consultas e criação de um layout personalizado. Esta modalidade de criação de relatórios, apresenta um número elevado de opções, facilitando assim uma personalização bastante detalhada.

Através do botão , poderá aceder aos seguintes três tipos de assistentes de Relatórios:

• Relatórios – cria um relatório tradicional.

Page 284: Access manual de base de datos , excelente xp

284 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.5.4 Primeiro quadro do assistente, onde se podem escolher os campos a inserir no relatório.

• Gráficos – cria um relatório com um gráfico que representa os dados de uma tabela.

• Etiquetas - cria um relatório para a impressão de nomes com respectivas moradas proporcionando um mailing de etiquetas.

5.5.1 Como criar um relatório com Assistente

Para criar um novo relatório com o assistente, deve:

1. Na janela BASE DE DADOS, premir o botão ou esco-

lher a opção RELATÓRIOS dentro de OBJECTOS DE BASES DE

DADOS no menu VER.

2. Fazer duplo clique na opção

3. Na caixa TABELA/CONSULTA, seleccionar a tabela ou consulta que contém os dados que serão mostrados no relatório.

4. Seleccionar a origem dos dados para o relatório (Figura II.5.4).

Inserir campo a campo através do botão , ou todos os cam-

Page 285: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 285

Figura II.5.5 Janela para a selecção do campo de agrupam ento de dados

Figura II.5.6 Janela para a definição da sequência de ordenação dos registos.

pos através do botão . No nosso exemplo, vamos utilizar a tabela de Pacientes.

5. Na janela seguinte (Figura II.5.5), verificar se existe algum tipo de agrupamento dos dados. Esta opção permite uma melhor estruturação dos dados e pode ser utilizada para o cálculo de subtotais para dados numéricos. Por exemplo, se escolhermos o campo “Regime” para estabelecer o agrupamento, será apre-sentado um bloco de pacientes com o mesmo regime.

Page 286: Access manual de base de datos , excelente xp

286 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.5.7 Janela para a selecção do layout do relatório

Figura II.5.8 Janela para a selecção do estilo do relatório

6. Na janela da Figura II.5.6, seleccionamos o campo de ordenação dos registos do relatório. Existe a possibilidade de definir a orde-nação crescente e decrescente para quatro campos diferentes.

7. Definir o layout e a orientação da folha para a impressão do rela-tório (Figura II.5.7).

8. Escolher o estilo de apresentação gráfica que configura os dados (Figura II.5.8).

Page 287: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 287

Figura II.5.9 Relatório feito com a ajuda do assistente, com o qual é possível listar os pacientes agrupados pelo seu Regime

9. Finalmente, introduzir o nome a dar ao relatório. O relatório obti-do é apresentado na Figura II.5.9.

5.5.2 Como criar um relatório com Assistente de etiquetas

Este processo de criação de um relatório será suportado pela informa-

ção dos Pacientes da nossa base de dados. Assim, vamos produzir um

mailing com o nome e respectiva morada dos Pacientes da clínica. Para

criar este novo Relatório, deve:

1. Na janela BASE DE DADOS, premir o botão ou esco-

lher a opção RELATÓRIOS dentro de OBJECTOS DE BASES DE

DADOS no menu VER.

2. Premir no botão .

Page 288: Access manual de base de datos , excelente xp

288 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.5.10 Janela para a selecção do assistente de etiquetas

Figura II.5.11 Janela para a selecção da dimensão das etiquetas

3. Na caixa de diálogo da Figura II.5.10, seleccionar o ASSISTENTE

DE ETIQUETAS, com base na tabela de Pacientes “T-Pacientes”.

4. Na caixa de diálogo seguinte (Figura II.5.11), seleccionar a

dimensão dos rótulos, o nº de rótulos na horizontal e a orienta-

ção. É possível escolher uma dimensão padrão para o rótulo ou

definir uma dimensão personalizada.

Page 289: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 289

Figura II.5.12 Jane-la para a formatação das etique-tas

Figura II.5.13 Jane-la para a definição dos campos a inserir nas etiquetas

5. Posteriormente, indicar as características de formatação (tipo de

letra, dimensão, cor) do texto a inserir nas etiquetas (Figura

II.5.12).

6. Definir o conteúdo das etiquetas com a escolha de um conjunto

de campos da tabela ou da consulta. Inserir se necessário texto

na “Etiqueta Protótipo” (Figura II.5.13).

Page 290: Access manual de base de datos , excelente xp

290 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.5.14 Janela para a definição da ordenação da impressão das etiquetas

Figura II.5.15 Relatório feito com a ajuda do assistente, com o qual é pos-sível imprimir a informação dos pacientes em etiquetas

7. Indicar na caixa de diálogo da Figura II.5.14 a ordenação das eti-

quetas (em relação à sua impressão).

8. Finalmente, introduzir o nome a dar ao relatório. Na Figura

II.5.15, apresenta-se o relatório final.

Page 291: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 291

Figura II.5.16 Janela do relatório em Vista de estrutura, onde se pode definir a estrutura de um relatório novo ou alterar a estrutura de um relatório existente

5.6 RELATÓRIOS USANDO A VISTA DE ESTRUTURA

5.6.1 Como criar um relatório sem Assistente

Se desejarmos construir um relatório totalmente feito por nós, podemos começar com uma folha branca e, a partir daí, criar os quadros, as eti-quetas, os controlos, e tudo mais o que desejarmos inserir.

Para criar um novo relatório sem o assistente, deve:

1. Na janela BASE DE DADOS, premir o botão ou esco-

lher a opção RELATÓRIOS dentro de OBJECTOS DE BASES DE

DADOS no menu VER.

2. Premir no botão .

3. No quadro “Novo relatório” escolher VISTA DE ESTRUTURA.

4. Na caixa TABELAS/CONSULTAS, seleccionar a tabela ou consulta que contém os dados que serão mostrados no relatório.

5. Premir o botão OK (Figura II.5.10).

Page 292: Access manual de base de datos , excelente xp

292 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 a CAIXA DE FERRAMENTAS. Com esta caixa podemos inserir, no relatório, texto ou outros grafismos e objectos.

Na BARRA DE FERRAMENTAS temos agora alguns novos botões, entre os

quais o botão LISTA DE CAMPOS, o qual nos permite seleccionar campos a inserir no nosso relatório.

5.7 SECÇÕES DO RELATÓRIO

O modo VISTA DE ESTRUTURA do objecto RELATÓRIOS apresenta um con-junto 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 MSAccess apresenta apenas três secções. Contudo, em função dos dados inseridos, poderão aparecer outras secções, tal como é apresentado na Figura II.5.17. Efectivamente podemos complementar o relatório juntando mais sec-ções. O MSAccess disponibiliza, no máximo, sete secções para um relatório - aqui reside uma das poucas diferenças que o distingue de um formulário. Vamos agora descrever cada uma destas secções:

• CABEÇALHO DO RELATÓRIO Esta secção normalmente é usada para o título do formulário, data ou logotipos. O seu conteúdo irá aparecer no topo da pri-meira página do relatório.

• CABEÇALHO DO RELATÓRIO 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.

Page 293: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 293

Figura II.5.17 Vista de estrutura de um relatório com várias secções distintas

• 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 representam os registos.

• RODAPÉ DO AGRUPAMENTO Apresenta informação que sumaria os dados de cada agrupa-mento. O seu conteúdo irá aparecer no final de cada agrupa-mento de dados.

• RODAPÉ DA PÁGINA Normalmente utilizado para apresentar o número de página ou nome 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.

Alterar o tamanho de uma secção:

Page 294: Access manual de base de datos , excelente xp

294 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Quanto à alteração do tamanho das secções e à definição das suas propriedades, tudo isto é semelhante às das secções nos formulários.

5.8 CONTROLOS EM RELATÓRIOS

Criar controlos

Tal como nos formulários, também nos relatórios os controlos são bas-tante importantes, pois eles não são a base de um relatório, mas são os que a permitem manejar e fazer com que um relatório tenha mais sen-tido e não seja uma simples visualização de dados, tal como é uma tabela ou uma consulta. Quando inserimos um controlo num relatório, temos que decidir onde é que a informação é inserida. Esse controlo pode ser um campo da tabe-la de base, ou então pode ser um título ou uma legenda. Os Controlos podem também ser de Cálculo representando um papel muito importan-te, pois, nos relatórios, são frequentemente apresentados totais e são estes controlos que realizam os cálculos para chegar a esses totais.

A definição de controlos dependentes, independentes e de cálculo é semelhante à definição dos controlos num formulário. Manipular controlos

Podemos realizar várias acções com os controlos para que estes este-jam nos locais desejados e com o formato pretendido. 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 desejado. Se desejarmos mover esse controlo para outra secção, ter-mos que copiar o controlo e colá-lo no local desejado.

Page 295: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 295

Figura II.5.18 Jane-la para a definição da ordenação e agrupamen-to dos dados do relatório

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 con-trolo.

5.9 ORDENAÇÃO E AGRUPAMENTO

5.9.1 Ordenação de dados

Quando se imprime um relatório, normalmente, gostamos de ter uma ordenação na listagem dos registos, por ordem alfabética ou numérica. Para estabelecer uma ordenação, devemos:

1. Abrir o relatório no modo VISTA DE ESTRUTURA.

2. No menu VER, escolher a opção ORDENAR E AGRUPAR ou premir

o botão ORDENAR E AGRUPAR na barra de ferramentas (Figu-ra II.5.18).

3. Na coluna CAMPO/EXPRESSÃO, seleccionar o campo desejado, ou inserir uma expressão (a expressão tem que começar com o sinal de igual). O campo ou expressão que aparece na primeira linha dessa opção é o primeiro campo ou expressão que terá a primeira chave de ordenação. Se colocarmos um segundo cam-po ou expressão, será por sua vez o segundo campo ou expres-são que se terá em conta para a ordenação, em caso de igual-dade do primeiro campo ou expressão.

Page 296: Access manual de base de datos , excelente xp

296 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

4. Na coluna SEQUÊNCIA DE ORDENAÇÃO, especificar se a ordena-ção dos dados do campo ou expressão é ascendente ou des-cendente.

5.9.2 Agrupar os dados

Para muitos relatórios a ordenação dos registos não é suficiente para uma boa estruturação dos dados. Frequentemente será conveniente agrupar os registos de uma tabela ou consulta através da informação de um campo que os caracteriza 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 Depois de especificarmos o tipo de campos que pertencem ao quadro de ORDENAÇÃO E AGRUPAMENTO, podemos criar os grupos através dos cabeçalhos e rodapés dos grupos. Usamos as propriedades cabeça-lho do grupo e rodapé do grupo para remover o próprio cabeça-lho e rodapé desse grupo. Como inserir ou apagar o grupo do cabeçalho ou o grupo do rodapé do relatório:

1. Abrir o relatório no modo VISTA DE ESTRUTURA.

2. No menu VER, escolher a opção ORDENAR E AGRUPAR ou premir

o botão ORDENAR E AGRUPAR na barra de ferramentas.

3. Na coluna CAMPO/EXPRESSÃO (FIGURA 5.18), seleccionar o cam-po ou expressão pela qual desejamos agrupar os dados.

4. Seleccionar a propriedade CABEÇALHO DO GRUPO ou RODAPÉ DO

GRUPO. • Para ter um cabeçalho ou um rodapé do relatório, seleccionar

Sim. • Para remover ou apagar um cabeçalho ou rodapé do relatório,

seleccionar Não.

Page 297: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 297

Figura II.5.18 Janela para a definição da impressão de relatórios

5. Inserir os controlos que se deseja que apareçam no cabeçalho ou no rodapé do relatório em construção.

5.10 IMPRESSÃO DE UM RELAT ÓRIO

Embora seja possível imprimir tabelas, consultas ou formulários, são normalmente os relatórios que representam o output em papel da infor-maçã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 impres-sã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 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 acedermos a essa vista temos que ir ao menu FICHEIRO, escolher a opção PRÉ-

VISUALIZAR ou premir o botão na BARRA DE FERRAMENTAS.

Para a execução da impressão, devemos escolher a opção IMPRI-MIR, no menu FICHEIRO.

A janela de impressão de relatórios (Figura II.5.19) apresenta opções de impressão idênticas a qualquer outra aplicação do MSOffice.

Page 298: Access manual de base de datos , excelente xp

298 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.5.21 Relatório da Listagem dos pacientes no MSExcel

Figura II.5.20 Menu Ligações do Office

5.11 EXPORTAR RELATÓRIOS PARA O MSWORD E MSEXCEL

A exportação de um relatório para o MSExcel ou para o MSWord é feita através de um processo efectuado em modo PRÉ-VISUALIZAR. Assim, estando com o relatório activo em modo PRÉ-VISUALIZAR, seleccionar o comando LIGAÇÕES DO OFFICE do menu FERRAMENTAS e posteriormente escolher a opção pretendida no menu apresentado na Figura II.5.20.

Depois de escolher a respectiva opção, é imediatamente activada a aplicação correspondente (MSWord ou MSExcel). Na Figura II.5.21, apresentamos um exemplo para o MSExcel.

Page 299: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 299

5.12 EXERCÍCIO GUIADO

Na nossa base de dados Dr.Dentinho, 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 automáticos Para iniciar a criação de relatórios na nossa base de dados, vamos utili-zar a opção RELATÓRIO AUTOMÁTICO para as diferentes tabelas da nos-sa 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 ao assistente de formulários para a Tabe-la T-Pacientes. Assim, na janela BASE DE DADOS, premir o botão

ou escolher a opção RELATÓRIOS dentro de OBJECTOS DE

BASES DE DADOS no menu VER. Em seguida premir no botão . Na janela que aparece no ecrã, escolher RELATÓRIO AUTOMÁTICO: TABELAS e seleccionar o nome da tabela que será representada no relatório (T-Pacientes).

Para as restantes tabelas primárias da nossa base de dados, vamos utilizar exactamente os mesmos procedimentos adoptados na tabela T-Pacientes. 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.

Page 300: Access manual de base de datos , excelente xp

300 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.5.22 Primeiro quadro do assistente, onde escolhe-mos os campos a inserir no relatório.

Figura II.5.23 Qua-dro do assistente, onde esco-lhemos o tipo de agrupamen-to de dados

Para exemplificar esta última situação vamos criar um relatório a partir da consulta anteriormente criada em 3.13 com o nome “Tratamentos específicos”. Por ser mais rápido e mais prático vamos utilizar o assis-tente de Relatórios. Depois de arrancar com o assistente, seleccionar a consulta “Trata-mentos Específicos” que contém os dados que serão mostrados no rela-tório e posteriormente inserir todos os campos no formulário clicando

em (Figura II.5.22).

No quadro seguinte do assistente de relatórios, escolher o tipo de agru-pamento dos dados a introduzir no nosso relatório (Figura II.5.22). Na perspectiva de listar os tratamentos específicos que cada Paciente efec-tuou na Clínica, vamos escolher “T-Pacientes” como agrupamento.

Page 301: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 301

Figura II.5.24 Quadros para estabelecer o agrupamento por Data Tratamento

Figura II.5.25 Quadros para estabelecer a ordenação dos dados e para impor cálculos aos agrupamentos

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 os tratamentos por data, indicando o campo “Data Tratamento”. Este novo agrupamento deverá ter a prioridade máxima, pelo que devemos seleccionar o botão

. Devemos também clicar no botão para poder-mos alterar a configuração da data de Mês para Ano. Desta forma, os tratamentos serão agrupados conforme se apresenta na Fig. II.5.24.

No quadro seguinte, podemos definir a ordenação dos dados através dos campos disponíveis. No nosso exemplo, vamos impor a ordenação descendente por data de tratamento (Figura II.5.24).

Podemos também mandar efectuar cálculos sobre os campos dos agru-

pamentos, através do botão . Vamos seleccionar o cál-culo somatório para o campo “Custo do tratamento Específico”.

Page 302: Access manual de base de datos , excelente xp

302 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.5.26 Aspecto do Relatório “R-TratamentosEspecíficosEfectuados” depois de concluído o processo de criação através do assistente

Nos últimos quadros, escolhemos a disposição dos dados no relatório seleccionando o esquema “Degrau” e a orientação “horizontal” e esco-lhemos também o estilo “Compactar” para definir a sua apresentação gráfica. Finalmente, para concluir o processo atribuímos o nome “R-TratamentosEspecíficosEfectuados” ao relatório.

Depois de visualizar o relatório em modo , vamos com certeza constatar que os campos e os seus rótulos não se encontram totalmente visíveis e alinhados (Figura II.5.26). Nesta perspectiva, temos que entrar em modo VISTA DE ESTRUTURA para fazer alguns melhoramentos.

Alteração de relatórios através da vista de estrutura Para personalizar os relatórios criados através da VISTA DE ESTRUTURA, temos a possibilidade de utilizar um conjunto de procedimentos simila-res aos utilizados nos formulários. Vamos, por exemplo, dimensionar e

Page 303: Access manual de base de datos , excelente xp

II.5. RELATÓRIOS EM MSACCESS 303

Figura II.5.28 Aspecto do Final do Relatório “R-TratamentosEspecíficosEfectuados” depois de efectuados os melhoramento no modo Vista de estrutura

Figura II.5.27 Processo de configuração do rodapé do Nome

deslocar alguns RÓTULOS e CAIXAS DE TEXTO de forma a que se apre-sentem visíveis e alinhados. Vamos também, inserir na área Cabeça-lho do Formulário a imagem que inserimos no formulário “Menu Principal”, bem como o Titulo “Consultório Dr.Dentinho”. No que diz respeito às legendas dos cálculos parciais e totais apresen-tados no formulário, também podemos fazer ligeiras adaptações. Vamos eliminar o controlo que apresenta um resumo detalhado do cálculo e ajustar o posicionamento do Rótulo “Soma” (Figura II.5.27).

No final, o relatório deverá ter uma configuração como a que é apre-sentada na Figura II.5.28.

Page 304: Access manual de base de datos , excelente xp

304 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Page 305: Access manual de base de datos , excelente xp

6 Páginas de Acesso a Dados

6.1 DEFINIÇÃO

Uma página de acesso a dados é uma página Web que está ligada a uma base de dados. Numa página de acesso a dados, pode ver, adicio-nar, editar e manipular os dados armazenados na base de dados. Uma página de acesso a dados também pode incluir dados de outras ori-gens, como uma folha de cálculo, uma lista Tabela dinâmica ou um grá-fico. Uma Página é um objecto da base de dados MSAccess que permite visualizar, editar, actualizar, eliminar, filtrar, agrupar e ordenar dados activos de uma base de dados do Access ou de uma base de dados Microsoft SQL Server, no Microsoft Internet Explorer. Cria uma página de acesso a dados como um objecto da base de dados, que contém um atalho para a localização do ficheiro HTML correspondente à página. Estas páginas poderão ser criadas à semelhança do que é feito para os formulários para inserção e edição de dados, ou como relatórios, para visualizar conjuntos de registos.

6.2 UTILIZAÇÃO DAS PÁGINAS DE ACESSO A DADOS

Utilizar uma página de acesso a dados é semelhante a utilizar um for-mulário: pode visualizar, introduzir, editar e eliminar dados numa base de dados. No entanto, também pode utilizar uma página fora de uma

Page 306: Access manual de base de datos , excelente xp

306 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

base de dados do Microsoft Access, para que os utilizadores possam actualizar ou visualizar dados na Internet ou numa Intranet Empresarial.

Uma página de acesso a dados está ligada directamente a uma base de dados. Quando a página de acesso a dados é visualizada pelos utiliza-dores no Internet Explorer, é visualizada uma cópia da página. O que significa que filtrar, ordenar e outras alterações que possam ser efec-tuadas ao modo como os dados são visualizados (incluindo as altera-ções efectuadas numa lista de tabelas dinâmicas ou folha de cál-culo), apenas afectam essa cópia da página de acesso a dados. No entanto, as alterações efectuadas directamente aos dados como, por exemplo, a modificação de valores ou a adição e eliminação de dados, são armazenadas na base de dados subjacente e, assim, aces-síveis a qualquer pessoa que visualize a página de acesso a dados.

6.3 MODOS DE CRIAÇÃO DE RELATÓRIOS

Tal como os outros objectos do MSAccess, podemos criar uma página com ou sem ASSISTENTES. Evidentemente que com o ASSISTENTE DE

PÁGINAS a construção do relatório é muito mais fácil e rápida, impondo um conjunto restrito de opções. Não obstante, a configuração das pági-nas pode ser sempre complementada na VISTA DE ESTRUTURA. Para criar uma nova Página, deve:

1. Na janela BASE DE DADOS, premir o botão ou esco-

lher a opção PÁGINAS dentro de OBJECTOS DE BASES DE DADOS

no menu VER.

2. Premir no botão (Figura II.6.1).

Page 307: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 307

Figura II.6.1 Ecrã “Nova página de acesso a dados”, onde são apresentadas diversas formas de criação de uma página

6.4 CRIAR PÁGINAS COM PÁGINA AUTOMÁTICA

A PÁGINA AUTOMÁTICA é a forma mais simples de criação de uma pági-na de acesso a dados. Normalmente, é utilizado quando necessitamos rapidamente de criar uma página referente a uma tabela ou consulta.

Antes de criarmos uma página temos que considerar os dados que farão parte da mesma, ou seja, a tabela ou consulta que lhe servirá de base. Quando usamos uma PÁGINA AUTOMÁTICA, é seleccionada uma origem dos dados e como consequência é gerada uma página que utiliza todos os campos dessa origem de registo. Contudo, não é possível ao utiliza-dor durante o processo de criação fazer qualquer tipo de personaliza-ção.

Page 308: Access manual de base de datos , excelente xp

308 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.6.2 Aspecto de uma página do tipo “Colunas” criado automaticamente

Como resultado desta opção, é gerada uma página que apresenta os valores de registos numa coluna, e cada valor do campo numa linha separada (Figura II.6.2).

6.5 CRIAR PÁGINAS COM O ASSISTENTE

O processo de criação de páginas de acesso a dados mais utilizado, é baseado num assistente. Este processo faz perguntas detalhadas sobre a origem dos registos, campos, esquema e formato pretendidos e cria a página com base nas respostas. Para criar um nova página com o assistente, deve:

1. Na janela BASE DE DADOS, premir o botão ou

escolher a opção PÁGINAS dentro de OBJECTOS DE BASES DE

DADOS no menu VER.

2. Fazer duplo clique na opção

Page 309: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 309

Figura II.6.3 Primeiro quadro do assistente, onde se podem escolher os campos a inserir na página.

Figura II.6.4 Janela para a selecção do campo de agrupamento de dados

3. Na caixa TABELA/CONSULTA, seleccionar a tabela ou consulta que contém os dados que serão mostrados na página.

4. Seleccionar a origem dos dados para a página (Figura II.6.3).

Inserir campo a campo através do botão , ou todos os cam-

pos através do botão . No nosso exemplo, vamos utilizar uma consulta que apresente os Tratamentos Gerais Efectuados pelos Pacientes.

5. Na janela seguinte (Figura II.6.4), indique que pretende agrupar os dados pelo campo “Tratamentos Gerais Efectuados”, na

Page 310: Access manual de base de datos , excelente xp

310 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.6.5 Janela para a definição da sequência de ordenação dos registos.

Figura II.6.6 Página elaborada com a ajuda do assistente, com a qual é possível listar para cada Tratamento Geral os pacientes que o efectuaram

perspectiva de saber quais os pacientes que efectuaram deter-minado Tratamento Geral.

6. Na janela da figura II.6.5, seleccionamos o campo de ordenação dos registos do relatório (“Data de Tratamento”). Existe a possi-bilidade de definir a ordenação crescente e decrescente para quatro campos diferentes.

7. Finalmente, introduzir o nome a dar à página. O resultado final é apresentado na Figura II.6.6.

Page 311: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 311

6.6 PÁGINAS USANDO A VISTA DE ESTRUTURA

Na criação das páginas de acesso a dados em modo Vista de Estrutura são utilizadas funcionalidades usadas em outros objectos do MSAccess XP, como barras de ferramentas, temas, secções, tabelas e imagens, assim como controlos (caixas de texto, grupo de opções, etc.).

6.6.1 Como criar uma página sem Assistente

Se desejarmos construir uma página totalmente personalizada, pode-mos começar com uma folha branca e, a partir daí, criar os quadros, os controlos, e tudo mais o que desejarmos inserir.

Para criar uma nova página sem o assistente, deve:

1. Na janela BASE DE DADOS, premir o botão ou esco-

lher a opção PÁGINAS dentro de OBJECTOS DE BASES DE DADOS

no menu VER.

2. Premir no botão

3. No quadro “Nova página” escolher VISTA DE ESTRUTURA.

4. Na caixa TABELA/CONSULTA, seleccionar a tabela ou consulta que contém os dados que serão mostrados na página.

5. Premir o botão OK.

Também podemos criar uma nova página em branco, clicando em

na janela BASE DE DADOS. Sempre que seja necessário fazer referência a um conjunto de campos de uma qualquer tabela ou consulta da nossa Base de Dados, podemos

clicar no botão LISTA DE CAMPOS, que se encontra na BARRA DE FER-

RAMENTAS. Depois de accionar este botão aparecerá no ecrã a janela da Figura II.6.7.

Page 312: Access manual de base de datos , excelente xp

312 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.6.7 Janela da página em Vista de estrutura, refe-rente à página gerada

Figura II.6.8 Janela que possibilita a escolha do esquema

Depois de localizar a tabela em que pretende basear a sua página, arraste o ícone de uma tabela ou consulta, para a área da página. Em seguida, escolha o esquema que pretende para a disposição dos cam-pos (Figura II.6.8).

Tal como no modo VISTA DE ESTRUTURA dos formulários e relatórios, aqui também temos a CAIXA DE FERRAMENTAS . Com esta caixa podemos inserir, na página, texto ou outros grafismos e objectos. Também a manipulação de controlos no modo Vista de estrutura das páginas é similar à dos formulários e relatórios.

Page 313: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 313

Figura II.6.9 Janela da página em Vista de estrutura, referente à página gerada com recurso ao assistente

6.6.2 Secções da Página O modo VISTA DE ESTRUTURA do objecto PÁGINAS apresenta um conjunto de zonas de introdução de controlos tal como é apresentado na Figura II.6.9.

O corpo O corpo é a superfície de estrutura básica de uma página de acesso a dados. Numa página que suporte a entrada de dados, pode utilizá-lo para apresentar texto informativo, controlos ligados a dados e secções. Secções Utilizam-se secções para apresentar texto, dados de uma base de dados e barras de ferramentas. Dois tipos de secções são normalmente utilizados em páginas que suportam a entrada de dados: cabeçalho de grupo e secções de navegação em registos. A página também pode ter secções de legenda e de rodapé.

• CABEÇALHO E RODAPÉ DE GRUPO - Utilizado para visualizar dados e calcular valores.

• NAVEGAÇÃO EM REGISTOS - Utilizada para apresentar o controlo de navegação em registos do nível de grupo. Aparece uma sec-ção de navegação em registos para um grupo depois da secção

Page 314: Access manual de base de datos , excelente xp

314 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.6.10 Janela para a definição do tema a impor na página

de cabeçalho do grupo. Não pode colocar controlos dependen-tes numa secção de navegação em registos.

• LEGENDA - Utilizada para visualizar legendas de caixas de texto e outros controlos. Aparece imediatamente antes do cabeçalho de grupo. Não pode colocar controlos dependentes numa sec-ção de legenda.

Cada nível de grupo numa página de acesso a dados tem uma origem de registo. O nome da origem de registo é apresentado na barra de secção, de cada secção utilizada para um nível de grupo.

6.6.3 Adicionar um tema a uma página O MSAccess tem uma série de temas para páginas Web que proporcio-nam uma grande variedade de estruturas e grafismos para as páginas. Com os temas existentes, podemos formatar o fundo, os tipos de letra e as cores utilizadas na página Web. É também possível configurar um novo tema personalizado, sempre que não queiramos utilizar um dos temas da lista disponibilizada pelo MSAccess.

Page 315: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 315

Figura II.6.11 Modo Vista de estrutura com a criação de um agrupamento

Podemos escolher um tema para a nossa página quando estivermos no modo Vista de estrutura. Clicamos no menu FORMATAR e, em seguida,

clicamos na opção . Depois de depararmos com a janela com a lista de temas (Figura II.6.10), clicamos no nome do tema pretendido e, activamos ou desactivamos as opções que se encontram na parte inferior esquerda da mesma janela e que configuram o respec-tivo tema.

6.6.4 Agrupar os dados de uma página Uma página de acesso a dados agrupada é uma página Web hierár-quica e interactiva na qual os registos são agrupados com base em valores de um campo. Quando procurada, a página apresenta valores do campo de grupo e terá um botão com um sinal de adição no seu lado esquerdo. Se fizer clique neste botão a página apresentará todos os registos para o valor desse campo. Para agrupar uma página, deve seleccionar o campo que servirá de

base ao agrupamento e, posteriormente deverá clicar no botão PROMOVER que se encontra na BARRA DE FERRAMENTAS. (figura II.6.11)

Page 316: Access manual de base de datos , excelente xp

316 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.6.12 Modo Vista de página com a informação dos tratamentos específicos

O Access cria uma nova secção de grupo, que contém o campo de gru-po e um sinal de adição que permite ao utilizador expandir e fechar o registo. Para remover um grupo, devemos seleccionar o campo de agrupamento

e, posteriormente deverá clicar no botão DESPROMOVER que se encontra na BARRA DE FERRAMENTAS.

6.7 VER A PÁGINA DE ACESSO A DADOS

Depois de criarmos uma página de acesso a dados, podemos abri-la a partir da janela BASE DE DADOS, ou a partir do Web Browser. Se optar por ver a página no browser, este estabelecerá uma ligação à base de dados obtendo informações necessárias para a visualização da página. (figura II.6.12)

A página de acesso a dados contém uma caixa de navegação (Figura II.6.13) para o ajudar a obter os registos da base de dado. A caixa de

Page 317: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 317

Figura II.6.13 Barra de Navegação no Modo Vista de página

navegação funciona no browser da mesma forma que funciona no MSAccess. Esta ferramenta permite-lhe mover-se pelos registos da base de dados, filtrar dados, ordená-los ou procurar valores específicos.

6.8 TORNAR DISPONÍVEIS AS PÁGINAS DE ACESSO A DADOS

Para tornar disponíveis as páginas na World-Wide-Web, temos que publicar as páginas num servidor Web. A base de dados do MSAccess, que é a origem de dados de uma página de acesso a dados, tem de estar no mesmo servidor Web ou computador partilhado da referida página, para que os outros utilizadores a visualizem e a utilizem simul-taneamente num Web browser ou numa mensagem de correio electró-nico O Internet Explorer necessita de transferir a página apenas uma vez do servidor Web de forma a permitir-lhe visualizar e interagir com os dados na página (figura II.6.14). Como a página utiliza o HTML dinâmico, o acesso à base de dados é, geralmente, muito eficiente num ambiente cliente/servidor.

Page 318: Access manual de base de datos , excelente xp

318 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.6.14 Página publicada no Internet Explorer

É melhor colocar a base de dados num servidor ou computador parti-lhado antes de criar a página. Se mover a base de dados à qual a página está ligada após ter criado a página, tem de alterar a ligação à origem de dados OLE DB da página, na caixa de diálogo Ligação da página de acesso a dados. Suportar ficheiros e hiperligações à Web Quando cria uma página de acesso a dados, o Access gere os ficheiros relacionados e planeia as ligações e hiperligações de forma que as imagens apareçam e as ligações funcionem quando as páginas são colocadas no servidor Web final. Quando guarda um ficheiro como uma página de acesso a dados na VISTA DE ESTRUTURA, todos os ficheiros de suporte - como, por exemplo, marcas, texturas de fundo e gráficos - são organizados por predefinição

Page 319: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 319

numa pasta de suporte. Se mover ou copiar a página de acesso a dados para outra localização, tem de mover também a pasta de suporte de forma a manter todas as ligações à página. Por exemplo, suponha que tem uma página denominada Tratamento-sEspecificos.htm . Esta página inclui marcas que estão armazenadas numa pasta de suporte denominada TratamentosEspecificos _ficheiros. Se mover a TratamentosEspecificos.htm, também tem de mover a pasta de suporte (TratamentosEspecificos_ficheiros) para a nova localização. Depois de publicar a página de acesso a dados na Internet, deve testá-la num Web browser. Certifique-se de que todos os gráficos são apre-sentados e de que as hiperligações vão para os destinos correctos

Page 320: Access manual de base de datos , excelente xp

320 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.6.13 Primeiro quadro do assistente, onde escolhemos os campos a inserir na página.

6.9 EXERCÍCIO GUIADO

Com o objectivo de disponibilizar para cada Paciente os tratamentos Gerais por eles efectuados, o Consultório do Dr.Dentinho vai publicar na Web uma página que irá apresentar este tipo de dados. Adicionalmente, serão apresentadas um conjunto de informações de âmbito geral que ajudarão os Pacientes a conhecer o nosso consultório. Criação de páginas no assistente a partir de um conjunto de tabelas

A criação de uma página a partir de um conjunto de tabelas será em quase tudo idêntica à criação de uma página a partir de uma tabela, exceptuando o processo de escolha dos campos que neste caso irá envolver várias tabelas. Para exemplificar esta situação vamos criar uma página que apresente a informação associada aos Pacientes e em particular aos Tratamentos Gerais que eles efectuaram. Depois de arrancar com o assistente, seleccionar a Tabela “T-Pacien-tes” que contém os primeiros campos a inserir na página. Em seguida,

seleccione os campos “Cod Paciente” e “Nome” e faça clique em .

Page 321: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 321

Figura II.6.16 Quadro do assistente, onde Escolhemos o tipo de agrupamento de dados

Figura II.6.17 Quadro para estabelecer a Ordenação dos dados pela “Data Tratamento”

Faça o mesmo procedimento para as tabelas “T-TratamentosGerais Efectuados” e “T-TratamentosGerais” e seleccione os respectivos cam-pos, tal como é apresentado na Figura II.6.15.

No quadro seguinte do assistente de páginas, escolher o campo “Nome” como tipo de agrupamento dos dados a introduzir na nossa página. (figura II.6.16)

Na janela da Figura II.6.17, seleccionar o campo de ordenação cres-cente dos registos da página (“Data de Tratamento”). Finalmente, intro-duzir o nome a dar à página.

Page 322: Access manual de base de datos , excelente xp

322 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.6.18 Área do titulo da página com uma imagem

Alteração da página através da vista de estrutura Para personalizar as páginas criadas através do assistente, temos a possibilidade de utilizar um conjunto de procedimentos similares aos utilizados nos formulários e relatórios. Temos inclusivamente a possibi-lidade de utilizar um conjunto de ferramentas específicas para PÁGINAS

DE ACESSO A DADOS que se encontram disponíveis na BARRA DE FERRA-

MENTAS . Selecção do Tema Para a configuração da nossa página vamos começar por impor um tema predefinido. Clicamos no menu FORMATAR e, em seguida, clicamos na opção TEMA. Na lista de temas que aparecem na parte esquerda da janela, seleccionamos o tema ”Gradual”. Inserção de uma imagem Na área reservada ao título da página, vamos inserir uma imagem que representa o logótipo do consultório. Para isso, vamos seleccionar o

botão IMAGEM e em seguida seleccionamos o nome do ficheiro que representa a imagem a inserir, no local (Pasta) onde está armazenado em disco. Manipulação de controlos Vamos começar por inserir um título para a página. Assim, clicamos na área superior da página e digitamos o texto que é apresentado na Figu-ra II.6.18.

Page 323: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 323

Figura II.6.19 Deslocamento do campo “cod Paciente” para a área do agrupamento por “Nome”

Figura II.6.20 Quadro das propriedades da barra de navegação

Ainda no âmbito da manipulação de controlos vamos fazer alterações à dimensão e disposição de alguns controlos de forma a personalizar a apresentação dos campos da nossa página. Por exemplo, vamos deslo-car a CAIXAS DE TEXTO “Cod Paciente” para a área de agrupamento, tal como é apresentado na figura II.6.19.

No que diz respeito à configuração das barras de navegação, podemos atribuir uma legenda mais sugestiva. Por exemplo, depois de seleccio-nar a barra referente ao controlo de navegação dos Pacientes, clicamos

no botão de forma a alterar as suas propriedades. Seleccionamos a propriedade RecordsetLabel e alteramos o seu texto conforme é apresentado na Figura II.6.20.

Criar uma hiperligação

Recorrendo ao botão HIPERLIGAÇÃO que se encontra na BARRA DE

FERRAMENTAS, podemos criar uma hiperligação para aceder ao ende-reço de correio electrónico do consultório Dr.Dentinho. Depois de selec-cionarmos o referido botão, criamos no fundo da página uma área rec-tangular e, na janela que será aberta (Figura II.6.19) seleccionamos “Endereço de correio electrónico” da coluna Ligar a. Em seguida digi-tamos o endereço em Endereço de correio electrónico. (figura II.6.21)

Page 324: Access manual de base de datos , excelente xp

324 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.6.21 Quadro de inserção de uma hiperligação

Inserir texto de deslocamento Com o objectivo de proporcionar informação adicional à nossa página, com uma enfâse particular, podemos utilizar o botão TEXTO DE DESLO-

CAMENTO. No nosso exemplo, vamos inserir na área superior da nossa página o texto “Não descuide a sua higiene oral”. Assim, seleccionamos

o botão TEXTO DE DESLOCAMENTO e seleccionamos uma área rec-tangular na parte superior da página. Posteriormente acedemos às suas propriedades e em Inner Text digitamos a frase anteriormente refe-renciada. Inserir um cálculo de agrupamento Temos também a possibilidade de introduzir cálculos automáticos nos campos apresentados na nossa página. Vamos utilizar como exemplo um somatório dos custos de tratamento para cada Paciente. Assim, seleccionamos a CAIXAS DE TEXTO “Custo Tratamento” e posteriormente

clicamos no botão da BARRA DE FERRAMENTAS (figura II.6.22). Depois de seleccionarmos o cálculo a fazer que, para o nosso exemplo será a Soma, surge de uma forma automática uma nova CAIXAS DE TEX-

TO na área de agrupamento por “Nome”. Para concluir o processo, vamos alterar o rótulo da caixa de texto digitando “Soma dos custos”.

Page 325: Access manual de base de datos , excelente xp

II.6. PÁGINAS DE ACESSO A DADOS EM MSACCESS 325

Figura II.5.23 Aspecto do Final da Página depois de efectuados os melhoramento no modo Vista de estrutura

Figura II.6.22 Menu para cálculos automáticos a inserir numa página

No final, a página deverá ter uma configuração como a que é apresen-tada na Figura II.6.23.

Page 326: Access manual de base de datos , excelente xp

326 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Page 327: Access manual de base de datos , excelente xp

7 Macros

7.1 DEFINIÇÃO

As macros permitem executar um conjunto de acções que podem auto-matizar tarefas recorrentes na gestão da Base de Dados. O processo associado à criação de macros está bastante facilitado pois, este objec-to do MSAccess disponibiliza ao utilizador um conjunto de acções pre-definidas, com múltiplas opções. 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 é executada. Uma macro é um conjunto de uma ou mais acções em que cada uma executa uma determinada operação como, por exemplo, abrir um for-mulário ou imprimir um relatório. As macros podem ajudá-lo a automati-zar tarefas comuns, como por exemplo, pode executar uma macro que imprima um relatório quando um utilizador clicar num botão de coman-do.

7.2 ACÇÕES E ARGUMENTOS

As macros são constituídas por acções ou comandos necessários para complementar a tarefa que pretendemos automatizar. Abrir formulários, fechar uma tabela, ordenar uma consulta são exemplos de acções que podem ser utilizadas nas Macros.

Page 328: Access manual de base de datos , excelente xp

328 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Os argumentos são blocos adicionais de informações necessárias 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. Depois de adicionar uma acção a uma macro, são definidos os argu-mentos para a acção na parte inferior da janela de Macros no modo VISTA DE ESTRUTURA. Contudo, devemos estar conscientes que o núme-ro de argumentos e o seu objectivo varia consoante a acção que for seleccionada. Apresentamos algumas considerações sobre a utilização dos argu-mentos 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 efectua-das para um determinado argumento podem influenciar os argumentos seguintes;

• Se adicionar uma acção à macro arrastando um objecto de base de dados da janela BASE DE DADOS, o MSAccess define automa-ticamente argumentos adequados a essa acção;

• Pode utilizar uma expressão antecedida de um sinal de igual (=) para definir vários argumentos de acção.

7.3 CRIAR 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 na vista Modo de estrutura.

Page 329: Access manual de base de datos , excelente xp

II.7. MACROS EM MSACCESS 329

Figura II.7.1 Janela de Macros no modo VISTA DE ESTRUTURA

Para criar uma nova Macro, deve:

1. Na janela BASE DE DADOS, premir o botão ou

escolher a opção MACROS dentro de OBJECTOS DE BASES DE

DADOS no menu VER.

2. Premir no botão .

3. Posicione-se na primeira linha da coluna “Acção” da janela de Macros no modo VISTA DE ESTRUTURA e, seleccione a caixa de combinação de forma a escolher o tipo de acção que pretende utilizar. Por exemplo, escolher a acção AbrirFormulário. (figura II.7.1).

4. Escreva um comentário se pretender descrever a acção na segunda coluna da janela de Macros no modo VISTA DE ESTRU-

TURA (o preenchimento desta coluna é opcional).

5. Na parte inferior da mesma janela, configure os argumentos da acção, nomeadamente definir o nome do formulário que está disponível na caixa de combinação do argumento “Nome do for-mulário”.

Page 330: Access manual de base de datos , excelente xp

330 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

6. Se pretendermos inserir novas acções, temos de repetir os pas-sos 3 a 5. A macro realizará as acções pela ordem em que as listou.

7. Depois de criar a macro, certifique-se de que guarda o trabalho e que atribui à macro um nome que identifique as tarefas que a macro executa.

7.4 EXECUTAR E TESTAR UMA MACRO

Para que uma macro ponha em prática as acções que lhes estão asso-ciadas, temos que as executar. Existem essencialmente duas possibili-dades 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.

7.4.1 Executar uma macro a partir da janela Base de Dados Para executar uma Macro, deve:

1. Na janela BASE DE DADOS, premir o botão ou

escolher a opção MACROS dentro de OBJECTOS DE BASES DE

DADOS, no menu VER.

2. Fazer duplo clique no nome da macro que pretende executar, ou

premir o botão depois de seleccionar o nome da

macro.

Se a macro encontrar uma acção que não consegue executar, apare-

cerá uma caixa de mensagem indicando a referida acção (Figura II.7.2).

Page 331: Access manual de base de datos , excelente xp

II.7. MACROS EM MSACCESS 331

Figura II.7.2 Caixa de mensagem com a indicação de uma acção que falhou

Depois de ter tomado consciência da falha da acção deverá clicar no

botão PARAR.

7.4.2 Executar uma macro com recurso a

um botão de comando Na perspectiva de facilitar o acesso à execução de uma Macro, é fre-

quente 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, deve:

1. Na CAIXA DE FERRAMENTAS , activar a opção ASSISTENTE DE

CONTROLOS.

2. Na CAIXA DE FERRAMENTAS, premir o botão BOTÃO DE

COMANDO.

Page 332: Access manual de base de datos , excelente xp

332 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.7.3 Assis-tente de BOTÃO DE COMANDO, que sugere a selecção do tipo de acção que deve ter o botão

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 (Figura II.7.3), é possível escolher a CATE-

GORIA e a respectiva ACÇÃO que o botão irá desempenhar. No caso de executar uma macro, devemos seleccionar a CATEGORIA

Diversos, e posteriormente, seleccionar a ACÇÃO Executar macro.

5. Em seguida, escolha a macro que se pretende executar.

6. Na caixa de diálogo seguinte, o MSAccess 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á identificar o BOTÃO DE COMANDO e premir o botão CONCLUIR.

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

Page 333: Access manual de base de datos , excelente xp

II.7. MACROS EM MSACCESS 333

Figura II.7.4 Caixa de mensagem com a indicação de uma acção que será executada

Para executar uma Macro, deve:

1. Visualizar a Macro no modo VISTA DE ESTRUTURA.

2. Activar o botão PASSO A PASSO na BARRA DE FERRAMENTAS.

3. Clicar no botão EXECUTAR na BARRA DE FERRAMENTAS depois

de seleccionar o nome da macro.

4. Na janela PASSO INDIVIDUAL (figura II.7.4), clicar no botão PASSO

para executar a primeira acção na macro.

5. Repetir o procedimento 4 até a macro terminar. Se a macro

encontrar uma acção que não consegue executar, aparecerá

uma janela de mensagem (Figura II.7.2) que indicará a acção

que falhou.

7.5 CRIAR GRUPOS DE MACROS

Sempre que tivermos um conjunto de macros relacionadas e que devem ser executadas em grupo, o MSAccess disponibiliza-nos um processo que permite gerir a base de dados mais facilmente.

Page 334: Access manual de base de datos , excelente xp

334 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.7.5 Janela de Macros no modo VISTA DE ESTRUTURA um grupo de macros

Quando o processo de execução de um grupo de macros é iniciado, a primeira 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 na BARRA DE FERRA-

MENTAS.

3. Escrever um nome para o grupo de macros junto da primeira

acção na coluna NOME DA MACRO.

4. Guardar as alterações.

O grupo de macros apresentado na figura II.7.5, denominado por “Ges-tao Menu”, é constituído por duas macros relacionadas: “AbrirMenu” e “FecharMenu”. A primeira executa as acções AbrirFormulário e Maximizar, enquanto que a segunda envia uma mensagem para o ecrã (CxMsg) e fecha o formulário (Fechar).

Page 335: Access manual de base de datos , excelente xp

II.7. MACROS EM MSACCESS 335

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 “Fechar-Menu” no grupo de macros “Gestão Menu”, deve escrever Gestao Menu.FecharMenu.

7.6 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 con-dição for verdadeira. Nas condições podem ser utilizados nomes de campos, controlos, fórmulas e funções do MSAccess. 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 MSAccess. Assim, o MSAccess 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 na BARRA DE FERRAMENTAS.

3. Activar o botão COMPILAR na BARRA DE FERRAMENTAS para

abrir o construtor de expressões (Figura II.7.6).

Page 336: Access manual de base de datos , excelente xp

336 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Fig II.7.6 Janela do construtor de expressões

4. Inserir uma expressão que o MSAccess possa avaliar como ver-

dadeira ou falsa. No nosso exemplo, vamos inserir a expressão

DContar(“*”;”T-Pacientes”)>0 que verifica se o

número de registos da tabela T-Pacientes é superior a zero.

5. Guardar as alterações.

Quando executar a macro, o MSAccess avalia a primeira expressão condicional. Se a condição for verdadeira, o MSAccess executa a acção nessa linha e todas as acções imediatamente a seguir que sejam pre-cedidas de reticências (...) na coluna CONDIÇÃO. Se a condição for falsa, o MSAccess ignora a acção e todas as acções imediatamente a seguir que sejam precedidas por reticências 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.

7.7 ATRIBUIR MACROS A ACONTECIMENTOS

Consideremos um acontecimento como uma acção específica que ocor-re num ou com um determinado objecto. Os acontecimentos poderão ser uma qualquer actividade despoletada pelo utilizador como mover o

Page 337: Access manual de base de datos , excelente xp

II.7. MACROS EM MSACCESS 337

Figura II.7.7 Janela com as propriedades do controlo Nome com os respectivos acontecimen-tos

mover o rato, fazer clique ou duplo clique sobre um controlo, abrir ou fechar um formulário etc. Por exemplo clicar num objecto ou num controlo é o acontecimento Ao fazer clique (este acontecimento poderá ocorrer no objecto botão). Poderemos 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.7.7), escolhemos um acontecimento e, em seguida, especificamos a macro que irá ser executada quando ocorrer este acontecimento.

7.7.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 con-trolo. Para atingir este objectivo devemos:

Page 338: Access manual de base de datos , excelente xp

338 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.7.8 Selecção de uma macro na janela com as proprie-dades de um objecto

1. Visualizar o objecto no modo VISTA DE ESTRUTURA.

2. Seleccionar o objecto e clicar no botão PROPRIEDADES na

BARRA DE FERRAMENTAS.

3. Clicar no separador ACONTECIMENTO.

4. Seleccionar a caixa do acontecimento que pretende utilizar.

5. Clicar na caixa de combinação e, em seguida, clicar na macro

que se pretende associar ao objecto. (figura II.7.8)

7.7.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 activar o botão PROPRIEDADES na

BARRA DE FERRAMENTAS.

3. Clicar no separador ACONTECIMENTO.

4. Clicar no acontecimento ao qual pretende atribuir uma macro.

5. Seleccionar o botão CONSTRUIR. (figura II.7.9)

Page 339: Access manual de base de datos , excelente xp

II.7. MACROS EM MSACCESS 339

Figura II.7.9 Opções do construtor

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

Page 340: Access manual de base de datos , excelente xp

340 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.7.10 Definição da acção AbrirRelatório para a macro de Impressão do relatório

7.8 EXERCÍCIO GUIADO

Para exemplificar a utilização de macros na base de dados do Consultó-rio do Dr.Dentinho, vamos criar uma macro que execute um conjunto de acções de uma forma automática. O objectivo final desta macro será o de imprimir um relatório dos tratamentos específicos efectuados pelos pacientes. Criar uma macro

Na janela BASE DE DADOS, premir o botão e em seguida,

clicar no botão . Depois de depararmos com a janela de Macros no modo VISTA DE ESTRUTURA, posicione-se na primeira linha da coluna “Acção” e, seleccione a caixa de combinação de forma a escolher o tipo de acção que pretende 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, a vista a utilizar para a sua visuali-zação, tal como é apresentado na Figura II.7.10.

Em seguida, vamos introduzir a acção Maximizar que permite visuali-zar o relatório em toda a extensão da janela da base de dados, e poste-riormente inserimos a acção CxMsg que terá um papel informativo. De

Page 341: Access manual de base de datos , excelente xp

II.7. MACROS EM MSACCESS 341

Figura II.7.11 Definição da acção CxMsg para a macro de Impressão do relatório

Figura II.7.12 Definição da acção Imprimir para a macro de Impressão do relatório

facto, esta acção provocará o aparecimento de uma caixa que apre-sentará uma mensagem que antecede a impressão do relatório. (figura II.7.11)

Finalmente, inserimos a acção que irá efectuar a impressão do relatório, tal como é apresentado na seguinte Figura II.7.12.

Atribuir Macros a acontecimentos Vamos agora criar uma nova macro associada a um acontecimento. Como exemplo, vamos considerar o processo de registo de um trata-mento Geral efectuado por um Paciente. Suponhamos que ao introdu-zirmos o código do Paciente deverá ser inserida de uma forma automá-tica a data de tratamento, supostamente no dia em que este registo é feito.

Page 342: Access manual de base de datos , excelente xp

342 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura II.7.13 Definição do acontecimento Depois de actualizar referente ao controlo “cod Paciente”

Para salvaguardar esta situação, teremos de criar uma macro associada ao acontecimento de inserção do código do Paciente. Assim, devemos abrir o formulário “F-TratamentosGeraisEfectuados” em VISTA DE

ESTRUTURA e, em seguida, seleccionamos a caixa de texto referente ao

código do Paciente e clicamos no botão PROPRIEDADES na BARRA DE

FERRAMENTAS.

Depois de depararmos com a janela das propriedades do controlo “cod Paciente” devemos seleccionar o acontecimento Depois de actua-lizar (figura II.7.13) e em seguida clicar no botão CONSTRUIR. Na janela (Figura II.7.9) que aparecerá no ecrã seleccionamos CONS-TRUTOR 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 “ActualizarDataTratamento”. Em seguida, vamos introduzir duas acções, a primeira apresentará um aviso com uma informação que antecipará a actualização da data de tratamento e a segunda efectuará essa actualização. Configure a macro com as acções e respectivos argumentos, tal como é apresentado na figura II.7.14.

Page 343: Access manual de base de datos , excelente xp

II.7. MACROS EM MSACCESS 343

Figura II.7.14 Definição das acções CxMsg e DefinirValor para a macro de actualização da Data do tratamento

Figura II.7.15 Resultado da execução da m acro Depois de inserido um novo tratamento

Quando activar o formulário “F-TratamentosGeraisEfectuados” e proce-der a uma inserção de um novo registo, através da inserção de um novo código de Paciente, visualizará a caixa de diálogo e depois de fazer Ok será feita a alteração automática da “Data de Tratamento”. (figura II.7.15)

Page 344: Access manual de base de datos , excelente xp

344 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Page 345: Access manual de base de datos , excelente xp

PARTE III

O VBA permite de uma forma concreta manipular os diversos objectos existentes na Base de Dados. A sua utilização permite ao utilizador, mais experiente, a realização de acções, tais como, a tomada de uma decisão ou a repetição de várias acções, que seriam impossíve is sem o recurso a uma ferra-menta de programação (VBA). Neste capítulo irão ser aborda-dos 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 eficiente e amigável o trata-mento de dados.

Page 346: Access manual de base de datos , excelente xp
Page 347: Access manual de base de datos , excelente xp

1 VBA - Microsoft Visual Basic for Applications

1.1 INTRODUÇÃO À PROGRAMAÇÃO EM VBA

O objectivo deste capítulo é o de fornecer um conjunto de noções bási-cas e exemplos de programação em VBA, que permitam ao utilizador, com uma razoável experiência na utilização do MSAccess, construir pequenos programas que aumentem a eficiência e optimização das suas bases 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 (“Consultório do Dr. Dentinho”), facilmente se adaptarão às próprias bases de dados do leitor.

1.2 CARACTERÍSTICAS DA PROGRAMAÇÃO EM VBA

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

Page 348: Access manual de base de datos , excelente xp

348 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

que é, actualmente, o suporte de programação nas principais aplicações do Microsoft Office. Deste modo, aumenta-se a eficiência do programa-dor, que encontrará métodos semelhantes no Word, Excel, Project, Access XP... O utilizador que já possui alguma experiência de programação, irá encontrar muitos conceitos e estruturas familiares, como variáveis, con-dições, ciclos repetitivos, entre outras. O VBA é uma linguagem de pro-gramação estruturada, que permite gerir as estruturas de dados e os objectos concebidos 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 XP manipula objectos, que vão desde a própria base de dados, passando pelos nossos conhecidos formulários, relatórios, consultas,... até janelas, caixas de diálogo, folhas de cálculo do Excel, documentos do Word,... . Por outro lado, encontra-se uma filosofia de eventos (acções reconhecidas por um objecto), aos quais se associam determinados métodos, instruções e funções de VBA, que já se encon-tram disponíveis na própria linguagem, como por exemplo:

• efectuar um cálculo num formulário, após a escolha de uma determinada 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 (Afte-rUpdate);

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

1.2.2 O ambiente de desenvolvimento do VBA

Como já referimos, o MSAccess XP suporta a linguagem de programa-ção orientada por objectos – VBA, possuindo para tal estruturas pró-

Page 349: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 349

prias, tais como: colecção, objectos, propriedades, métodos e Eventos (Figura III.1.1), que passarei a descrever.

Figura III.1.1 Forma esquemática de alguns dos elementos fundamentais da programação em VBA

Objectos e Classes O Visual Basic for Applications é uma linguagem de programação orien-tada por objectos, como já foi referido. Os objectos são entidades das mais diversas origens, tais como carros, telemóveis, vídeos, etc. Os objectos no VBA possuem propriedades, executam métodos e respon-dem a eventos. Os objectos, tal como acontece na vida real, são agrupados por mode-los ou espécies (os Siemens si45, Siemens s45 e Siemens 45 perten-cem à classe dos telemóveis), também em VBA os objectos, por exem-plo, 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 colecções de objectos abertos no momento, Formulários (Forms), Rela-

OBJECTOS OBJECTS

Têm Associadas Podem

Responder a

Têm Associados

CÓDIGO Que constitui A resposta

A cada evento

EVENTOS EVENTS

PROPRIEDADES PROPERTIES

MÉTODOS METHODS

Page 350: Access manual de base de datos , excelente xp

350 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

tórios (Reports) e Módulos (Models). Cada um dos Formulários e rela-tórios contém, por sua vez, uma colecção de controlos. O objecto Aplicação (Application) possui ainda dois objectos especiais: o objecto Screen1 e o objecto DoCmd2. O objecto Screen possui algu-mas propriedades 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 (Figura III.1.2 e Figura III.1.3).

Figura III.1.2: Código exemplificativo da utilização dos objectos Screen e DoCmd

Figura III.1.3: Resultado do Formulário na 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 possamos correr diversas acções do Microsoft Access XP a partir do Visual Basic for Applications. Por exemplo, podemos utilizar o método “OpenForm” do objecto “DoCmd” para abrir um formulário.

Page 351: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 351

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 fazem 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ário. Outro exemplo será Forms.Item (0), que se refere ao pri-meiro Formulário da colecção. O MSAccess XP numera os objectos dentro de uma colecção, a partir de zero (0) até NomeColecção.Count - 1. Por exemplo, poderíamos determinar o número de formulários abertos por referência à proprie-dade Count da Colecção Formulários: Forms.Count. Podemos ter acesso às propriedades de um objecto da base de dados, quando nos encontramos no modo de estrutura (Design View) e ace-demos ao menu “Ver”, opção “Propriedades”, ou então, clicamos no botão propriedades da barra de ferramentas (Figura III.1.4 e Figura III.1.5).

Figura III.1.4: acesso às propriedades dos objectos pela barra de ferramentas

3 O termo objecto está aqui referido no sentido de objecto individual (controlo) ou como colecção de objectos.

Page 352: Access manual de base de datos , excelente xp

352 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.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 pas-sar 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 apontar para o objecto. Os métodos (relacionados com os objectos) são menos evidentes que as propriedades. Enquanto as propriedades de um objecto podem ser visualizadas numa caixa própria, para isso existente na fase de dese-nho, não existe no ambiente de trabalho nada semelhante que nos per-mita identificar os métodos de cada objecto. No entanto, o MSAccess XP oferece-nos uma ajuda bastante útil nesta questão. Quando escre-vemos o nome de um objecto numa instrução de código, associado a um evento, na fase de desenho, o MSAccess XP faz aparecer uma cai-xa de listagem com todas as propriedades e métodos previstos para o tipo de objecto em causa (Figura III.1.6).

Page 353: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 353

Figura III.1.6: Caixa de listagem com propriedades e métodos referente ao objecto

Muitos métodos aceitam parâmetros que permitem especificar melhor o modo de actuação do método sobre o objecto. Por exemplo, pode-se indicar ao método OpenRecordset4 se este está a criar um conjunto de registos de uma tabela local, um conjunto dinâmico ou apenas uma cópia só para leitura. Um outro exemplo especialmente importante é o objecto DoCmd, visto interagir com uma grande quantidade de métodos a utilizar por qualquer utilizador nos vários estágios do desenvolvimento dos seus programas. O DoCmd possui muitos métodos, tais como, Close, OpenForm, GotoControl, FindRecord, RunCommand e muitos outros (Figura III.1.7).

4 Este método permite aceder/abrir os registos de uma tabela, através do objecto Recordset. O objecto Recordset é a representação dos registos de uma tabela numa Base de Dados. Para utilizar o objecto Recordset terá que recorrer-se a um outro objec-to, de nível superior, que é o Database. Este objecto representa uma base de dados aberta. Por exemplo para abrir a tabela “TPacientes” implica as seguintes instruções:

set BaseDeDados=OpenDatabase(“DrDentinho.mdb); Set TabelaPacientes=BaseDeDados.OpenRecordset(“TPacientes”). As variáveis BaseDeDados e TabelaPacientes são variáveis que referenciam os objec-tos Database e Recordset, logo designam -se por variáveis-objecto.

Page 354: Access manual de base de datos , excelente xp

354 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.7:Alguns Métodos do objecto DoCmd

Muitos dos métodos do DoCmd requerem argumentos, que especificam a forma de actuar do método e, por vezes requerem também argumen-tos opcionais. Sempre que o utilizador não especifique valores para os argumentos opcionais, o método utiliza os valores por defeito, para o parâmetro. Por exemplo, sempre que haja necessidade de fechar um formulário no Microsoft Access XP, podemos utilizar o método Close do objecto DoCmd. 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 Access XP, VBA, ADO ou DAO). O segundo argumento requer o nome do for-mulário. O argumento opcional diz ao Access XP se deve ou não gravar qualquer alteração que tenha sido feita no formulário, através de acSa-veYes, caso se pretenda gravar ou acSaveNo caso contrário. 5 As constantes intrínsecas são constantes fornecidas pelo MSAccessXP, VBA, ADO ou DAO. Quando são fornecidas pelo AccessXP, os dois primeiros caracteres iniciam -se com “ac”, que quer dizer Access. Se são do Visual Basic for Application 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.

Page 355: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 355

Podemos invocar o método Close (Figura III.1.8) utilizando a seguinte sintaxe:

DoCmd.Close acForm, "Menu Principal", acSaveYes

Figura III.1.8: O método Close e os seus argumentos

Muitos dos métodos do DoCmd estão direccionados para um objecto individual (controlo), como por exemplo o método GotoControl atribui o focus6 a um controlo específico no formulário. Também poderíamos utilizar o método SetFocus com o mesmo objectivo. Eventos Em VBA um evento é basicamente uma resposta de um objecto a uma ordem ou acção do utilizador, a partir de código escrito previamente e que constitui o procedimento (procedure). O evento Click, por exemplo, que utilizamos na nossa aplicação, responde à pressão do dedo do utili-zador sobre a tecla esquerda do rato, em cima do controlo – Botão de Comando, executando o código que lhe foi inserido. Cada objecto possui um conjunto de eventos associados. Para saber quais, basta um clique na seta colocada à direita da caixa de eventos, na janela de código, acção que abre uma lista de eventos (Figura III.1.9).

6 Focus é o nome dado ao estado de um controlo, quando este se encontra activo.

Page 356: Access manual de base de datos , excelente xp

356 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.9: Alguns Eventos possíveis do objecto Formulário (“Form”)

Esta lista de eventos pode ser percorrida com recurso à barra de deslo-camento. Para além do evento Click, temos muitos outros eventos, como por exemplo, quando se trabalha com formulários e se pretende validar dados, activar ou desactivar controlos, trocar o controlo que pos-sui o Focus, abrir um formulário e fechar um formulário. A título de exemplificação, vamos criar um procedimento de evento associado a uma caixa de texto (TextBox) com o evento MouseMove (Figura III.1.10):

Figura III.1.10: Evento MouseMove aplicado ao objecto Rótulo24

Sempre que se passe com o ponteiro do rato por cima (MouseMove) do objecto Rótulo24 que contém o texto “Dr.Dentinho”), 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.1.11).

Page 357: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 357

Rótulo24.Move Int((1000 - 700 + 1) * Rnd + 700), Int((2300 - 1300 + 1) * Rnd + 1300), 2380, 500)

Figura III.1.11: 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 utilizamos 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 necessidade de recorrer à função INT, para converter os valores deci-mais para inteiros. Também tivemos que enquadrar valores, por exem-plo, 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 resul-tado apresenta-se nas figuras III.1.12 III.1.13:

Figura III.1.12: Aplicação do evento Move

Page 358: Access manual de base de datos , excelente xp

358 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.13: Resultado da aplicação do evento e acção Move

1.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 Proce-dures). Estes últimos não fazem parte do âmbito deste livro. Os procedimentos contêm dentro de si conjuntos de instruções que executam determinadas acções sobre os objectos, controlos ou dados da Base de Dados. O código elaborado em VBA, existente em procedi-mentos, é armazenado no interior de Módulos. O Microsoft Access XP oferece-nos dois tipos de módulos distintos: Módulos de Classe e Módu-los Padrão. Os módulos de classe 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, podemos associar a cada um destes objectos e por sua vez aos seus controlos um conjunto de procedimentos, que serão carregados em memória sempre que o formulário ou relatório seja activado.

Page 359: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 359

Figura III.1.14: Módulo de Classe ou Módulo de Formulário

Estes procedimentos são associados a eventos de determinados con-trolos, pelo que serão designados de procedimentos de eventos (figura III.1.14).

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 associar a estes módulos um conjunto de procedimentos, isto é, o códi-go de programação em VBA, deve ser desenvolvido em procedimentos, que serão guardados dentro destes módulos (Figura III.1.15).

Figura III.1.15: Módulo Padrão

Page 360: Access manual de base de datos , excelente xp

360 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.16: Organização do Código em Visual Basic for Applications

Fica então claro que em VBA, podemos utilizar Módulos de Classe e Módulos Padrão, sendo ambos constituídos por procedimentos que podem ser Funções, SubProcedimentos ou Propriedades de Procedi-mentos, conforme representado na figura seguinte (Figura III.1.16).

SubProcedimentos São procedimentos que executam uma determinada acção, não devol-vendo qualquer valor. Estes procedimentos consistem numa série de instruçõ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 Sub-Procedimento, sendo automático quando este se encontra ligado a um evento de um determinado objecto (Figura III.1.17).

Figura III.1.17 SubProcedimento e SubProcedimento ligado a evento

Projecto em Visual Basic Application

Módulos de Classe

Módulos Padrão

Procedimentos

Funções SubProcedimentos

Page 361: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 361

Os nomes dos SubProcedimentos devem iniciar-se com uma letra e não podem conter mais que 255 caracteres, palavras reservadas do VBA e nomes de funções. Os SubProcedimentos podem conter argumentos, que serão colocados após o nome do SubProcedimento entre parênte-ses. Caso contenha mais do que um argumento, estes são separados por vírgulas. Uma forma fácil, na familiarização de SubProcedimentos, consiste na utilização de um assistente de botões de comando. Estes procedimen-tos descritos 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 assistente é activado permitindo escolher uma entre várias acções para uma determinada categoria (Figura III.1.18).

Figura III.1.18 Assistente de botões de comando

Em seguida o assistente cria um SubProcedimento, onde gera o código necessário para realizar a acção pretendida em relação ao botão de comando escolhido (Figura III.1.19).

Page 362: Access manual de base de datos , excelente xp

362 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.19: SubProcedimento gerado pelo Assistente Botões de Comando

Podemos criar procedimentos com instruções VBA através de duas formas, 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 “Ferramentas”, existente no menu do Microsoft Access XP, esco-lher 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 “SubProcedimento” [Sub]. Devemos terminar esta opção escre-vendo o nome para o SubProcedimento (Figura III.1.20 e Figura III.1.21).

Figura III.1.20 Criar um novo Procedimento

Page 363: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 363

Figura III.1.21 Criar novo SubProce-dimento

A chamada a um SubProcedimento é realizada através da palavra reservada do VBA – CALL – seguida do nome do SubProcedimento ou simplesmente só o nome do SubProcedimento (Figura III.1.22).

Figura III.1.22 Invocar um SubProcedimento

Funções As funções são procedimentos que diferem dos SubProcedimentos basicamente em dois sentidos. Em primeiro lugar, as Funções são pro-cedimentos que devolvem valores, como resultado de um cálculo. Em

Escrever o nome para o SubProcedimento

Invocar os SubProcedimentos

Page 364: Access manual de base de datos , excelente xp

364 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

segundo lugar, as Funções nunca são utilizadas para definir procedi-mentos desencadeados por eventos. Estas estão associadas a proce-dimentos que tenham necessidade de retorno de valores, no caso das funções definidas pelo utilizador ou mesmo as funções pré-definidas pelo VBA (figura III.1.23).

Figura III.1.23: Chamada à Função “total()” com retorno do valor da variável “soma”

Neste exemplo podemos ver claramente o recurso à função “Total()” para cálculo do valor total dos aparelhos. Após o cálculo dentro da fun-ção existe necessidade que esta devolva o valor calculado de onde foi chamada, de forma a colocar o resultado final (valor calculado) na caixa de texto (texto6) (figura III.1.24).

Figura III.1.24: Resultado da Função “total()” com retorno do valor da variável “soma”

Caixa de Texto6

Page 365: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 365

As Funções são procedimentos realizados através de instruções VBA, enquadrados entre as palavras-chave “Function” e “End Function”. A chamada a uma Função é realizada da seguinte forma: variável = NomedaFunção () (Figura III.1.25).

Figura III.1.25: Chamada à Função “mostrarvalor()”

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 23). Podemos sempre terminar a Função utilizando a pala-vra reservada “Exit Function”, mesmo que não tenhamos avaliado a totalidade das expressões. Qualquer Função pode conter mais do que um “Exit Function”. Apesar de admitirmos que as Funções são diferentes dos SubProcedimentos, 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.1.26). Uma Função pode ser criada utilizando a mesma metodologia dos SubPro-cedimentos.

Chamada à Função

Page 366: Access manual de base de datos , excelente xp

366 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.26 Exemplo de Função com

comportamento idêntico a um SubProcedimento Neste exemplo da Figura III.1.26, 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 possibilidade que estas têm de devolver valores ao procedimento de chamada (Figura III.1.27).

Figura III.1.27: Função com retorno de valores ao procedimento de onde foi chamada

Page 367: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 367

No exemplo da Figura III.1.27, a função “Validade” devolve o valor zero (0) ou um (1) em consonância com a relação entre a Data Actual e o parâmetro de entrada x – Data de Validade, para o procedimento de onde foi chamada. Em seguida, e já no SubProcedimento, o valor devolvido servirá de condição na saída da acção1 – “Encontra-se dentro da validade” – ou acção2 – “Encontra-se fora da validade” (Figura III.1.28).

Figura III.1.28 Resultado da Função Validade

1.2.4 Janela do Editor de Visual Basic – VBE Windows

Para criar código no Microsoft Access XP é necessária a abertura do ambiente de trabalho do Visual Basic 6.0, no caso concreto a janela do editor do Visual Basic (Figura III.1.28). A abertura desta janela implica um dos seguintes procedimentos:

• Clicar na colecção de objectos “Módulos” e em seguida escolher a opção “Estrutura” ou “Novo”, consoante se trate da abertura de um “Módulo” já existente ou de um novo;

• Clicar na colecção de objectos “Formulários” ou “Relatórios” e em seguida na barra de ferramentas “Base de Dados”, escolher

o ícone “Código” ( );

Page 368: Access manual de base de datos , excelente xp

368 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

• Entrar em modo de estrutura de um formulário ou relatório e depois recorrendo à barra de ferramentas “Estruturar Formulário”

ou “Configurador de Relatórios” escolher o ícone “Código” ( ); • Entrar em modo de estrutura de um formulário ou relatório e

recorrendo às propriedades de qualquer objecto ou controlo, escolher qual o evento a associar. Por fim através do construtor de expressões ( ), escolher a opção “Construtor de Código”. Nesta última opção podemos sempre escolher um procedimento já existente no evento determinado.

Nesta janela existem muitas outras, as quais estão associadas a dife-rentes funções, em contexto de programação.

Figura III.1.28 Janela do Editor de Visual Basic

Janela de Código (Code Window) Esta janela (Figura III.1.30) é utilizada para escrever ou alterar código em Visual Basic sob a forma de procedimentos: SubProcedimentos ou Funções. Podem existir várias janelas de código dependendo do núme-ro de módulos existentes.

Page 369: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 369

Figura III.1.30: Janela de Código

Janela do Explorador de Projectos (Project Explorer Window) Nesta Janela (Figura III.1.31) são apresentados, hierarquicamente, todos os projectos existentes e todos os objectos neles contidos.

Figura III.1.31 Explorador de Projectos

Propriedades da Janela (Properties Window) Esta janela (Figura III.1.32) mostra-nos todas as propriedades dos objectos/controlos seleccionados e a sua configuração actual.

Page 370: Access manual de base de datos , excelente xp

370 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.32 Propriedades

A Janela Imediato (Immediate Window) Esta janela (Figura III.1.33) permite de imediato testar o código de VBA nela digitado.

Figura III.1.33: Janela Imediato

Janela Local (Locals Window) Nesta janela (Figura III.1.34) são apresentadas todas as variáveis decla-radas no procedimento corrente, bem como os seus valores actuais.

Figura III.1.34 Janela Local

Page 371: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 371

Janela de localização de objectos (Object Browser Window) Nesta janela (Figura III.1.35) 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 XP, etc.

Figura III.1.35 Janela de localização de objectos

Janela de Controlo (Watch Window) Esta Janela (Figura III.1.36) surge automaticamente quando são detec-tadas expressões (numa secção de código identificado como “Watch Expression”) que correspondem a uma determinada condição, impli-cando a paragem do código nesse preciso ponto.

Figura III.1.36 Janela de Controlo

Page 372: Access manual de base de datos , excelente xp

372 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

1.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 pro-gramação em Access XP. Tipos de dados Em Visual Basic Applications existem sete tipos fundamentais de dados que apresentamos na figura III.1.37.

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,402823E28

Double # 8 bytes

Negativo: de -1,797693E308 a -4,940656E-324 Positivos: de 4,940656E-324 a 1,797693E308

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 carácter Qualquer valor numérico (até double) ou string

Normalmente uma grande parte dos tipos de dados do VBA são sufi-cientes para referenciar os tipos de campos existentes nas tabelas do Access XP, mas por vezes é necessário uma certa adaptação, como se pode ver pela tabela da figura III.1.38.

Figura III.1.37 Tipos de dados predefinidos do Visual Basic Applications

Page 373: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 373

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 (Number) – Byte Byte

Número (Number) – Inteiro (Integer) Integer

Número (Number) – Inteiro Longo (Long Integer) Long

Número (Number) – Simples (Single) Single

Número (Number) – Duplo (Double) Double

Objecto OLE (OLE Object) Byte

Texto (Text) String

Sim/Não (Yes/No) Boolean

Hiperligação (Hyperlink) String

Figura III.1.38 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. 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áveis no código VBA, para armazenar temporariamente valores (dados), calcular resultados ou lidar com qualquer objecto da base de dados (figura III.1.39).

Figura III.1.39 Declaração de variáveis

Page 374: Access manual de base de datos , excelente xp

374 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 caracte-res, ser única no seu âmbito de aplicação e não ser uma palavra reser-vada do VBA. Outra forma de guardar dados no VBA é utilizando cons-tantes. Uma constante representa um conjunto de dados fixo, não exis-tindo 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_Dente=”Canino”.

O VBA possui um vasto conjunto de constantes intrínsecas, que forne-cem valores fixos para os parâmetros de funções e expressões (ver anexo III). 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 utilizadas 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 “Require Variables Declaration”. No menu “Tools” a opção “Options” apresenta o quadro da figura III.1.40.

Figura III.1.40 Menu de declaração de variáveis

Page 375: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 375

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 explicita-mente todas as variáveis (Figura III.1.41). No caso da opção não estar activada as declarações das variáveis serão feitas implicitamente.

Figura III.1.41 Declaração obrigatória de todas as variáveis

Âmbito das variáveis e constantes A declaração de uma variável (Figura III.1.42) 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).

Modulo Dim (na secção Declarations de um módulo Padrão ou de um módulo de Classe – Formulário/Relatório)

Publico Public (na secção Declarations de um módulo Padrão).

Figura III.1.42 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

Page 376: Access manual de base de datos , excelente xp

376 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

dentro de uma série de procedimentos, pois cada variável é local ao seu procedimento. Cada procedimento poderá alterar a sua variável local sem que por isso sejam afectadas as outras variáveis denominadas da mesma forma, existentes nos outros procedimentos (Figura III.1.43).

Figura III.1.43 Declaração de variáveis a nível local

Nos procedimentos deste exemplo (Figura III.1.43) 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 dez (10). As variáveis locais só existem e mantêm valor enquanto se encontram dentro do seu âmbito, o procedimento onde foram declaradas, mas per-dem o valor e são destruídas quando o procedimento finaliza. Existem outro tipo de variáveis de âmbito local, que são denominadas estáticas (static). Estas diferem das anteriores, na medida em que man-têm o seu valor e não são destruídas até a aplicação terminar, mas con-tinuam a ser locais e nenhum outro procedimento poderá aceder a elas (Figura III.1.44 e Figura III.1.45).

Page 377: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 377

Figura III.1.44 Procedimento com utilização de uma variável estática

Figura III.1.45 Resultado da utilização de uma variável estática

Neste exemplo (Figura III.1.44) a variável estática “contagem” permite acumular o número de vezes que o utilizador venha a clicar no botão de comando “Entrar” (Figura III.1.45), sem sair da aplicação, mostrando em seguida o resultado no controlo com o nome “conta”. 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 reser-vada “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 (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 (formu-lário/relatório) serão preservadas enquanto o formulário/relatório estiver carregado em memória (Figura III.1.46). No exemplo da figura III.1.46 podemos observar o comportamento das variáveis definidas a nível de módulo de classe (formulário/relatório). Como estão definidas na zona de declarações do módulo, serão acedidas por qualquer procedimento que venha a ser criado.

Page 378: Access manual de base de datos , excelente xp

378 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.46 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 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 (formulário/relatório) (Figura III.1.47).

Figura III.1.47 Variáveis declaradas a nível de âmbito geral

Page 379: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 379

Na figura III.1.47 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”. O procedimento “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”. O procedi-mento “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”. Operadores Os operadores são fundamentais na construção de expressões no Microsoft Access XP e no VBA. Existem várias categorias de operado-res, descritas nos quadros das figuras III.1.48, III.1.49, III.1.50, III.1.51 e III.1.52).

Aritméticos

* Multiplicação

+ Adição

- Subtracção

/ Divisão(Real)

\ Divisão(Inteira)

^ Exponencial

Figura III.1.48 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.1.49 Operadores – Comparação Numérica

Page 380: Access manual de base de datos , excelente xp

380 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Concatenação e Comparação de Strings

& Concatenação de strings

Like Comparação de strings

Figura III.1.50 Operadores – Concatenação e Comparação de strings

Lógicos

And Conjunção

Eqv Equivalência

Imp Implicação

Not Negação

Or Disjunção

Xor Exclusão

Figura III.1.51 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.1.52 Operadores – Miscelânea 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.1.53) co-tumam dividir-se em: estruturas de decisão com base numa condição,

Page 381: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 381

estruturas de decisão ou selecção com base numa expressão e estrutu-ras de repetição (ciclos) que se dividem em ciclos com base num conta-dor ou com base numa condição. As secções seguintes fazem uma abordagem pormenorizada destas estruturas, recorrendo a vários exemplos práticos, de forma a permitir uma maior familiarização com estas estruturas.

Figura III.1.53 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.1.54)

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 382: Access manual de base de datos , excelente xp

382 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Condição 1Outro conjunto de

Instruções

Conjunto deInstruções

Sequência normaldo Programa

Falsa

Verdadeira

IFELSE

THEN

END IF

Figura III.1.54 Estrutura de Decisão – If...Then ...Else

Com o exemplo prático que apresentamos de seguida fica exposta a forma como se comporta a estrutura de decisão com uma condição.

Figura III.1.55 Estrutura de decisão a uma condição

Como se pode ver pela figura III.1.55, se o custo total do tratamento for inferior a 500€, então a cor de fundo da caixa de texto (Custo Total) muda para cor-de-rosa – RGB(250,100,250), devido à utilização da fun-ção RGB e por alteração dos parâmetros RGB(vermelho, verde, azul).

Page 383: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 383

Os valores dos parâmetros devem ser valores inteiros, tendo todos eles como intervalo de aceitação, valores entre zero (0) e duzentos e cin-quenta e cinco (255). Caso contrário, a cor de fundo da caixa de texto muda para roxo - RGB(150,100,150) (Figura III.1.56).

Figura III.1.56 Resultado da aplicação da estrutura de decisão

Imaginemos agora para o formulário “Tratamentos Específicos”, que a cor de fundo da caixa de texto “Custo Total” varia segundo os intervalos seguintes: 1<[Custo Total]<=200 - cor azul, 200< [Custo Total]<=500 - cor verde, [Custo Total]>500 – 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 (Figura III.1.57).

Page 384: Access manual de base de datos , excelente xp

384 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Condição 1Outro conjunto de

Instruções

Conjunto deInstruções 1

Sequência normaldo Programa

Falsa

Verdadeira

IFELSEIF

THEN

Condição 2 Condição nFalsa Falsa

Conjunto deInstruções 2

Conjunto deInstruções n

Verdadeira Verdadeira

THEN THEN

ELSEIF ELSE

Figura III.1.57 Estrutura de decisão encadeada

Facilmente podemos notar que a caixa de texto “Custo Total”, irá ter fundos de várias cores em conformidade com as condições impostas (Figura III.1.58):

Valor a determinar para a caixa de Texto “Custo Total”

Cor de fundo da caixa de texto “Custo Total”

1< Custo Total < = 200 Verde

200 < Custo Total <=500 Roxo

Custo Total > 500 Cor-de-Rosa

Figura III.1.58 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.1.59).

Page 385: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 385

Figura III.1.59 Estrutura de decisão encadeada

Neste exemplo, se o valor do Custo Total for superior ou igual a 500, então a cor de fundo da caixa de texto será cor-de-rosa. Se o Custo Total for superior a 200, mas inferior a 500, então a cor de fundo da caixa de texto será roxo. Se o Custo Total superior ou igual a 1, mas inferior a 200, então a cor de fundo da caixa de texto será verde como podemos ver pelo resultado (Figura III.1.60). Em qualquer outro caso terá a cor roxo escuro.

Figura III.1.60 Resultado da aplicação da estrutura de decisão encadeada

Page 386: Access manual de base de datos , excelente xp

386 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Na linguagem de programação VBA, bem como em qualquer outra lin-guagem de programação, existe outra estrutura de decisão com a designação SELECT CASE que apresenta algumas vantagens relati-vamente à estrutura de decisão, IF ... THEN ... ELSE. A instrução SELECT CASE (figura III.1.61) 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 espe-cíficos que o procedimento deve executar em cada um desses casos. Normalmente esta estrutura é utilizada quando existe um grande con-junto de situações possíveis.

Select CaseExpressão

CaseValor(es)

CaseValor(es)

CaseElse

Instruções Instruções

[…]

[…] Instruções

Figura III.1.61 Estrutura de decisão SELECT CASE

Veremos, de seguida, um exemplo no qual utilizaremos esta nova estru-tura de programação, em vez de uma série de IF’s encadeados, apli-cando as condições indicadas na figura III.1.62.

Page 387: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 387

Cor de fundo da Caixa de Texto (Custo Total)

Função do VBA Condições para decisão (Valores monetários)

Cor-de-Rosa RGB(250,100,250) [1 – 100]

Vermelho RGB(255, 0, 0) [101 – 200]

Amarelo RGB(255,255, 0) [201 – 300]

Cor-de-Laranja RGB(255,130,40) [301 – 400]

Azul RGB(0, 0,255) [401 – 500]

Verde RGB(0,255, 0) > 500

Figura III.1.62 Condições impostas ao exercício Utilizando um procedimento próprio, vamos criar as instruções necessá-rias, utilizando a estrutura SELECT CASE, para resolver o exercício proposto (Figura III.1.63).

Figura III.1.63 Código de programação utilizando a estrutura SELECT CASE

Como se pode analisar, pela Figura III.1.63, a estrutura de decisão SELECT CASE, vai dar origem a vários fundos de cor diferente, para a caixa de texto “Custo Total” (Figura III.1.64), de acordo com o resultado (valor monetário) da caixa de texto “Custo Total” e as condições impos-tas.

Page 388: Access manual de base de datos , excelente xp

388 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.64 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 num número determinado de vezes, de acordo com o contador do ciclo (Figura III.1.65).

Page 389: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 389

Instrução

For i=x toy

Acção 1

Acção n

Início

Instruções

...

Fim

Figura III.1.65 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 da variável contador ultrapassar o valor final, produzindo-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 Pacientes que a clínica DrDentinho possui. Para tal, vamos recorrer a uma estrutura repetitiva centrada num contador (For...Next), de forma a contar o número de registos que a tabela “T-Pacientes” possui (Figura III.1.66).

Page 390: Access manual de base de datos , excelente xp

390 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.66 Procedimento com a estrutura repetitiva – For...Next

O Procedimento está associado ao evento “Click” do botão de comando (Comando26). Fazendo um Click em cima do botão de comando, em tempo de execução, é desencadeado automaticamente o procedimento, dando origem ao resultado apresentado na figura III.1.67.

Figura III.1.67 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 instruções seja executado até que uma condição seja verdadeira.

Page 391: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 391

Vamos construir alguns pequenos programas 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ásicas para implementar um ciclo deste tipo. A primeira consiste em testar a condição, antes de executar o bloco de instruções (Figura III.1.68). Caso a condição se revele falsa à partida, o bloco de instru-ções nunca será executado.

Condição

Bloco deinstruções dentro

do ciclo

Sequência normaldo programa

Verdadeira

Falsa

Figura III.1.68 Ciclo Do While … Loop

Neste exemplo vamos recorrer ao ciclo Do While Loop, para sabermos quantos tratamentos gerais realizou um determinado paciente, como se pode ver pelo conjunto de instruções desenvolvidas (Figura III.1.69):

Figura III.1.69 Instruções de programação, utilizando o ciclo Do While Loop

Page 392: Access manual de base de datos , excelente xp

392 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Na figura já referida, a realização das acções dentro do ciclo Do While é possível enquanto a condição (Not tb.EOF) for verdadeira, isto é, enquanto não se chegar ao último registo da tabela “T-TratamentosGeraisEfectuados” traduzida aqui pela variável objecto tb, as instruções serão repetidamente executadas. Quando a condição for falsa, termina o ciclo Do While, não repetindo mais as acções, posi-cionando-se na linha de instrução imediatamente a seguir à instrução fim de ciclo Loop, dando origem à visualização da caixa de texto (Tex-to28) com o resultado, como se pode verificar pela figura III.1.70.

Figura III.1.70 Resultado da aplicação do ciclo Do While Loop

Condição

Bloco deinstruções dentro

do ciclo

Sequência normaldo programa

Verdadeira

Falsa

Figura III.1.71 Ciclo Do Loop While …

Page 393: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 393

Na segunda forma de implementação do ciclo, o bloco de instruções é executado primeiro e a condição só é testada no fim (Figura III.1.71). Neste caso, o bloco de instruções é sempre executado pelo menos uma vez. Podemos recorrer ao mesmo exemplo para testar este tipo de estrutura (Figura III.1.72).

Figura III.1.72: 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.1.70. Ciclo Do Until ... Loop / Do Loop Until... O ciclo Do Until ... Loop (Figura III.1.73) avalia a condição antes de executar qualquer acção do corpo de ciclo. Se a condição for falsa, exe-cutará o conjunto de acções e continuará a fazê-lo até a condição ser verdadeira.

Page 394: Access manual de base de datos , excelente xp

394 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Condição

Bloco deinstruções dentro

do ciclo

Sequência normaldo programa

Falsa

Verdadeira

Figura III.1.73 Ciclo Do Until ... Loop No caso do ciclo Do Loop Until ...,(Figura III.1.74) é validada a condi-ção depois de executar o conjunto de acções. Se a condição for falsa, voltará a executar o conjunto de acções e continuará a fazê-lo até a condição ser verdadeira.

Condição

Bloco deinstruções dentro

do ciclo

Sequência normaldo programa

Falsa

Verdadeira

Figura III.1.74 Ciclo Do Loop Until ... Em síntese, qualquer ciclo, possui normas próprias que devemos cum-prir para que o controlo da programação esteja sempre do lado do pro-gramador 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 interromper involuntariamente o ciclo através da combi-nação de teclas CONTROL + BREAK.

Page 395: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 395

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 aprenderá 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ísticas, matemáticas, financeiras, etc. Vamos abordar algu-mas 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. 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 recorre a 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 (Figura III.1.75 e Figura III.1.76).

Figura III.1.75 Função MsgBox Figura III.1.76 Função Msgbox

Sintaxe da 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.1.75), devolvendo um valor inteiro, que indica qual o Botão pressionado. Na figura III.1.76 não se pretende saber o valor do botão pressionado mas simplesmente informar o utilizador da mensagem pretendida. A sua sintaxe é a seguin-te:

MsgBox prompt[, buttons] [, title] [,helpfile, context]

Page 396: Access manual de base de datos , excelente xp

396 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Na figura III.1.77 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 omitido, 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 utilizado com o parâmetro anterior.

Figura III.1.77 Parâmetros da função MsgBox

Os Valores que o parâmetro “Buttons” pode ter são os seguintes:

Constante Valor

numérico Descrição

Número e tipo de botões a mostrar

vbOKOnly 0 Só o botão OK

vbOKCancel 1 Botões OK e Cancel

vbAbortRetryIgnore 2 Botões Abort, Retry e Ignore

vbYesNoCancel 3 Botões Yes, No e Cancel

vbYesNo 4 Botões Yes e No

vbRetryCancel 5 Botões Retry e Cancel

Estilo do ícone

vbCritical 16 Mostra o ícone

vbQuestion 32 Mostra o ícone

VbExclamation 48 Mostra o ícone

vbInformation 64 Mostra o ícone

Botão que tem o focus

vbDefaultButton1 0 Primeiro botão tem o focus

vbDefaultButton2 256 Segundo botão tem o focus

vbDefaultButton3 512 Terceiro botão tem o focus

vbDefaultButton4 768 Quarto botão tem o focus

Page 397: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 397

É modal?

vbApplicationModal 0 Modal em relação à aplicação. O utilizador deve res-ponder à MsgBox antes de continuar a trabalhar na aplicação.

vbSystemModal 4096 Modal em relação ao Sistema Operativo. Todas as aplicações ficam suspensas até que o utilizador res-ponda à MsgBox.

Valores adicionais

vbMsgBoxHelpButton 16384 Mostra botão Help

vbMsgBoxSetForeground 65536 Especifica a janela da mensagem como janela de Foreground

vbMsgBoxRight 524288 Alinha o texto à direita

Figura III.1.78 Valores assumidos pelo parâmetro “Buttons”. A tabela da figura III.1.79 mostra qual o valor inteiro de retorno ao pres-sionar o botão ou botões existentes na janela de diálogo da caixa de mensagem MsgBox.

Constante Valor numérico Descrição

vbOK 1 OK

vbCancel 2 Cancel

vbAbort 3 Abort

vbRetry 4 Retry

vbIgnore 5 Ignore

vbYes 6 Yes

vbNo 7 No

Figura III.1.79 Valor de retorno, após pressionar botão da caixa de diálogo MsgBox. O exemplo seguinte vai ajudar-nos a compreender melhor a função MsgBox, sobretudo a aplicação dos seus parâmetros. Neste exemplo vamos utilizar a função MsgBox para encerrar ou não a aplicação que está aberta no momento. Para tal vamos utilizar os parâ-metros seguintes:

• Prompt, contendo a mensagem: “Pretende sair do” & vbCrLf & “Formulário Principal?”;

• Buttons, com os valores ou constantes seguintes: Os botões Yes e No (vbYesNo), o ícone Informação (vbInformation ou

valor numérico 64 - ), Title contendo a mensagem: “Fechar”.

Page 398: Access manual de base de datos , excelente xp

398 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Podemos ver a aplicação destes parâmetros da função MsgBox no procedimento associado ao evento click do botão de comando (Comando25) na figura III.1.80.

Figura III.1.80 Utilização da Função MsgBox no procedimento” sub Comando25_Click()”.

Em tempo de execução, ao clicar no botão “Fechar”, aparecerá de ime-diato a caixa de mensagem da figura III.1.75, obrigando o utilizador a decidir por um dos botões (Yes ou No). Como se pode verificar irá exis-tir um valor devolvido, consoante o utilizador clicar em Yes ou No, sen-do 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 espe-rado e escrever a acção pretendida (Figura III.1.81). Neste caso, se o valor da variável for seis (6) aparece uma segunda caixa de mensagem (figura III.1.76) a agradecer a utilização da base de dados e em seguida ao pressionar o botão OK fecha a aplicação. No caso de o valor da variável ser sete (7), o utilizador continuará com a aplicação aberta, como se pode ver pelo procedimento (“Function MostrarValor”) da Figura III.1.81.

Figura III.1.81 Valor de retorno da MsgBox e posterior escolha

Page 399: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 399

Função InputBox A função InputBox permite ao utilizador interagir com um determinado procedimento, isto é, o utilizador fica habilitado a enviar valores para dentro 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 InputBox (Figura III.1.82).

Figura III.1.82 Função InputBox

A sintaxe da função InputBox é a seguinte: InputBox (prompt [,title][,default][,xPos][,yPos][,helpFile, context]

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ã. Omitido a janela aparece centrada.

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

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.1.83 Descrição dos parâmetros da função InputBox. 7 O “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ção para todos os sistemas. No MSAccessXP os objectos são medidos em “Twips”. Por Exemplo se pretendermos o comprimento de um formulário, o seu resulta-do será de 14205 “Twips”. Um “Twip” é aproximadamente 1/1440 polegadas.

Page 400: Access manual de base de datos , excelente xp

400 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Na figura III.1.83, apresentam-se os parâmetros da função InputBox. Na tentativa de contextualizar a função “InputBox” no projecto “DrDen-tinho”, vamos apresentar um exemplo. No formulário Tratamentos Gerais (Figura III.1.84), sempre que se ache oportuno, o utilizador poderá alterar o valor do custo do tratamento geral para cada tipo de tratamento, em tempo de execução.

Figura III.1.84 Formulário Tratamento Geral

Para tal basta clicar em cima das respectivas caixas de texto do custo do tratamento geral, aparecendo de imediato a caixa de diálogo – InputBox – (Figura III.1.85) para introduzir o novo valor monetário para o respectivo tratamento.

Figura III.1.85 Caixa de diálogo InputBox

Page 401: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 401

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 “Custo Tratamento Geral” do tipo de tratamento indicado (Figura III.1.86).

Figura III.1.86 Resultado da aplicação depois da instrução UPDATE(SQL)

De facto podemos comprovar pela Tabela “T-Tratamento Geral”, que o valor inicial foi alterado, logo após a aplicação da consulta de acção através da instrução “Update” (Figura III.1.87 e Figura III.1.88).

Figura III.1.87 Tabela Tratamento Geral antes

da aplicação da instrução UPDATE (SQL)

Figura III.1.88 Tabela Tratamento Geral depois da aplicação

da instrução UPDATE (SQL), após confirmação

Page 402: Access manual de base de datos , excelente xp

402 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Devemos ter algum cuidado na utilização deste tipo de consultas avan-çadas, visto podermos mesmo eliminar, acrescentar ou actualizar regis-tos 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 valores 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 exemplo é o da figura III.1.89).

Figura III.1.89: código VBA desenvolvido para o exemplo solicitado

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 intro-duzido ou então introduzir num formulário/relatório a data e hora. Vamos então enumerar algumas dessas funções: =Date() Esta função devolve um tipo de dados “Variant” con-

tendo a data de sistema. =Time() Esta função devolve um tipo de dados “Variant” con-

tendo a hora de sistema.

Page 403: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 403

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

= 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 adi-cionar. Os valores são os apresentados na tabela da figura III.1.90.

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

Page 404: Access manual de base de datos , excelente xp

404 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

=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 fun-cionam da mesma forma, devolvendo o mês e o ano, respectivamente.

De uma forma sucinta, o exemplo seguinte apresenta a forma como trabalhar com as funções anteriores (Figura III.1.91):

Figura III.1.91 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 foi o apresentado na figura III.1.92 e figura III.1.93.

Figura III.1.92:Código VBA para chamada ao SubProcedimento “Relógio”

Page 405: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 405

Figura III.1.93 Código desenvolvido em VBA com referência às funções Data e Hora

A visualização da Figura III.1.91, revela que a utilização da função “DatePart” não é suficiente para o tipo de resultado pretendido. Como se sabe, esta função, no caso concreto, daria um valor numérico repre-sentativo 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 processo será realizado para os dias da semana. Mas 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

relógio do computador marcou meia-noite.

Page 406: Access manual de base de datos , excelente xp

406 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Por exemplo, se necessitarmos de saber o tempo de duração de uma determinada operação, devemos colocar a função Timer() antes e depois da 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 diferença constituirá o tempo de duração da operação pre-tendida. Vamos supor que a operação era a seguinte: “Quanto tempo demorou a decidir fechar ou não a aplicação, ou seja, o formulário Prin-cipal?” (figura III.1.94). É necessário ter em atenção que a diferença de segundos de uma determinada operação, só será válida tratando-se do mesmo dia.

Figura III.1.94 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.1.95):

Figura III.1.95 Código VBA para cálculo do tempo da operação fechar formulário

Page 407: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 407

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 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,lenth) Esta função devolve uma string, contendo o

número de caracteres (lenth), a contar da esquerda, da string fornecida pelo utilizador.

=Right(string,lenth) esta função devolve uma string, contendo o

número de caracteres (lenth), a contar da direita, da string fornecida pelo utilizador.

Os argumentos destas duas funções são iguais e String representa o texto a partir do qual os caracteres mais à esquerda ou direita serão mostrados e Lenth representa o número de caracteres a serem mostra-dos, quer à esquerda, quer à direita. =Mid(string;start;lenth) Esta função devolve uma string, contendo

o número de caracteres a partir da especi-ficação feita pelo parâmetro “start”, até ao número de caracteres desejados pelo parâmetro “lenth”.

Esta função apesar de se comportar nos mesmos moldes das funções anteriores, é mais abrangente, visto ter a possibilidade de devolver caracteres 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 tratamento geral do formulário “T-Tratamento Geral”, de imediato surgirá no canto superior direito do formulário o respectivo código do tratamento, como se pode verificar na figura III.1.96.

Page 408: Access manual de base de datos , excelente xp

408 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.96 Resultado da aplicação da função de texto “Left” e “Mid”.

A função de texto “Left” serviu, neste caso, para devolver os quatro (4) caracteres mais à esquerda da caixa de texto referente à “descrição Tratamento Geral”, colocando-os numa variável com o nome “Texto”. Esta nova variável foi trabalhada com a função de texto “Mid” de forma a isolar cada caracter em variáveis diferentes para que aparecessem com tamanhos, tipos e cores de letra diferentes como se apresenta na figura III.1.96. O código de programação utilizado, foi o apresentado na figura III.1.97.

Figura III.1.97: Código de program ação com referencia ás funções “Mid”e” Left”.

Função Format Esta função torna-se útil, quando o utilizador pretende formatar uma expressão de acordo com as suas instruções, ou seja, por exemplo,

Page 409: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 409

quando pretende que uma determinada string passe para letras maiús-culas. 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ên-tesis rectos indicam que o parâmetro não é obrigatório. Sendo assim, os formatos ou são predefinidos ou são criados pelo utilizador. Por exem-plo, se o utilizador recorresse a esta linha de instruções: For-mat(date();”dd mmmm yyyy”), a data visualizada no formulário corres-pondente apareceria com o seguinte formato: 19 Maio 2002, partindo do princípio que esta é a data corrente (de sistema) (Figura III.1.98). O código VBA gerado para este exemplo, está exposto na figura III.1.99.

Figura III.1.98: Resultado da aplicação da função “Format” à função “Date”

Figura III.1.99: Código VBA com recurso à função “Format”

Page 410: Access manual de base de datos , excelente xp

410 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Outros formatos, poderão ser visualizados na ajuda do Microsoft Access XP. 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 programa-dores, sobretudo no que diz respeito ao desenvolvimento de aplicações de gestão. Contudo devido à importância destas funções, serão aqui apresentadas 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 futu-ros. A sua sintaxe é a seguinte:

=Pv(rate,nper,pmt[,fv[,type]]). =Fv() Devolve o valor futuro de um investimento a partir de

pagamentos periódicos constantes e de uma taxa de juros constante. 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 financei-ras, tendo a explicação sido dada na respectiva função. Contudo falta ainda explicar o parâmetro “Tipo”. Este parâmetro representa um valor

Page 411: Access manual de base de datos , excelente xp

III.1. M ICROSOFT VISUAL BASIC FOR APPLICATIONS - VBA 411

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. O parêntesis recto existente nas várias funções, ligado aos parâmetros, quer dizer que esses parâmetros são opcionais. Uma vez esclarecidos os parâmetros e o resultado final das funções financeiras aqui tratadas, vamos de uma forma mais clara apresentar um exemplo concreto da forma como elas trabalham: Um tratamento específico a um ou mais dentes, poderá custar bastante a qualquer paciente que recorra a este serviço. O consultório do DrDen-tinho permite a possibilidade que qualquer paciente possa pagar em suaves prestações mensais. Para tal, instituiu duas formas para este tipo de pagamento: pagamentos em três suaves pagamentos e paga-mentos em seis suaves prestações. A taxa de juro aplicada a qualquer destes casos será sempre uma taxa anual fixa de 8%. Por último, inte-ressa saber ao cliente quanto irá pagar por mensalidade, em qualquer dos dois casos, perante o conhecimento do custo total do tratamento (Figura III.1.100 e Figura III.1.101).

Figura III.1.100: Resultado da função financeira (“Pmt”) para Três Prestações

Page 412: Access manual de base de datos , excelente xp

412 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Figura III.1.101: 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.1.102.

Figura III.1.102 código VBA com recurso há função financeira “Pmt”

Existem outros tipos 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 MSAccess XP como objecto de estudo mais aprofundado dessas funções.

Page 413: Access manual de base de datos , excelente xp

ANEXO I

Page 414: Access manual de base de datos , excelente xp
Page 415: Access manual de base de datos , excelente xp

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

and Requirement Comitee

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 and Languages

CPU – Central Processor Unit

DBMS – DataBase Management Systems

DDL – Data Definition Language

DML – Data Manipulation Language

DSS – Decision Support Systems

EIS – Executive Information Systems

E-R – Entidade-Relacionamento

ES – Expert Systems

FNBC – Forma Normal de Boyce-Codd

Page 416: Access manual de base de datos , excelente xp

416 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

HTML – Hyper Text Mark-up Language

ICAM – Integrated Computer-Aided Manufacturing

MIS – Management Information Systems

MM – Multi Media

MOLAP – Multidimensional OLAP

ODMG – Object Database Management Group

OIS – Office Information Systems

OLAP – On-line Analytical Processing

OLE – Object Linking and Embeding

OLTP – On-line Transaction Processing

PSM – Persistent Stored Models

QBE – Query By Example

ROLAP – Relational OLAP

SBD – Sistema de Bases de Dados

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

SQL – Structured Query Language

TSP – Transaction Processing Systems

VBA – Visual Basic for Applications

VBE – Visual Basic Editor

WYSIWYG – What You See Is What You Get

Page 417: Access manual de base de datos , excelente xp

ANEXO II

Page 418: Access manual de base de datos , excelente xp
Page 419: Access manual de base de datos , excelente xp

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 a co-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 da expressão numérica. Sin-taxe: CHr(expressão numérica)

CInt Converte uma expressão numérica num tipo de dado inteiro (Integer). Sintaxe: CInt(expressão numérica)

CLng Converte uma expressão numérica num tipo de dado inteiro longo (Long Integer). Sintaxe: CLng(expressão numérica)

CSng Converte uma expressão numérica num tipo de dado de precisão simples (Single). Sintaxe: CSng(expressão numérica)

Date Retorna a data corrente do sistema. Sintaxe: Date

DateSerial Converte uma data num número que a representa. Sintaxe: DateSerial(ano,mês,dia)

Page 420: Access manual de base de datos , excelente xp

420 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

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 carac-teres 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: Load-Picture(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 especifi-cado. Sintaxe: Minute(número)

RTrim Suprime espaços à direita de uma variável. Sintaxe: RTrim(string)

Seek Retorna a posição no ficheiro especificado. Sintaxe: Seek(número do ficheiro)

Space Retorna uma cadeia de espaços. Sintaxe: Space(nº de espaços em branco)

Spc Desloca um número de espaços especificados. Sintaxe: Spc(nº de espaços)

Sqr Retorna a raiz quadrada de um número. Sintaxe: Sqr(número)

Str Converte um número em expressão string. Sintaxe: Str(número)

Time Retorna a hora corrente no formato hh:mm:ss. Sin-taxe: Time

TimeSerial Retorna um número que representa a hora corrente. Sintaxe: TimeSerial(hora,minutos,segundos)

Page 421: Access manual de base de datos , excelente xp

ANEXO II. FUNÇÕES DO VBA 421

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 422: Access manual de base de datos , excelente xp
Page 423: Access manual de base de datos , excelente xp

ANEXO III

Este anexo é da responsabilidade de Manuel Oehen Mendes (Advogado, Yolanda Busse, Oehen Mendes & Associados).

Page 424: Access manual de base de datos , excelente xp
Page 425: Access manual de base de datos , excelente xp

Protecção jurídica das bases de dados electrónicas

I – Introdução As bases de dados electrónicas – independentemente do carácter mais ou menos relevante do seu conteúdo – tornaram-se, hoje em dia, uma presença incontornável em quase todos os domínios da informática. Quer pela valia dos dados que armazenam, quer pelos critérios de selecção utilizados, quer pelo modo sistemático como são organizadas (estrutura), quer ainda pela forma como é possível aceder aos dados individualmente, ou por todas estas razões conjuntamente, as bases de dados electrónicas assumem uma extraordinária importância prática no nosso quotidiano informático e um significativo valor económico no mer-cado deste tipo de bens. A concepção e construção destas bases de dados pressupõe, geral-mente, um grande investimento em trabalho e dinheiro e, muitas vezes, revelam também um elevado nível de criatividade dos seus autores. Seja em razão desta criatividade, seja em razão do “mero” investimento que lhes subjazem, as bases de dados, na generalidade dos casos, justificam a concessão de uma protecção legal que evite, além do mais, o aproveitamento injustificado por terceiros do trabalho, investimento ou criatividade alheios. Este desiderato era já alcançado, em certa medida, pelas disposições do Código do Direito de Autor e dos Direitos Conexos (CDADC), que incluem as chamadas compilações ou colectâneas no elenco das obras originais, ou equiparadas a originais, protegidas por este ramo de Direito (artº 3º CDADC). De facto, as bases de dados (à parte a questão controvertida da res-pectiva originalidade em concreto) sempre puderam ser consideradas, à

Page 426: Access manual de base de datos , excelente xp

426 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

partida, como colectâneas ou compilações de obras (elas próprias protegidas ou não) susceptíveis de serem tuteladas pelo Direito de Autor. Exemplo destas compilações são as enciclopédias, as antologias literá-rias, as colectâneas de jurisprudência ou de legislação, etc. A obrigação de proteger estas realidades resultava já, aliás, do artº 2º, 5. da Convenção de Berna, de 1886/1971, de que Portugal é uma das 149 partes contraentes. Todavia, o tema não era suficientemente claro em relação à protecção de muitas das bases de dados electrónicas existentes, por duas ordens de razões. Em primeiro lugar, tanto a Convenção de Berna como o Código do Direito de Autor e dos Direitos Conexos (CDADC) restringem a sua apli-cação às bases de dados que, pela selecção ou disposição das maté-rias, se possam considerar como criações intelectuais, colocando, assim, a questão da determinação, para este efeito, do que se deva entender por “criação intelectual”. Por outras palavras, o Direito de Autor faz depender a atribuição da tutela da verificação de um requisito e, portanto, há que averiguar ou definir, antes do mais, o conteúdo desse requisito. Em segundo lugar, entende-se correntemente que muitas das bases de dados electrónicas actuais não preenchem minimamente esse requisito, utilizando critérios absolutamente banais e comuns, quer de selecção dos dados que as integram, quer de organização ou estruturação des-ses mesmos dados. Não sem que, também na maior parte das vezes, estas bases de dados deixem de pressupor avultados investimentos e muito trabalho para a sua realização, assumindo, igualmente, uma extraordinária importância e utilidade práticas na nossa actual sociedade da informação.

Page 427: Access manual de base de datos , excelente xp

ANEXO III: PROTECÇÃO JURÍDICA DAS BASES DE DADOS ELECTRÓNICAS 427

Bastará dar o exemplo corrente das listas telefónicas e outras do géne-ro... Por todas estas razões e ainda pelo facto de não haver uniformidade de concepções sobre muitos aspectos importantes desta problemática nos países europeus, a União Europeia tomou a louvável iniciativa de avan-çar com uma Directiva de harmonização das legislações dos Estados membros sobre esta matéria (Directiva nº 96/9/CE, de 11.03.1996). Ora, foi precisamente transpondo esta Directiva, que surgiu o nosso Dec-Lei nº 122/2000, de 4 de Julho, que regula actualmente a protecção das bases de dados – electrónicas e não electrónicas – no nosso orde-namento jurídico. De seguida iremos fazer uma breve exposição do regime jurídico que daí resulta para as bases de dados electrónicas, mas ainda antes disso teremos que dizer duas palavras acerca dos programas de computa-dor que lhes estão associados e sobre a relevância que o conteúdo, propriamente dito, dessas bases de dados poderá assumir em certos casos. Começando pelo tema dos programas de computador, convém escla-recer que eles não se confundem com as bases de dados que permi-tem construir e utilizar. Uma coisa é a base de dados e outra o software informático que a organiza e gere, ainda que sem software informático, como é óbvio, não possam existir bases de dados electrónicas ... A base de dados - para o efeito que estamos aqui a considerar - confina-se, pois, ao critério da selecção de dados ou outros elementos indepen-dentes, à disposição ou modo sistemáticos como esses dados estão organizados e à forma como podem ser acedidos individualmente pelos utilizadores. Nisto se traduz a base de dados como objecto de protecção específica a que nos temos vindo a referir. A protecção conferida às bases de dados não é extensiva aos progra-mas de computador utilizados no fabrico ou no funcionamento dessas

Page 428: Access manual de base de datos , excelente xp

428 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

bases acessíveis por meios electrónicos (artº 1º, 4. Dec-Lei nº 122/2000). Os programas de computador gozam de uma protecção à parte, que na nossa ordem jurídica está basicamente consagrada no Dec-Lei nº 252/94, de 20 de Outubro, e que, obviamente, não será abordada aqui. Quanto ao conteúdo propriamente dito das bases de dados, ele poderá ser relevante, essencialmente, por dois motivos. Por um lado, esse conteúdo pode incluir obras protegidas pelo Direito de Autor ou pelos Direitos Conexos; por outro, pode consistir numa categoria particular de dados, os chamados dados pessoais. Em ambos os casos é preciso tomar cautelas particulares para não vio-lar a lei ou direitos de exclusivo de terceiros; o que não acontecerá, por exemplo, se a base de dados, ao invés, for composta apenas por obras já caídas no domínio público (por decurso do prazo de protecção pelo Direito de Autor ou pelos Direitos Conexos) ou se integrar somente outros dados ou elementos não protegíveis pelo Direito de Autor. As bases de dados pessoais estão sujeitas a um regime jurídico parti-cular, em razão da especial natureza desses dados, mas este regime particular nada tem a ver com a tutela das bases de dados enquanto tais, mas sim com a protecção dos próprios dados pessoais que consti-tuem o seu conteúdo. Em razão da especial sensibilidade destes dados, que chegam a gozar de protecção constitucional (artº 35º CRP), a Lei nº 67/98, de 26 de Outubro (que substitui legislação anterior sobre esta mesma matéria), prevê uma entidade administrativa – a Comissão Nacional de Protecção de Dados – que tem por missão fundamental supervisionar estas bases de dados. As bases de dados pessoais podem, consoante os casos, estar sujeitas a autorização prévia ou a registo na dita Comissão Nacional de Protec-ção de Dados. O armazenamento, processamento e recuperação (utili-

Page 429: Access manual de base de datos , excelente xp

ANEXO III: PROTECÇÃO JURÍDICA DAS BASES DE DADOS ELECTRÓNICAS 429

zação) de dados pessoais está igualmente sujeito a regras específicas previstas na Lei nº 67/98. As infracções aos comandos da Lei nº 67/98 são puníveis nos termos do mesmo diploma.

II – Protecção das bases de dados originais A) Critério O artº 1º, 2. do Dec-Lei nº 122/2000 define base de dados como “a colectânea de obras, dados ou outros elementos independentes, dispostos de modo sistemático ou metódico e susceptíveis de acesso individual por meios electrónicos ou outros”. Por sua vez, o Considerando 16 da Directiva nº 96/9/CE, de 11 de Março de 1996, diz que, para se determinar se uma base de dados merece ou não a protecção do Direito de Autor, “não devem aplicar-se outros crité-rios que não o da originalidade, na acepção da criação intelectual (...), e que, em especial, não deverão intervir critérios estéticos ou qualitativos” para esta qualificação. Isto significa, de acordo com a concepção subjectiva tradicional de originalidade no âmbito do Direito de Autor, que deverão ser qualifica-das como originais as bases de dados que resultem da actividade intelectual do seu ou dos seus autores. Por outras palavras, que não sejam cópia de bases de dados já existentes, nem de tal ordem banais, comuns ou triviais nos seus critérios de selecção ou na estruturação dos dados que não seja defensável a sua apropriação individual por quem quer que seja, uma vez que esses critérios são comuns a muitas outras bases de dados já existentes.

Page 430: Access manual de base de datos , excelente xp

430 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Por exemplo, uma base de dados que inclua todos os dados disponíveis de uma dada espécie e que apenas os ordene por ordem alfabética ou cronológica, não poderá ser considerada uma base de dados original, uma vez que não existe nenhum critério na escolha dos dados (todos) e os critérios de ordenação alfabética ou cronológica são um lugar comum que não se concebe que possa ser atribuído, em termos de exclusividade de exploração, a quem quer que seja. O que não poderá ocorrer, nos termos da Directiva, é a denegação de protecção pelo Direito de Autor com fundamento na falta de “altura”, “engenho”, “nível” ou “criatividade” de uma base de dados ou noutra qualquer consideração ou critério que implique juízos de valor ou de mérito sobre a mesma base de dados. A criação intelectual do autor tem que incidir sobre a estrutura da base de dados, isto é, sobre a selecção ou sobre a disposição das matérias da base. A natureza ou espécie das obras, dados ou outros elementos que componham a base é absolutamente indiferente para este efeito. Como veremos adiante, as bases de dados não originais ficam sujeitas a uma protecção especial, fora do âmbito do Direito de Autor. B) Autoria/Titularidade A quem pertencem os Direitos de Autor sobre as bases de dados que possam considerar-se como obras originais? Este problema seria resolvido, à partida, pelas regras gerais do Direito de Autor: a titularidade dos direitos pertence, em regra, ao seu criador ou aos seus criadores intelectuais (art. 11º CDADC). Mas relativamente à generalidade das bases de dados electrónicas, o problema que se coloca é que estas bases são normalmente realiza-das por empregados ou colaboradores no âmbito das empresas.

Page 431: Access manual de base de datos , excelente xp

ANEXO III: PROTECÇÃO JURÍDICA DAS BASES DE DADOS ELECTRÓNICAS 431

Ou, então, são feitas por encomenda para qualquer terceiro ou enti-dade. Como se disse, por princípio, aplicam-se às bases de dados as mes-mas regras que se aplicam às demais obras protegidas pelo Direito de Autor. E a regra seria aqui a de que - salvo acordo em contrário - a titularidade dos direitos sobre as bases de dados realizadas por encomenda, ou por empregados ou colaboradores no âmbito da actividade de uma empresa, continuariam a pertencer aos seus criadores intelectuais e não a quem as encomendou ou às empresas no seio das quais foram levadas a cabo (art. 14º CDADC). Todavia, no caso das bases de dados, o artº 5º, 3. do Dec-Lei nº 122/2000 afasta-se radicalmente desta regra: “Os direitos patrimoniais sobre as bases de dados criadas por um empregado no exercício das suas funções (...) ou criadas por encomenda, pertencem ao destinatário das bases, salvo se o contrário resultar de convenção das partes ou da finalidade do contrato.” Por outra parte, o nº 2 do mesmo artigo estabelece que se presumem obras colectivas as bases de dados criadas no âmbito da empresa, o que, em virtude do regime geral que resulta do CDADC para este tipo de obras (art. 19º), faz nascer, nesta hipótese, o direito de autor, origi-nariamente, nas próprias empresas, salvo se a presunção for ilidida pelo respectivo ou respectivos criadores intelectuais das bases de dados em causa. Um regime, portanto, bem mais favorável às empresas, no âmbito das quais são realizadas, normalmente, as bases de dados em geral e as electrónicas em particular, do que aquele que resultaria da aplicação das regras gerais do Direito de Autor. C) Conteúdo do direito O Direito de Autor confere ao seu titular um direito de exclusivo à exploração económica das suas obras (artº 67º e 68º CDADC). Para

Page 432: Access manual de base de datos , excelente xp

432 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

além deste direito exclusivo de exploração económica, são ainda reco-nhecidos aos autores certos direitos morais (artº 56º ss. CDADC). A lei enuncia algumas das faculdades em que se traduz, concreta-mente, o referido direito de exclusivo dos autores das bases de dados, a saber (artº 7º Dec-Lei nº 122/2000): Direito de proibir ou autorizar: a) A reprodução permanente ou transitória, por qualquer forma ou pro-

cesso, de toda ou parte da base de dados; b) A tradução, a adaptação, a transformação ou qualquer outra modifi-

cação da base de dados; c) A distribuição do original ou de cópias da base de dados; d) Qualquer comunicação pública, exposição ou representação pública

da base de dados. Apesar de uma interpretação literal deste art. 7º do Dec-Lei nº 122/2000 poder indiciar o contrário, entendemos que as faculdades aí enunciadas, como integrando e definindo o âmbito do direito de exclusivo do titular dos direitos de autor sobre as bases de dados originais, não são taxa-tivas. Pois, se o fossem - limitando o direito de exploração económica das bases de dados a certos actos de exploração -, contrariariam a Direc-tiva comunitária de harmonização, que não admite uma tutela para as bases de dados originais inferior àquela que as leis nacionais do Direito de Autor dispensam à generalidade das obras protegidas. D) Duração A tutela das bases de dados segue, neste capítulo, regras próximas das do Direito de Autor em geral. Nos termos do artº 6º do Dec-Lei nº 122/2000, a protecção é concedida por um prazo de 70 anos. A conta-gem deste prazo inicia-se com a morte do autor, se este for o titular do direito, ou com a primeira divulgação ao público da base de dados, se os

Page 433: Access manual de base de datos , excelente xp

ANEXO III: PROTECÇÃO JURÍDICA DAS BASES DE DADOS ELECTRÓNICAS 433

direitos sobre esta pertencerem originariamente a outra entidade que não o seu criador ou criadores intelectuais (pessoas físicas). E) Limites ao direito de exclusivo São reconhecidos os limites gerais ao direito de exclusivo consagrados no CDADC, desde que compatíveis com a natureza específica das bases de dados, mas a reprodução não autorizada para fins privados só será admitida em relação às bases de dados não electrónicas. As bases de dados electrónicos não estão sujeitas a esta importante restri-ção ao direito de exclusivo prevista, como princípio geral, no CDADC. É ainda admitida a utilização não autorizada para fins didácticos ou científicos não comerciais, desde que se indique a respectiva fonte, e as utilizações para fins de segurança pública ou para efeitos de pro-cesso administrativo ou judicial (artº 10º). Ao utente legítimo é reconhecida, obviamente, a possibilidade de praticar todos os actos que sejam necessários para aceder ao conteúdo da base de dados e para a sua utilização em condições normais (artº 9º). Em qualquer caso, todas estas limitações têm natureza excepcional e o nº 2 do artº 10º do Dec-Lei 122/2000 recorda a Convenção de Berna (artº 9º, 2.), estipulando que elas nunca poderão prejudicar a exploração normal da base de dados, nem causar um prejuízo injustificável aos legítimos interesses do titular do direito de autor.

III. As bases de dados protegidas por um direito sui generis. A) Requisitos

As bases de dados não originais podem ainda gozar de uma certa pro-tecção jurídica, fora do âmbito do Direito de Autor, desde que represen-

Page 434: Access manual de base de datos , excelente xp

434 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

tem um investimento substancial, do ponto de vista qualitativo ou do ponto de vista quantitativo (art. 12º, 1.). Isto é, dada a natureza do traba-lho realizado ou os montantes de dinheiro envolvidos na sua elaboração.

Pondo o acento tónico na questão do investimento, fica claro que o que está aqui em que causa não é a protecção da criatividade, como acon-tece com o Direito de Autor, mas sim a tutela de interesses, muito res-peitáveis, de outra natureza. A justificação são os investimentos signifi-cativos que estão normalmente associados à construção das bases de dados, sobretudo as electrónicas. E os beneficiários da protecção já não serão, como é natural, os criadores intelectuais dessas bases de dados, mas sim os seus “fabricantes”, na curiosa terminologia legal.

Esta forma de protecção alcança a generalidade das bases de dados existentes, até porque se aplica também, cumulativamente, às bases de dados protegidas pelo Direito de Autor. B) Aquisição do direito

Como referimos, quem está aqui em questão já não é o criador intelec-tual, o autor, mas o chamado “fabricante” da base de dados, ou seja, mais o produto de uma actividade empresarial do que propriamente uma qualquer realização do espírito humano. A titular deste direito sui generis (artº 12º, 1.) é, portanto, a empresa “fabricante” ou produtora da base de dados.

À partida só os “fabricantes” comunitários de bases de dados podem usufruir desta protecção legal. Por “fabricantes” comunitários entendem -se os nacionais e os residentes ou estabelecidos na Comunidade, quer sejam pessoas singulares, quer sejam pessoas colectivas (artº 3º). C) Conteúdo do direito sui generis O direito sui generis que tutela estas “realidades menores” não é um direito de exploração exclusiva, mas tão só um direito de proibir ou

Page 435: Access manual de base de datos , excelente xp

ANEXO III: PROTECÇÃO JURÍDICA DAS BASES DE DADOS ELECTRÓNICAS 435

autorizar a prática de determinados actos, que a lei taxativamente enuncia, a saber: O titular do direito sui generis pode proibir a extracção ou a reutiliza-ção da totalidade ou de uma parte substancial do conteúdo da base de dados protegida.

Não estão cobertas por este direito, portanto, as reproduções ou reutili-zações de partes não substanciais do conteúdo das bases de dados, mas o critério para a determinação dos limites não pode ser, como é natural, meramente quantitativo; tem que ser também qualitativo. Por exemplo, a reprodução ou reutilização sistemática de partes não subs-tanciais de uma base de dados não original é, à partida, igualmente proibida (artº 12º). Como proibida estará, por exemplo, a extracção de partes não substan-ciais de 5 bases de dados diferentes, sobre um mesmo tema, para ofe-recer, depois, no mercado uma sexta base produzida à custa das partes não substanciais extraídas às outras 5.

É claro que quando o conteúdo destas (ou de outras) bases de dados seja constituído por obras protegidas pelo Direito de Autor, então para a reprodução ou utilização dessas obras é indispensável também a com-petente autorização dos titulares dos respectivos direitos.

Quando se trate de dados pessoais, é necessário respeitar as limita-ções impostas pela Lei nº 67/98, dada a particular natureza destes dados. D) Duração O direito sui generis é atribuído pelo período de 15 anos que, em geral, se conta a partir do dia 1 de Janeiro do ano civil seguinte àquele em que se concluiu o “fabrico” da base de dados.

Page 436: Access manual de base de datos , excelente xp

436 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Porém, se uma base de dados tiver sido colocada à disposição do público durante o decurso do período de tempo que resulta da aplicação do critério acima referido, então a sua protecção só terminará ao fim de 15 anos contados do dia 1 de Janeiro do ano civil seguinte àquele em que a base de dados haja sido colocada à disposição do público (artº 16º). E) Limites Em primeiro lugar haverá que dizer que em relação às bases de dados postas à disposição do público, o utilizador legítimo (autorizado) que as consulte pode praticar todos os actos inerentes à utilização obtida, nomeadamente os de extrair e de reutilizar partes não substanciais do respectivo conteúdo (artº 14º, 1.).

Em segundo lugar, o utilizador legítimo pode, ainda, sem autorização do titular do direito, extrair e reutilizar uma parte substancial do seu con-teúdo sempre que se trate de uma extracção para fins didácticos ou científicos não comerciais e desde que indique a respectiva fonte, ou sempre que se trate de uma extracção ou reutilização para fins de segu-rança pública ou para efeitos de um processo administrativo ou judicial (artº 15º). A extracção ou reutilização de uma parte substancial, nas circunstân-cias referidas, para fins privados, só constitui um limite aos direitos do “fabricante”, se feita em relação a bases de dados não electrónicas. Os direitos sobre as bases de dados electrónicas não estão sujeitos a quaisquer restrições com fundamento no destino privado dos actos de extracção ou de reutilização (artº 15º, a)). F) Meios de tutela

Refira-se, por último, que os meios de tutela, no que toca às bases de dados originais, são os previstos em comum para a generalidade das

Page 437: Access manual de base de datos , excelente xp

ANEXO III: PROTECÇÃO JURÍDICA DAS BASES DE DADOS ELECTRÓNICAS 437

obras protegidas pelo Código do Direito de Autor e dos Direitos Cone-xos. A Directiva dispunha (artº 12º) que, para as bases de dados protegidas por um direito sui generis, os Estados membros deveriam também prever sanções adequadas para a violação dos respectivos direitos, mas o nosso Dec-Lei nº 122/2000 absteve-se de consagrar quaisquer sanções especiais para a violação desse direito sui generis, a qual, por isso, constitui apenas um mero ilícito civil, susceptível de fazer incorrer o infractor em responsabilidade pelos danos que provocar ao titular dos direitos e concedendo a este último o direito de poder exigir a cessação da infracção. O art. 19º do Dec-Lei nº 122/2000 particulariza, tão somente, certas medidas de apreensão, nomeadamente para as cópias ilíc itas de bases de dados, no âmbito de eventuais providências cautelares, aliás comuns à tutela dos direitos que incidam sobre ambas as catego-rias de bases previstas nesse diploma.

Page 438: Access manual de base de datos , excelente xp

438 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

Page 439: Access manual de base de datos , excelente xp

BIBLIOGRAFIA

Page 440: Access manual de base de datos , excelente xp
Page 441: Access manual de base de datos , excelente xp

Bibliografia

[Almeida, 1997] Almeida, José M.F., “Para uma história da Informática”, Sistemas de Informa-ção, 6, 1997 (27-46) [Amaral e Santos,1997] Amaral, Luís e Santos, Maribel, “Modelos de estádios de crescimento”, Siste-mas de Informação, 7, 1997 (41-59) [Boctor, 1999] Boctor, David, Microsoft Office 2000 Visual Basic for Applications Fundamen-tals, 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 enquadra-mento 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 all, 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

Page 442: Access manual de base de datos , excelente xp

442 CENTRO ATLÂNTICO – DESENHO E IMPLEMENTAÇÃO DE BASES DE DADOS COM M ICROSOFT ACCESS XP

[Codd] Codd, E. F. et all, “Providing OLAP to User-Analysts: an IT mandate”, Distrib-uted 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”, Commu-nications of the ACM, Volume 13 – Number 6, June 1970, (377-387) [Codd, 1982] Codd, E. F., “Relational Database: A Practical Foundation for Productivity”, Communications of the ACM, Volume 25 – Number 2, February 1982 (109-117) [Connoly e Beg, 1982] Connoly, Thomas e Begg, Carolyn, Database Systems – A practical approach to Design, Implementation and Management, Addison-Wesley, 1998 – 2nd Edi-tion [Damas, 1999] Damas, Luís, SQL, Editora FCA, 1999 [Date, 2000] Date, C. J., an Introduction to Database Systems, Addison-Wesley, Interna-tional Editions, 2000 – 7th Edition [Dobson, 1999] Dobson, Rick, Programming Microsoft Access 2000, Microsoft Press, 1999 [Elmasri e Navathe, 1989] Elmasri, Ramez and Navathe, Shamkant B., Fundamentals of Database Sys-tems, The Benjamim Cummings, 1989 [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 Strate-gies, 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 cli-ent/server world”, Data Management Review, vol. 4, May 1994, (6-16)

Page 443: Access manual de base de datos , excelente xp

BIBLIOGRAFIA 443

[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, 1997] Rob, Peter e Coronel, Carlos, Database Systems: Design, Implementation, and Management, International Thomson Publishing Company, 1997 – 3rd Edition [Senn] Senn, James A., Analysis and design of Information Systems, McGraw Hill In-ternational Editions – Computer Science Series [Serrano] Serrano, António, “Sistemas de Informação numa perspectiva organizacional – da Informação ao conhecimento”, 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 444: Access manual de base de datos , excelente xp
Page 445: Access manual de base de datos , excelente xp