Escolar Documentos
Profissional Documentos
Cultura Documentos
Aluno
Curso
Nº Mec
CódCurso
Nome
DesigCurso
Sexo
Grau
Data Nasc
Duração
RefCódCurso
apresenta a Tabela Orders em Modo de Desenho, no qual é possível introduzir os seus diferentes
atributos e para cada atributo assinalar as suas propriedades.
8 Para ver a Tabela Orders em Modo de Desenho executar na JBD a sequência de
comandos: Tables → Orders → Design.
Uma vez descritas as colunas das Tabelas passa-se à fase de introdução dos dados, linha a linha,
ou registo a registo. Os dados podem ser introduzidos directamente numa Tabela recorrendo ao Modo
de Processamento ou indirectamente usando formulários. A Figura 6 apresenta a Tabela Oders em
Modo de Processamento.
8 Para ver a Tabela Orders em Modo de Processamento executar na JBD a sequência
de comandos: Tables→ Orders → Open.
Uma vez elaborado o inquérito podemos finalmente fazer a pergunta (executar o Inquérito),
obtendo assim o resultado apresentado na Figura 9, o Inquérito Orders Qry em Modo de Processamento.
8 Para visualizar o Inquérito Orders Qry em Modo de Processamento executar na
JBD a sequência de comandos: Queries → Orders Qry → Open.
Também é possível utilizar os Inquéritos para alterar os dados da própria BD (construir novas
Tabelas e inserir, remover e alterar registos nas Tabelas), são os chamados Inquéritos Acção (Action
Queries) que serão descritos oportunamente.
Ä Cada Inscrição envolve sempre uma Disciplina e cada Disciplina pode ser envolvida em
vários Inscrições, podendo haver Disciplinas sem Inscrições.
Ä A cada Inscrição, uma vez feita a avaliação, é atribuída uma Nota e cada Nota diz sempre
respeito a uma Inscrição.
Sobre esta BD pretende-se:
Ä Construir Queries que permitam:
v Listar os dados dos Alunos agrupados pela Designação do Curso e ordenados pelo
Nome.
v Listar os dados dos Alunos do sexo feminino com pelo menos 18 anos de idade e os do
sexo masculino com no máximo 18 anos de idade.
v Listar os dados dos Alunos dum dado Curso que tenham nascido num determinado
período.
v Contabilizar, para cada Curso, o número de Alunos do sexo masculino com no máximo
18 anos de idade e os do sexo feminino com pelo menos 18 anos de idade.
v Contabilizar o número de Alunos de cada sexo por Curso.
v Construir uma Tabela que combine os dados contidos nas Tabelas Aluno e Curso.
v Remover os Alunos com menos de 18 anos da Tabela Backup Aluno.
v Adicionar à Tabela Backup Aluno os Alunos com no máximo 18 anos de idade.
v Passar para maiúscula a Designação dos Cursos.
Ä Construir Forms que permitam:
v Criar novos Cursos.
v Matricular novos Alunos.
v Introduzir novos Docentes.
v Introduzir novas Disciplinas.
v Atribuir Disciplinas aos Cursos
v Consultar os dados dum dado Aluno.
v Inscrever os Alunos nas Disciplinas.
v Fazer o lançamento das notas duma dada Disciplina.
v Remover um dado Aluno da BD.
Ä Construir Reports que permitam:
v Listar os Alunos inscritos nas diferentes Disciplinas.
v Apresentar a ficha de notas de cada um dos Alunos.
O MS Access disponibiliza 3 métodos para a criação de uma nova Tabela, conforme é possível
verificar na JBD representada na Figura 15. Estes métodos são:
Ä Create Table in Design View: Permite criar uma nova Tabela de raiz.
Ä Create Table by using Wizard: Permite criar uma nova Tabela usando um auxiliar. O
utilizador selecciona a Tabela que melhor se adapta ao pretendido de entre um conjunto de
Tabelas pré-definidas e apresentadas pelo auxiliar. Seguidamente é-lhe permitido escolher
os atributos necessários de entre a lista de atributos desta Tabela. E finalmente, é
possibilitado ao utilizador alterar o desenho da Tabela por forma a ajustá-la às suas
necessidades.
Ä Create Table by Entering Data: O MS Access cria a estrutura da Tabela a partir dum
exemplo dos dados que se pretendem armazenar.
As Tabelas usadas neste tutorial serão construídas de raiz, portanto usando o método Create
Table in Design View.
8 Criar uma nova Tabela clicando duas vezes sobre o item Create Table in
do tipo Text é indicado o número máximo de caracteres que podem ser armazenados no
Campo. No caso dos Campos numéricos é possível escolher entre os tamanhos Byte
(0→255), Integer (-32768→32767), Long Integer (-2147483648→2147483648), Single
(-3.402823E38→-1.401298E-45 para valores negativos e 1.401298E-45→3.402823E38
para valores positivos) e Double (-1.79769313486231E308→-4.94065645841247E-324
Ä Definir a designação pela qual o Campo vai ser apresentado ao utilizador: Através da
propriedade Caption comum a todos os tipos de dados.
Ä Sugerir um valor por defeito para o Campo: Através da propriedade Default Value
comum a todos os Tipos de Dados com excepção do AutoNumber e OLE Object. É possível
introduzir, como valor deste atributo, uma expressão o formula que devolva um valor.
Ä Validar os dados introduzidos no Campo: Através da propriedade Validation Rule
comum a todos os Tipos de Dados com excepção do Memo, AutoNumber e OLE Object.
Ä Apresentar uma mensagem de erro quando o valor introduzido no Campo for
inválido: Através da propriedade Validation Text comum a todos os Tipos de Dados com
excepção do Memo, AutoNumber e OLE Object. Sempre que se define uma Validation Rule
para um Campo deve-se definir também um Validation Text, caso contrário o utilizador
pode ficar ser saber a razão pela qual o valor que introduziu foram rejeitados.
Ä Marcar um Campo como sendo de preenchimento obrigatório: Através da propriedade
Required comum a todos os Tipos de Dados com excepção do AutoNumber.
Ä Tornar um Campo num índice: Através da propriedade Indexed comum a todos os Tipos
de Dados com excepção do Memo e OLE Object. Os valores dos Campos índice são mais
rapidamente ordenados e pesquisados, no entanto a sua actualização é mais lenta. Através
do valor “Yes (No Duplicates)” é possível garantir que não haverá duplicação nos
valores do Campo. Os restantes valores possíveis são “No” e “Yes (Duplicates OK)”.
introduzidos 2 caracteres; Like “###” significa que o valor introduzido só pode usar 3 caracteres),
Between ... And ... (p.ex.: Between #1/1/1900# And #31/12/1900# obriga que o valor
introduzido seja uma data do ano 1900), In(...) (p.ex.: In (“O”, “T”, “A”, “M”, “D”) obriga
que o valor introduzido seja “O”, “T”, “A”, “M” ou “D”), etc.}, Caracteres Wildcard {? (representa um
caracter qualquer), # (representa um dígito qualquer), * (representa um caracter ou uma sequência de
caracteres), [aeiou] (representa um qualquer dos caracteres indicados entre os parêntesis), [!aeiou]
(representa um caracter qualquer que não os contidos entre parêntesis), [a-e] (representa um caracter
qualquer compreendido entre a e e), etc.} e funções do MS Access que devolvam um valor.
Caracter Descrição
0 Dígito obrigatório (não são aceites os sinais + e -).
9 Dígito não obrigatório (não são aceites os sinais + e -).
# Dígito ou espaço não obrigatório (os espaços são removidos antes da
gravação; são aceites os caracteres + e -).
L Letra obrigatória.
? Letra não obrigatória.
A Letra ou dígito obrigatório.
A ligação estabelecida entre estas Tabelas deve ser tal que uma ocorrência da Tabela Curso
possa ser referenciada por mais do que um registo da Tabela Aluno (significado do ∞), podendo, no
entanto, não ser referenciada por nenhum (significado do 0), e uma ocorrência da Tabela Aluno
referenciará um e só um registo da Tabela Curso.
8 Fechar todos os objectos (ou pelo menos aqueles que envolvam as tabelas
entre as quais vão ser criadas as Relationships) e executar o comando
Tools→Relationships. Após isso, o MS Access mostra a Janela de Adição de Tabelas,
mostrada na Figura 19, se ainda não foi criada nenhuma Relationship na BD, ou a
Janela das Relationships, mostrada na Figura 22, no caso contrário. Para invocar, em
qualquer momento, a partir da Janela das Relationships, a Janela de Adição de Tabelas
executar o comando View→Show Table.
Referential Integrity, Cascade Update Related Fields e Cascade Delete Related Records em
função do pretendido.
8 Uma vez configurada convenientemente a Relationship, fechar a Janela das
Relationships accionando o botão Create, após o que o MS Access desenhará, na Janela
das Relationships, uma linha a ligar os Campos Comuns das duas Tabelas.
8 Para remover uma Relationship seleccionar a linha que lhe está associada e
carregar na tecla Delete do teclado.
8 Para editar, em qualquer momento, uma determinada Relationship, dar um
Figura 20.- Janela das Relationships após inserção das Tabelas Aluno e Curso.
Figura 22.- Janela das Relationships mostrando a ligação entre as Tabelas Aluno e Curso.
na Tabela Referenciada para um valor que não tenha correspondência na Tabela Primária.
Se tiver sido seleccionada a opção Cascade Update Related Fields, sempre que for alterado
o valor do Campo Comum na Tabela Primária esta alteração será também efectuada no Campo
Comum da Tabela Relacionada.
Se tiver sido seleccionada a opção Cascade Delete Related Records, sempre que for
removido um Registo da Tabela Primária serão removidos todos os Registos relacionados da Tabela
Relacionada.
A menos que haja razões contextuais para o contrário accionar sempre as opções Enforce
Referential Integrity, Cascade Update Related Fields e Cascade Delete Related
somente os Registos relacionados da Tabela Primária, para os Joins do tipo Self Joins, também
conhecidos como Rigth Joins.
A configuração do tipo de Join existente entre duas Tabelas é feita através da Janela de
Configuração das Propriedades dos Joins apresentada na Figura 23.
8 Para alterar o tipo de Join existente entre duas Tabelas invocar a Janela de Edição de
Relationships para a Relationship em causa e accionar o botão Join Type. Após isso aparecerá
a Janela de Configuração das Propriedades dos Joins onde é possível escolher o tipo de Join
pretendido. Uma vez Configurado convenientemente o Join confirmar as alterações
accionando o botão OK.
Após dar indicação, ao MS Access, de que se pretende criar um novo Query de raiz aparecerá a
Janela de Adição de Tabelas/Queries, representada na Figura 25, que permite seleccionar e adicionar,
à Janela de Desenho do Query, as Tabelas/Queries que vão ser usadas na sua construção. Uma vez
adicionadas todas as Tabelas/Queries pretendidas esta janela pode ser fechada, podendo, no entanto,
ser invocada em qualquer momento executando o comando View→Show Table...
conforme representado na Figura 26. Prestar especial atenção ao facto do Campo Nome
ter sido incluído 2 vezes, estando uma delas marcada como não visível. A razão para tal
foi a divergência entre a ordem em que se pretendia que os Campos aparecessem no
resultado do Query (NMec, Nome e Designação) e a sequência das ordenações (primeiro por
Designação e depois por Nome) a efectuar sobre os Registos.
8 Executar o Query e analisar o seu comportamento.
Figura 26.- Janela de Desenho do Select Query “Alunos + Cursos ordenados pela Designação e Nome”.
conforme indicado na Figura 27. Prestar especial atenção à coluna Idade: Format(Date()-
Figura 27.- Janela de Desenho do Select Query “Alunos >=18 anos do Sexo F ou <=18 anos do Sexo M”.
período indicado” conforme indicado na Figura 28. Configurar o tipo de dados de cada
um destes parâmetros conforme a informação contida na Figura 29. Ter especial
cuidado na introdução dos nomes dos parâmetros pois uma introdução errada fará com
que seja criado um novo parâmetro.
8 Executar o Query e analisar o seu comportamento.
Figura 28.- Janela de Desenho do Parameter Query “Alunosdo Curso indicado que tenham nascido no período
indicado”.
Figura 30.- Caixas de Diálogo apresentadas pelo MS Access para obter o valor dos Parâmetros do Parameter Query
“Alunos do Curso indicado que tenham nascido no período indicado”.
Regra 1
Cada propriedade do diagrama Entidade-Associação
(EA) dá origem a um atributo no esquema Relacional. a1
Estando a entidade isolada, esta dá origem a uma A
relação. A Chave de Entidade (CE) dá origem à Chave a2
Primária (CP) da relação.
A(a1, a2, …)
Regra 2
Quando o grau duma associação binária é 1:1 com A 1
A/B
1
B
participação obrigatória por parte de ambas as entidades,
só é necessário uma relação. A CP desta relação pode
ser a CE de qualquer uma das entidades. A-B(a1, …, b1, …)
Regra 3
Quando o grau duma associação binária é 1:1 com
participação obrigatória por parte duma das entidades e A 1
A/B
1
B
não obrigatória por parte da outra, são necessárias duas
relações. Uma relação por cada entidade com a
respectiva CE a servir de CP da relação correspondente.
A(a1, …); B(b1,…, a1)
Adicionalmente, a CE do lado não obrigatório deve ser
adicionada como atributo na relação do lado obrigatório.
Regra 4
Quando o grau duma associação binária é 1:1 com
participação não obrigatória por parte de ambas as A 1
A/B
1
B
entidades, são necessárias 3 relações: uma para cada
entidade, com a respectiva CE a servir de CP da relação
correspondente, e uma terceira relação para a
A(a1, …); B(b1,…); A/B(a1, b1, …)
associação. Esta última terá entre os seus atributos as CE
de ambas as entidades. Como se trata duma associação
1:1 a CP da relação da associação poderá ser a CE de
qualquer uma das entidades.
Regra 5
Quando o grau duma associação binária é 1:M com
participação obrigatória por parte da entidade do lado M, A 1
A/B
M
B
são necessárias 2 relações: uma por cada entidade, com a
CE de cada entidade a servir como CP para a relação
correspondente. Adicionalmente, a CE da entidade do
Regra 6
Quando o grau duma associação binária é 1:M com
participação não obrigatória por parte da entidade do A 1
A/B
M
B
lado M, são necessárias 3 relações: uma por cada
entidade, com a CE de cada entidade a servir como CP
da relação correspondente, e uma terceira relação para a
associação. Esta última terá entre os seus atributos as CE A(a1, …); B(b1,…); A/B(a1, b1, …)
de ambas as entidades. A CP da relação da associação
será apenas a CE da entidade do lado M, devido à
associação M:1 existente entre esta entidade e a entidade
do lado 1.
Regra 7
Quando o grau duma associação binária é M:M, são
necessárias 3 relações: uma por cada entidade, com a CE
de cada entidade a servir como CP da relação A M
A/B B
M
correspondente, e uma terceira relação para a
associação. Esta última terá entre os seus atributos as CE A(a1, …); B(b1,…); A/B(a1, b1, …)
de ambas as entidades. A CP da relação da associação
será constituída pela combinação das CE de ambas as
entidades.
Regra 8
Quando uma associação é ternária, são necessárias 4
relações: uma para cada entidade, com a CE de cada
entidade a servir como CP da relação correspondente e C
uma quarta relação para a associação. Esta última deverá M
ter entre os seus atributos as CE das três entidades.
Duma forma semelhante, quando uma associação for de
ordem N, são necessárias N+1 relações. A CP da relação A M
A/B/C
M
B
gerada pela associação dependerá do grau de
participação das entidades na associação.
A(a1,…); B(b1,…); C(c1 ,…); A/B/C(a1, b1, c1,…)
Regra 9
Quando temos uma associação que envolva Subtipos, a
entidade fonte gerará uma relação com a CE a servir de
CP para a relação e um atributo designador do tipo. A
Cada subtipo herda a chave da relação já referida. Cada
subtipo e as suas associações deverão ser tratados como
entidades e associações regulares.
B C
Regra 10
Quando temos uma associação que envolva uma
entidade fraca, a entidade regular gerará uma relação
com a CE a servir de CP para a relação, e a entidade 1 M
fraca gerará uma relação com a CP constituída pela A A/B B
combinação da CE com a chave estrangeira.
Nota e Data na Associação, no entanto, verificar-se-ia que poderiam ocorrer nulos na Tabela desta
Associação, pelo facto da nota só ser lançada algum tempo depois da inscrição ser feita. Para
ultrapassar este problema optou-se pela criação da Entidade Nota e, consequentemente, da Entidade
Inscrição (pois era a única forma de ligar a Entidade Nota ao resto do diagrama) conforme
apresentado na Figura 31. Notar que não estão assinalados todos os atributos das diferentes entidades,
mas sim somente as suas Chave de Entidade.
AnoCurricular
NMec,... CódCurso,... CódDisciplina,... CódDocente,...
N 1 N Leccionada M N Leccionada 1
Aluno Pertence Curso no Disciplina por Docente
ao
1 1
CódInscrição,...
N N
Tem Inscrição Envolve
1
É
Atribuída
1
Nota
RefCódInscrição,...
foi também incluída informação sobre as ligações existentes entre as Tabelas (atributos ligantes,
cardinalidade e tipo de participação).
Ä Aluno(NMec, Nome, Residência, CódPostal, Localidade, Telefone, Sexo, DataNascimento, Regime,
DataMatrícula, RefCódCurso)
Ä Curso(CódCurso, Designação, Duração, Grau)
Ä Docente(CódDocente, NomeDoc)
Ä Disciplina(CódDiciplina, Designação, NCréditos, Semestre, RefCódDocente)
Ä Curso/Disciplina(RefCódCurso, RefCódDisciplina, AnoCurricular)
Ä Inscrição(CódInscrição, TipoInscrição, AnoLectivo, RefNMec, RefCódDisciplina)
Ä Nota(RefCódInscrição, Nota, Data)
Ä Ligações:
Ä 1(CódCurso ∈ Curso) → 0|∞(RefCódCurso ∈ Aluno)
Ä 1(CódDocente ∈ Docente) → 0|∞(RefCódDocente ∈ Disciplina)
Ä 1(CódDisciplina ∈ Disciplina) → 1|∞(RefCódDisciplina ∈ Curso/Disciplina)
Ä 1(CódCurso ∈ Curso) → 1|∞(RefCódCurso ∈ Curso/Disciplina)
Ä 1(NMec ∈ Aluno) → 1|∞(RefNMec ∈ Inscrição)
Ä 1(CódDisciplina ∈ Disciplina) → 0|∞(RefCódDisciplina ∈ Inscrição)
Ä 1(CódInscrição ∈ Inscrição) → 0|∞(RefCódInscrição ∈ Nota)
Table in Design View, tendo em conta a informação contida nos quadros abaixo.
Fields e Cascade Delete Related Records, activadas. Ter presente que o alvo de qualquer
ligação é uma Chave Estrangeira, facilmente identificável pelo prefixo Ref que precede
o seu nome.
Figura 32.- Janela das Relationships mostrando as ligações existentes entre as Tabelas da BDServAcad.
outros) e organizando-os da forma mais conveniente. Por outro lado é através deste tipo de objectos
que é possível definir a interface da BD com o utilizador, construindo menus e definindo múltiplas
janelas de interacção interligadas entre sí.
O primeiro passo a dar na construção de um Form é a definição da Tabela ou Query na qual este
vai ser baseado, i.e. a sua Fonte de Registos (Record Source), o que é conseguido tendo em conta o
objectivo pretendido. Seguidamente poder-se-á optar por um dos 2 métodos disponibilizados pelo MS
Access para a criação de Forms, presentes como itens na Janela da BD representada na Figura 33.
Estes métodos são:
Ä Create Form in Design View: Permite criar um novo Form de raíz.
Ä Create Form by using Wizard: Permite criar um novo Form usando o Auxiliar. Auxiliar
esse que, através de uma sequência de janelas, representadas na Figura 34, obtém a
informação necessária à construção do Form, nomeadamente o objecto Fonte de Registos,
os Campos a incluir no Form e o seu aspecto gráfico. Uma vez criado o Form usando este
processo é possível editá-lo por forma a adaptá-lo aos objectivos e aspecto gráfico
pretendido.
Por dar um contributo significativo na construção dos Forms utilizaremos neste curso o método
Create Form by using Wizard na criação dos Forms, efectuando de seguida as alterações
Figura 34.- Passos a seguir na construção de um Form usado o método Create Form by Using Wizard, neste caso
concreto do Form “Entrada de Docentes”.
Uma vez terminado o processo de criação dum Form usando o Auxiliar é possível redesenha-lo,
para o que é necessário compreeder o funcionamento da Janela de Desenho dos Forms.
Conforme é visível na Figura 35, os Forms são constituídos por 3 secções, Cabeçalho (Form
Header), Detalhe (Detail) e Rodapé (Form Footer), sendo o Detalhe a secção onde são apresentados
os valores dos diferentes Campos dos Registos, enquando que a informação presente no Cabeçalho e
no Rodapé mantem-se constante ao longo de todos os Registos. (Podem ser usados para definir um
cabeçalho para o Form, para incluir componentes de pesquisa, apresentar totais, etc.)
Ao conjunto dos Campos da Tabela/Query a partir da qual foi construído o Form, e que foram
incluídos no Form, designa-se Lista de Campos (Field List) do Form, representada na Figura 36. A
cada elemento da Lista de Campos está associado um componente gráfico designado Controlo, a partir
dos quais vai ser visualizada, alterada e introduzida a informação nos Registos. O MS Access
disponibiliza um conjunto de 9 tipos de Controlos padrão, existindo, no entanto, possibilidade de
recorrer a outros. Estes Controlos são: Label, Text Box, Combo Box, List Box, Check Box, Command
Button, Toggle Button, Option Button e Image. O Auxiliar associa, por defeito, uma Text Box a
cada um dos elementos da Lista de Campos, sendo possível, no entanto, associar outro tipo de
Controlo a um dado Campo recorrendo à Caixa de Ferramentas, representada na Figura 36. Para fazé-
lo basta seleccionar primeiro o tipo de Controlo na Caixa de Ferramentas e depois arrastar, para a área
do Form, o Campo pretendido da Janela Lista de Campos. Se estiver accionado o Auxiliar na Caixa de
Ferramentas a criação do objecto será guiada pelo Auxiliar, caso contrário será necessário alterar as
propriedades do Controlo manualmente. Ter presente que os Controlos vêm, usualmente,
acompanhados por um Label, sendo, dessa forma, um Controlo Composto.
Todas as componentes gráficas constituintes do Form, inclusive as suas secções e o próprio
Form têm propriedades, que podem ser consultadas e editadas recorrendo à Janela das Propriedades,
representada na Figura 36. De entre as propriedades dos Forms está a Default View, que define a
forma como o Form vai ser visualizado (por defeito), podendo ser visto Registo a Registo (Single
Form), como uma lista contínua de Registos (Continuous Form) ou como uma Tabela (Datasheet).
Figura 36.- Da esquerda para a direita e de cima para baixo temos a Janela Lista de Campos (Field List Window), a
Janela das Propriedades (Properties Window), mostrando as propriedades do Form “Entrada de Docentes”, e a Caixa de
Ferramentas (Toolbox).
Type: Table/Query) e aquelas que apresentam a lista dos Campos de uma Tabela ou Query (Row
Para construir uma Combo Box usando o Auxiliar é necessário accionar os botões Wizard e
Combo Box da Caixa de Ferramentas, seguidamente arrastar o Campo (da Janela da Lista de Campos
representada na Figura 36) que vai estar associado à Combo Box para a secção Detalhe do Form e
interagir convenientemente com a sequência de janelas que o Auxiliar apresentará. A Figura 38
apresenta esta interacção para o caso das Combo Boxes do tipo Value List e a Figura 40 para o caso
das Combo Boxes do tipo Table/Query.
Para construir uma Combo Box sem usar o Auxiliar é necessário accionar o botão Combo Box e
desaccionar o botão Wizard da Caixa de Ferramentas, seguidamente arrastar o Campo (da Janela da
Lista de Campos) que vai estar associado à Combo Box para a secção Detalhe do Form e configurar
convenientemente as propriedades seguintes:
o Row Source Type: Indica qual o tipo de Combo Box (Value List,
Table/Query ou Field List).
o Row Source: Contem os valores que vão ser mostrados na List Box associada à
Combo Box. O seu valor pode ser indicado através de uma lista de valores ou através de
uma Tabela ou Query (descrito, nomeadamente, através de uma instrução SQL)
o Column Count: Indica o número de colunas da List Box associada à Combo
Box.
o Columns Widths: Lista com as larguras das diferentes colunas da List Box.
o List Width: Largura total da List Box. (Convem ser preenchida para evitar o
aparecimento de Scroll Bars horizontais.)
o Bound Column: Indica qual a coluna cujo valor vai ser armazenado no Controlo.
Nas secções seguintes serão apresentados exemplos de configuração destas propriedades para as
Combo Boxes do tipo Value List e Table/Query.
Row Source: “B”; “Bacharelato”; “L”; “Licenciatura” | Column Count: 2 | Columns Widths:
0cm;1,773cm | List Width: 1,773cm | Bound Column: 1 | Limit to List: Yes.) A Combo
Box Duração deve ser construída de modo à lista que lhe está associada ser constituída
por 1 coluna1, com os valores (3, 4 e 5). (Em termos de propriedades ter-se-á: Control
Source: Duração| Row Source Type: Value List | Row Source: 3; 4; 5 | Column Count: 1 |
Columns Widths: 0,9cm | List Width: 0,9cm | Bound Column: 1 | Limit to List: Yes.)
Figura 38.- Passos a seguir na construção de uma Combo Box do tipo Value List usando o Auxiliar, neste caso concreto a
Combo Box Grau.
0cm;1,482cm | List Width: 1,482cm | Bound Column: 1 | Limit to List: Yes.) A Combo
Box Regime deve ser construída de modo à lista que lhe está associada ser constituída
por 2 colunas, a 1ª coluna (de largura 0) com os valores (“O”, “T”, “A”; “M” e “D”) e a 2ª
coluna com os valores (“Ordinário”, “Trabalhador Estudante”, “Atleta de Alta Competição”,
“Ao Abrigo do Regime Militar”, “Dirigente Associativo”). (Em termos de propriedades ter-
se-á: Control Source: Regime | Row Source Type: Value List | Row Source:
Widths: 0cm;3,704cm | List Width: 3,704cm | Bound Column: 1 | Limit to List: Yes.) A
Combo Box RefCódCurso deve ser construída de modo à lista que lhe está associada ser
constituída pelas colunas CódCurso e Designação da Tabela Curso, tendo, a 1ª coluna
largura 0. (Em termos de propriedades ter-se-á: Control Source: RefCódCurso | Row Source
Figura 40.- Passos a seguir na construção de uma Combo Box do tipo Table/Query usando o Auxiliar, neste caso
concreto a Combo Box RefCódCurso.
Sexo | Row Source Type: Value List | Row Source: 1;"1º Semestre";2;"2º
Semestre";3;"Anual" | Column Count: 2 | Columns Widths: 0cm;1,482cm | List Width:
1,482cm | Bound Column: 1 | Limit to List: Yes.) A Combo Box RefCódDocente deve ser
construída de modo à lista que lhe está associada ser constituída pelas colunas
CódDocente e NomeDoc da Tabela Docente, tendo, a 1ª coluna largura 0. (Em termos de
propriedades ter-se-á: Control Source: RefCódDocente | Row Source Type: Table/Query | Row
Figura 42.- Query “Query para o SubForm Atribuição de Disciplina do Curso” em Modo de Desenho.
Widths: 0cm;0,9cm | List Width: 0,9cm | Bound Column: 1 | Limit to List: Yes.) A Combo
Box RefCódDisciplina deve ser construída de modo à lista que lhe está associada ser
constituída pelas colunas CódDisciplina e Designação da Tabela Disciplina. (Em termos de
propriedades ter-se-á: Control Source: RefCódDisciplina | Row Source Type: Table/Query |
Figura 43.- Form “SubForm Atribuição de Disciplinas aos Cursos” em Modo de Desenho.
Figura 45.- Passos a seguir para inserir um SubForm dentro de um Form, neste caso concreto o Form “SubForm
Atribuição de Disciplinas aos Cursos”.
descrição das expressões que o calculam. A sua construção processa-se da mesma forma que os
restantes Select Queries, sendo necessário, na fase final, executar o comando View→Totals por forma
a tornar visível a linha Total da Grelha QBE. É nesta linha que vão ser indicados os Campos pelos
quais vão ser agrupados os Registos (Group By), aqueles sobre os quais vão ser calculados os totais
(Sum, Avg, Min, Max, Count, StDev, Var, First, Last ou Expression) e, finalmente, aqueles que vão
ser usados na filtragem, à priori, dos dados (Where). A Figura 47 apresenta um Total Query em Modo
de Desenho e a Figura 46 em Modo de Processamento.
7.1.1.- CONSTRUÇÃO DO TOTAL QUERY “NÚMERO DE HOMENS <=18 ANOS E MULHERES >=18
ANOS POR CURSO”
Este Total Query, como o seu nome indica, vai permitir determinar o número de Alunos do Sexo
masculino, com no máximo 18 anos, e o número de Alunos do Sexo feminino, com pelo menos 18
anos , de cada um dos Cursos, indicando também a média das suas idades. Para conseguir isso é
necessário agrupar os Alunos inicialmente por Curso e depois por Sexo, procedendo de seguida à sua
contagem e cálculo da média das idades, conforme indicado na Caixa de Instruções seguinte.
8 Construir o Select Query “Número de Homens <=18 anos e Mulheres >=18 anos por
Curso” com base na informação apresentada na Figura 33. Prestar especial atenção às
colunas Número de Alunos e Média das Idades. Na primeira é feita a contagem dos NMec ,
Figura 46.- Total Query “Número de Homens <=18 anos e Mulheres >=18 anos por Curso” em Modo de
Processamento.
Figura 47.- Total Query “Número de Homens <=18 anos e Mulheres >=18 anos por Curso” em Modo de Desenho.
49 em Modo de Processamento.
Os Crosstab Query são representados por um icon próprio na Janela da BD, conforme se pode
verificar na Figura 48, não podendo, os dados da Tabela resultante da sua execução, serem alterados.
Figura 48.- Janela da BD, com o separador Query seleccionando, mostrando os diferentes tipos de icons associados às
diferentes categorias de Queries.
8 Construir o Crosstab Query “Número de Alunos de cada Sexo por Curso” com
base na informação apresentada na Figura 50. Os valores dos Campos Designação e Total
vão ser representados em coluna, i.e., vão ser Cabeçalhos de Linha (Row Heading), os
valores do Campo Sexo vão ser representados em linha, i.e., vão ser Cabeçalho de
Coluna (Column Heading) e os valores do Campo NMec vão ser usados no cálculo do Valor
da tabela de 2 entradas gerada por este Query.
8 Executar o Query e analisar o seu comportamento.
Figura 49.- Crosstab Query “Número de Alunos de cada Sexo por Curso” em Modo de Processamento.
Figura 50.- Crosstab Query “Número de Alunos de cada Sexo por Curso” em Modo de Desenho.
A sua construção processa-se como se de um Select Query se tratasse, sendo necessário, na fase
final, executar um dos comandos Query→Make-Table Query..., Query→Delete Query,
Seguidamente, e para os Queries do tipo Make-Table e Append Query, será apresentada uma Caixa
de Diálogo, representada na Figura 51 e Figura 54, onde deve ser introduzido o nome da Tabela que
vai ser criada pelo Query ou à qual vão ser adicionados novos Registos. E finalmente será necessário
configurar convenientemente o Query.
Cada tipo de Action Query é representado por um icon próprio na Janela da BD, conforme é
possível verificar na Figura 48. Executar um Action Query (dar um duplo click sobre o item
correspondente da Janela da BD ou executar o comando Query→Run) corresponde a executar a acção
que lhe está associada, no entanto, se se pretender, somente, visualizar a lista de Registos produzida
pelo Query dever-se-á executar o comando View→Datasheet View.
Figura 52.- Make-Table Query “Constrói a Tabela “Aluno + Curso”” em Modo de Desenho.
8 Criar uma cópia da Tabela Aluno e baptizá-la com o nome Backup: Aluno.
“Backup: Aluno”” com base na informação apresentada na Figura 53. Este Query deverá
ser construído como se de um Select Query se tratasse, devendo-se, na fase final,
executar o comando Query→Delete Query. Seguidamente dever-se-á configurar-lo com
base na informação apresentada na Figura 53. Neste tipo de Query existem 2 tipos de
Campos, aqueles cujos valores vão ser apagados dos Registos da Tabela em causa (têm
o valor From na linha Delete da Grelha QBE) e aqueles usados na definição do criterio de
selecção dos Registos a serem removidos (têm o valor Where na linha Delete da Grelha
QBE). Neste caso concreto vamos remover todos os Campos ([Backup: Aluno].*) da
Tabela Aluno dos Registos onde a Idade seja <=18.
8 Executar o Query e analisar o seu comportamento.
Figura 53.- Delete Query “Remove os Alunos com menos de 18 anos da Tabela “Backup: Aluno”” em Modo de
Desenho.
Como o seu nome indica, este Append Query vai adicionar à Tabela Backup: Aluno os Alunos
com menos de 18 anos de idade da Tabela Aluno. Os procedimentos a seguir na sua construção são os
apresentados na Caixa de Instruções seguinte:
<=18 anos” com base na informação apresentada na Figura 54 e Figura 55. Este Query
deverá ser construído como se de um Select Query se tratasse, devendo-se, na fase final,
executar o comando Query→Append Query.... Seguidamente aparecerá a Caixa de Diálogo
representada na Figura 54 onde deve ser introduzido o nome, e a localização, no caso de
se tratar duma Tabela exterior à BD, da Tabela à qual vão ser adicionados os Registos.
Finalmente deverse-á configurar-lo com base na informação apresentada na Figura 55.
A Grelha QBE associada a este tipo de Queries apresenta 2 tipos de Campos, aqueles
que vão definir o Registo a ser adicionado à Tabela (na linha Append To deve ser indicado
o nome do Campo destino onde vai ficar guardado o valor do Campo origem) em causa
e aqueles usados na definição de critérios de selecção de Registos das Tabelas fonte.
Neste caso concreto vamos copiar o valor de todos os Campos da Tabela Aluno para os
Campos do mesmo nome da Tabela Backup: Aluno e para os Registos onde a Idade seja
<=18 anos.
8 Executar o Query e analisar o seu comportamento.
Figura 55.- Append Query “Adiciona à Tabela “Backup: Aluno” os Alunos com <=18 anos” em Modo de Desenho.
7.3.4.- CONSTRUÇÃO DO UPDATE QUERY “PASSA PARA MAIÚSCULA O NOME DOS CURSOS”
Como o seu nome indica, este Update Query vai passar para maiúscula o nome dos Cursos da
Tabela Curso. Os procedimentos a seguir na sua construção são os apresentados na Caixa de
Instruções seguinte:
8 Construir o Update Query “Passa para Maiúscula o Nome dos Alunos” com base
na informação apresentada na Figura 56. Este Query deverá ser construído como se de
um Select Query se tratasse, devendo-se, na fase final, executar o comando Query→Update
Query. Seguidamente dever-se-á configurar-lo com base na informação apresentada na
Figura 56. A Grelha QBE associada a este tipo de Queries apresenta 2 tipos de Campos,
aqueles que vão ser alterados (na linha Update To deve ser inscrito o novo valor do
Campo) e aqueles usados na definição do critério de selecção dos Registos que vão ser
alterados. Neste caso concreto vamos passar para maiúscula o valor do Campo
Designação (UCase([Designação]) de todos os Registos da Tabela Curso.
8 Executar o Query e analisar o seu comportamento.
Figura 56.- Update Query “Passa para Maiúscula o Nome dos Cursos” em Modo de Desenho.
acções a serem executadas pela Macro, e uma secção inferior onde são descritos os argumentos
associados a estas acções. Na secção inferior também está presente uma área onde é apresentada uma
mensagem de ajuda. O objectivo da coluna Macro Names é permitir definir várias Macros dentro do
mesmo objecto Macro.
Nome, onde é apresentado o Nome do Aluno. Uma vez seleccionado um Aluno na Combo Box atrás
referida será executada uma Macro, apresentada na Figura 60, que fará com que os dados do Aluno
em causa sejam apresentados na secção Detalhe do Form. Isso é conseguido graças ao Form ter sido
construído a partir de um Parameter Query que só mostra os dados do Aluno cujo Nº Mecanográfico é
o indicado na Combo Box atrás referida, conforme apresentado na Figura 58. Este Form vai ser
configurado de modo a só permitir alterar os dados dos Registos já existentes, não sendo possível
inserir novos Registos nem remover Registos já existentes. A Macro para o Form Pesquisa de
Alunos além de fazer a actualização da informação apresentada no Form (através do seu Requery),
também é responsável pelo preenchimento da TextBox Nome com o Nome do Aluno cujo Nº
Mecanográfico foi seleccionado na ComboBox NMec. Essa Macro deve ser invocada sempre que
aconteça o evento After Update na ComboBox NMec, i.e., depois do seu valor ter sido alterado.
8 Construir o Parameter Query Query para o Form Pesquisa de Alunos com base
na informação apresentada na Figura 58. Prestar especial atenção à coluna NMec.,
Figura 58.- Parameter Query “Query para o Form Pesquisa de Alunos” em Modo de Desenho.
propriedade Control Source deve ficar vazia). A Text Box deve designar-se TextBox Nome
(propriedade Name: TextBox Nome) e a ComboBox deverá ter as seguintes propriedades: Name:
ComboBox NMec | Control Source: | Row Source Type: Table/Query | Row Source: SELECT
DISTINCTROW [Aluno].[NMec], [Aluno].[Nome] FROM Aluno | Column Count: 2 | Columns Widths:
1,166cm;5cm | List Width: 6,164cm | Bound Column: 1 | Limit to List: Yes | After Update:
Macro para o Form Pesquisa de Alunos.Localizar Aluno.
por forma a não ser possível nem adicionar nem remover Registos a partir deste Form.
DLookUp("[Aluno]![Nome]";"Aluno";"[Aluno]![NMec]=Forms![Pesquisa de Alunos]![ComboBox
Figura 60.- Macro “Macro para o Form Pesquisa de Alunos” em Modo de Desenho.
desenvolvimento dum Query um pouco elaborado e à construção de uma Macro que actualize esta
lista sempre que ela seja mostrada.
8 Construir o Select Query Query para o Form Inscrição dos Alunos nas
Figura 61.- Select Query “Query para o Form Inscrição dos Alunos nas Disciplinas” em Modo de Desenho.
8 Construir o Form Inscrição dos Alunos nas Disciplinas, a partir do Query para
o Form Inscrição dos Alunos nas Disciplinas e com base na informação apresentada na
Figura 62. A ligação com o SubForm deve ser feita através dos Campos NMec, do Form,
e RefNMec, do SubForm, portanto a propriedade Link Master Fields, do SubForm, deverá
ter o valor NMec e a propriedade Link Child Fields, do SubForm, deverá ter o valor
RefNMec.
Figura 62.- Form “Inscrição dos Alunos nas Disciplinas” em Modo de Desenho.
8 Construir o Select Query Query para o SubForm Inscrição dos Alunos nas
Disciplinas com base na informação apresentada na Figura 63. Prestar especial atenção
ao Join do tipo 2 definido entre as Tabelas Inscrição e Nota e ao criterio definido para o
Campo Nota.
Figura 63.- Select Query “Query para o SubForm Inscrição dos Alunos nas Disciplinas” em Modo de Desenho.
8 Construir o Form SubForm Inscrição dos Alunos nas Disciplinas, com o Layout
Columnar, a partir do Query para o SubForm Inscrição dos Alunos nas Disciplinas e com
base na informação apresentada na Figura 64. A Combo Box RefCódDisciplina deverá ter
as seguintes propriedades: Control Source: RefCódDisciplina | Row Source Type:
Table/Query | Row Source: SELECT [Query Disciplinas em que o Aluno pode Inscrever-
se].[RefCódDisciplina], [Query Disciplinas em que o Aluno pode Inscrever-
se].[Designação] FROM [Query Disciplinas em que o Aluno pode Inscrever-se] | Column
Count: 2 | Columns Widths: 0,717cm;5,877cm | List Width: 7,019cm | Bound Column: 1 |
Limit to List: Yes | On Enter: Macro para o Form Inscrição dos Alunos nas
Yes. As Text Boxes presentes na secção Rodapé são Unbounds, tendo as suas propriedades
Name e Control Source, respectivamente, os valores NDisciplina e
=Count([RefCódDisciplina]), para a Text Box mais à esquerda, e, TCréditos e
=Sum([NCréditos]), para a Text Box mais à direita.
Figura 64.- Form “SubForm Inscrição dos Alunos nas Disciplinas” em Modo de Desenho.
lista vai ser necessário fazer a “diferença” entre os resultados de outros 2 Queries, o Query
Disciplinas do Curso do Aluno a Inscrever e o Query Disciplinas em que o Aluno não
se pode Inscrever. O primeiro destes Queries é um Parameter Query que apresenta a lista das
Disciplinas do Curso do Aluno em causa, conforme pode verificar-se na Figura 65. O segundo destes
Queries é também um Parameter Query que apresenta a lista das Disciplinas em que o Aluno em
causa já tem uma Inscrição, em curso ou com Nota positiva, conforme pode verificar-se na Figura 66.
A “diferença” entre estes 2 Queries é feita conforme indicado na Figura 67.
com base na informação apresentada na Figura 65. Prestar especial atenção ao critério
definido para o Campo RefCódCurso.
Figura 65.- Parameter Query “Query Disciplinas do Curso do Aluno a Inscrever” em Modo de Desenho.
Inscrever com base na informação apresentada na Figura 66. Prestar especial atenção ao
Join do tipo 2 definido entre as Tabelas Inscrição e Nota e aos critérios definidos para os
Campos Nota e RefNMec.
Figura 66.- Select Query “Query Disciplinas em que o Aluno não se pode Inscrever” em Modo de Desenho.
com base na informação apresentada na Figura 67. Prestar especial atenção ao Join do
tipo 2 definido entre os Queries Query Disciplinas do Curso do Aluno a Inscrever e Query
Disciplinas em que o Aluno não se pode Inscrever e ao critério definido para o Campo
RefCódDisciplina.
Figura 67.- Select Query “Query Disciplinas em que o Aluno pode Inscrever-se” em Modo de Desenho.
8.2.1.2.- CONSTRUÇÃO DA MACRO “MACRO PARA O FORM INSCRIÇÃO DOS ALUNOS NAS
DISCIPLINAS”
O objectivo desta Macro é actualizar a lista apresentada pela Combo Box RefCódDisciplina, o
que é conseguido fazendo o seu Requey, conforme pode verificar-se na Figura 68. Esta Macro deve
ser invocada sempre que aconteça o evento On Enter na Combo Box, i. é., sempre que for requerida a
visualização da lista que lhe está associada.
8 Construir a Macro para o Form Inscrição dos Alunos nas Disciplinas com base
na informação apresentada na Figura 68. A acção RunCode deverá ter o argumento
Function Name: [RefCódDisciplina].Requery e tem como objectivo executar o método
Requery do controlo RefCódDisciplina.
Figura 68.- Macro “Macro para o Form Inscrição dos Alunos nas Disciplinas” em Modo de Desenho.
acção a condicionar, a Condição que tem de ser verdadeira para que a acção seja realizada. Se uma
mesma Condição condiciona a execução de mais do que uma Acção, nas Acções contiguas sub-
sequentes pode-se abreviar a escrita da Condição, substituíndo-a por “...”. Como é óbvio, todas as
Acções que não tenham nenhuma Condição na coluna Conditions serão de execução incondicional.
Verificar o que foi aqui dito analizando a Figura 73.
Button que quando accionado fará o Lançamento da Nota, através da execução da Macro para o
Form Lançamento de Notas.Lançar Nota, representado na Figura 73. Este Form foi construído a
partir do Parameter Query Query para o Form Lançamento das Notas, representado na Figura 69,
permitindo, assim, que só sejam apresentados os Alunos com Inscrições na Disciplina seleccionada.
Apesar do Lançamento das Notas dever ser feito usando os Controlos do Cabeçalho do Form, também
é possível fazé-lo usando os Controlos da Secção Detalhe.
Quando for feita uma selecção na ComboBox CódDisciplina será executada a Macro para o
Form Lançamento de Notas. Actualiza Designação Disciplina e Lista de Alunos
responsável, entre outras coisas, pela actualização da Lista de Registos apresentada pelo Form. As
Combo Boxes ComboBox NMec e ComboBox CódDisciplina, são baseadas, respectivamente, nos
Parameter Queries Parameter Query Alunos Inscritos numa Disciplina, representado na
Figura 71, e Parameter Query Inscrições Válidas dum Aluno numa Disciplina, representado
na Figura 72. Estes Parameter Queries garantem, juntamente com o método Requery, invocado na
propriedade On Enter de cada uma das Combo Boxes, o sincronismo entre elas.
8 Construir o Parameter Query Query para o Form Lançamento de Notas com base
na informação apresentada na Figura 69. Prestar especial atenção ao Join do tipo 2
definido entre as Tabelas Inscrição e Nota e ao critério definido para o Campo
RefCódDisciplina.
Figura 69.- Parameter Query “Query para o Form Lançamento de Notas” em Modo de Desenho.
Type: Table/Query | Row Source: Query Alunos Inscritos numa Disciplina | Column Count: 2
| Columns Widths: 1cm;6cm | List Width: 7cm | Bound Column: 1 | Limit to List: Yes | On
Enter: =[ComboBox NMec].Requery | After Update: Macro para o Form Lançamento de
Notas.Actualiza Nome Aluno. A terceira das Combo Boxes deverá ter as seguintes
propriedades: Name: ComboBox CódInscrição| Row Source Type: Table/Query | Row Source:
Query Inscrições Validas dum Aluno numa Disciplina | Column Count: 3 | Columns Widths:
1cm;0,507cm;1cm | List Width: 2,501cm | Bound Column: 1 | Limit to List: Yes | On Enter:
Nota).
8 Construir o Parameter Query Query Alunos Inscritos numa Disciplina com base
na informação apresentada na Figura 71. Prestar especial atenção ao Join do tipo 2
definido entre as Tabelas Inscrição e Nota e aos critérios definidos para os Campos
RefCódDisciplina e RefCódInscrição.
Figura 71.- Parameter Query “Query Alunos Inscritos numa Disciplina” em Modo de Desenho.
Disciplina com base na informação apresentada na Figura 72. Prestar especial atenção
ao Join do tipo 2 definido entre as Tabelas Inscrição e Nota e aos critérios definidos para
os Campos RefCódDisciplina ([Forms]![Lançamento de Notas]![ComboBox CódDisciplina]),
Null).
Figura 72.- Parameter Query “Query Inscrições Válidas dum Aluno numa Disciplina” em Modo de Desenho.
de Alunos, a acção Requery não terá argumentos, a acção SetValue deverá ter os
argumentos: Item: [Forms]![Lançamento de Notas]![TextBox Designação] | Expression:
DLookUp("[Disciplina]![Designação]";"Disciplina";"[Disciplina]![CódDisciplina]=
Notas]![TextBox Data]), a acção OpenQuery deverá ter os argumentos: Query Name: Query
Lançar uma Nota | View: Datasheet | Data Mode: Edit; a primeira das acções SetValue
Expression: Null; a segunda das acções SetValue deverá ter os argumentos: Item:
CódInscrição] | Expression: Null; a quarta das acções SetValue deverá ter os argumentos:
Item: [Forms]![Lançamento de Notas]![TextBox Nota] | Expression: Null; e a quinta acção
SetValue deverá ter os argumentos: Item: [Forms]![Lançamento de Notas]![TextBox Data] |
Expression: Date(). Nesta mesma Macro a acção Requery não terá argumentos.
Figura 73.- Macro “Macro para o Form Lançamento de Notas” em Modo de Desenho.
8 Construir o Append Query Query Lançar uma Nota com base na informação
apresentada na Figura 74. Este Append Query adicionará Registos à Tabela Nota. Prestar
especial atenção à identificação dos Campos cujos valores vão compor o Registo a
adicionar à Tabela Nota (CódInscrição: [Forms]![Lançamento de Notas]![ComboBox
Figura 74.- Append Query “Query Lançar uma Nota” em Modo de Desenho.
Registos e o seu aspecto gráfico. Uma vez criado o Report usando este precesso é possível
editá-lo de modo a adaptá-lo ao aspecto gráfico pretendido.
Por dar um contributo significativo na construção dos Reports utilizaremos neste curso o método
Create Report by using Wizard na criação dos Reports, efectuando de seguida as alterações
8 Construir o Select Query Query para o Report Alunos Inscritos nas Disciplinas
com base na informação apresentada na Figura 76. Prestar especial atenção à coluna
AnoLectivo, responsável pela definição do critério de filtragem (serão apresentados, para
cada Disciplina, os dados dos Alunos nela inscritos no Ano Lectivo actual).
Figura 76.- Select Query “Query para o Report Alunos Inscritos nas Disciplinas” em Modo de Desenho.
Report Alunos Inscritos nas Disciplinas e com base na informação apresentada na Figura
77. Redesenhá-lo de modo a obter o aspecto apresentado na Figura 78. Prestar especial
atenção à definição do Grupo Disciplina.Designação.
Figura 77.- Passos a seguir na construção do Report “Alunos Inscritos nas Disciplinas”.
todos os Grupos (Report Footer). Tratam-se de Controlos Unbound cuja propriedade Control Source
envolve uma função de cálculo de total (Count(), Sum(), Avg(), etc.) sobre um determinado Campo.
8 Construir o Select Query Query para o Report Ficha de Notas com base na
informação apresentada na Figura 79. Prestar especial atenção ao critério definido para
a Coluna Nota e à coluna, calculada, Nota Parcial Ponderada.
Figura 79.- Select Query “Query para o Report Ficha de Notas” em Modo de Desenho.
Ponderada])/Sum([NCréditos]).
Figura 86.
de Alunos. A ComboBox NMec (localizada no Form Header) passa a invocar a “Macro para o
Form Inscrição e Remoção de Alunos” quando acontece o evento After Update, devendo-
se, dessa forma, alterar a sua propriedade After Update para Macro para o Form Inscrição e
8 Fazer uma cópia do Query “Query para o Form Pesquisa de Alunos” e baptizá-la
com o nome “Query para o Form Inscrição e Remoção de Alunos”, conforme apresentado
na Figura 84. Substituir as referências ao Form “Pesquisa de Alunos” por referências ao
Form “Inscrição e Remoção de Alunos”.
Figura 84.- Select Query “Query para o Form Inscrição e Remoção de Alunos” em Modo de Desenho.
8 Fazer uma cópia da Macro “Macro para o Form Pesquisa de Alunos” e baptizá-la
com o nome “Macro para o Form Inscrição e Remoção de Alunos”, conforme apresentado
na Figura 85. Substituir as referências ao Form “Pesquisa de Alunos” por referências ao
Form “Inscrição e Remoção de Alunos”.
Figura 85.- Macro “Macro para o Form Inscrição e Remoção de Alunos” em Modo de Desenho.
Figura 86.- Passos a seguir na construção de um Command Button da Categoria Form Operations/Open Form com
ligação entre Form (Command Inscrever).
Figura 87.- Passos a seguir na construção de um Command Button da Categoria Record Operations/Delete Record
(Command Remover).
Figura 88.- Passos a seguir na construção de um Command Button da Categoria Form Operations/Close Form
(Command Fechar).
Page do PopUp Menu que aparecerá. A etiqueta associada a cada uma das páginas deve
ser configurada através da sua propriedade Caption. Os Command Buttons, presentes em
cada uma das páginas devem abrir o Form ou Report com o nome do seu label, dessa
forma, o Command Button Entrada de Alunos deve abrir o Form “Entrada de Alunos”, o
Command Button Ficha de Notas deve abrir o Report “Ficha de Notas” em Preview, e assim
sucessivamente. As páginas que não estão visíveis na Figura 89 têm os seguintes
Command Buttons: Página Cursos: Command Button Entrada de Cursos e Command Button
Disciplinas, Command Button Lançamento de Notas e Command Button Alunos Inscritos nas
Figura 90.- Passos a seguir na construção de um Command Button da Categoria Record Operations/Open Form
(Command EntradaAlunos).
Figura 91.- Passos a seguir na construção de um Command Button da Categoria Report Operations/Preview Report
(Command FichaNotas).
pode verificar-se na Figura 92. A Macro de definição de um Menu deverá conter uma entrada para
cada opção deste, indicando as acções por ela executada, conforme pode verificar-se na Figura 93.
8 Construir a Macro “BDServAcad MenuBar”, apresentada na Figura 92, que vai ser
usada na criação da MenuBar da aplicação. Esta MenuBar apresenta 5 Menus: File,
Aluno, Cursos, Disciplina e Docentes (valores do Argumento Menu Name de cada uma das
Acções). Cada uma das acções desta Macro cria um destes Menus fazendo uso da
Macro correspondente (valores do Argumento Menu Macro Name de cada uma das Acções).
Dessa forma, a 1ª Acção AddMenu terá os Argumentos Menu Name: &File e Menu Macro Name:
BDServAcad MenuBar_File; a 2ª Acção AddMenu terá os Argumentos Menu Name: &Aluno e Menu
Macro Name: BDServAcad MenuBar_Alunos; a 3ª Acção AddMenu terá os Argumentos Menu Name:
BDServAcad MenuBar_Docentes. O caracter & presente no nome dos Menus define qual é a
tecla de acesso directo.
8 Depois de construir as Macros associadas a cada um dos Menus executar o
comando Tools→Macro Create Menu From Macro, seleccionando previamente a Macro
“BDServAcad MenuBar”. Uma vez feito isso aprecerá no ambiente MS Access uma ToolBar
contendo a MenuBar construída.
Docentes”. Dessa forma a sua Acção será OpenForm e o Argumento Form Name terá o valor
Entrada de Docentes.
Acção será Quit, não sendo necessário alterar o valor inicial dos seus Argumentos.
e Menu Bar.