Quando está a trabalhar com dados relacionais (dados relacionados armazenados em tabelas separadas) no Access, muitas vezes tem de ver várias tabelas ou consultas no mesmo formulário. Por exemplo, poderá querer ver os dados de um cliente numa tabela e, ao mesmo tempo, as informações sobre as encomendas desse cliente noutra tabela. Os subformulários são uma ferramenta útil para estas operações e o Access disponibiliza vários procedimentos para o ajudar a criar subformulários num instante.
O que pretende fazer?
-
Criar um formulário que contenha um subformulário com o Assistente de Formulários
-
Adicionar um ou mais subformulários a um formulário existente com o Assistente de Subformulários
-
Criar um subformulário ao arrastar um formulário para dentro de outro
-
Adicionar dados relacionados a um formulário sem criar um subformulário
Saiba mais sobre subformulários
Um subformulário é um formulário que é inserido noutro formulário. O formulário primário é designado por formulário principal e o formulário incluído nesse formulário é designado por subformulário. A combinação formulário/subformulário é por vezes denominada formulário hierárquico, mestre/detalhe ou principal/subordinado.
Os subformulários são especialmente eficazes quando quer mostrar dados de tabelas ou consultas que têm uma relação um-para-muitos. Uma relação um-para-muitos é uma associação entre duas tabelas em que o valor da chave primária de cada registo na tabela primária corresponde ao valor no campo ou campos correspondentes de muitos registos na tabela relacionada. Por exemplo, pode criar um formulário que apresenta os dados dos funcionários e contém um subformulário que apresenta as encomendas de cada funcionário. Os dados na tabela Funcionários são o lado "um" da relação. Os dados na tabela Encomendas são o lado "muitos" da relação – cada funcionário pode ter mais do que uma encomenda.
1. O formulário principal mostra os dados do lado "um" da relação.
2. O subformulário mostra os dados do lado "muitos" da relação.
O formulário principal e o subformulário neste tipo de formulário estão ligados de modo a que o subformulário apresente apenas os registos relacionados com o registo atualmente apresentado no formulário principal. Por exemplo, quando o formulário principal apresentar as informações da Emília Faria, o subformulário apresenta apenas as encomendas dessa colaboradora. Caso o formulário e o subformulário não estivessem ligados, o subformulário apresentaria as informações de todas as encomendas e não apenas as da Emília.
A tabela seguinte descreve alguma terminologia associada aos subformulários. O Access trata da maior parte dos detalhes se utilizar os procedimentos descritos neste artigo, mas, mesmo assim, é útil saber o que está a acontecer nos bastidores, caso precise de efetuar modificações mais tarde.
Termo |
Definição |
---|---|
Controlo de subformulário |
O controlo que incorpora um formulário dentro de outro formulário. É como uma "vista" de outro objeto na sua base de dados, quer seja outro formulário, tabela ou consulta. O controlo de subformulário possui propriedades que permitem ligar os dados apresentados no controlo aos dados do formulário principal. |
Propriedade "Objeto de origem" |
A propriedade do controlo de subformulário que determina o objeto a ser apresentado no controlo. |
Folha de Dados |
Uma simples apresentação dos dados em linhas e colunas, muito parecida com uma folha de cálculo. O controlo de subformulário apresenta uma folha de dados quando o seu objeto de origem for uma tabela, ou consulta, ou quando o seu objeto de origem for um formulário cuja propriedade Vista Predefinida esteja definida como Folha de Dados. Nesses casos, o subformulário é por vezes designado por folha de dados ou subfolha de dados, em vez de subformulário. |
Propriedade "Ligar Campos Secundários" |
Propriedade do controlo de subformulário que específica o campo ou campos no subformulário que ligam o subformulário ao formulário principal. |
Propriedade "Ligar campos principais" |
Propriedade do controlo de subformulário que específica o campo ou campos no formulário principal que ligam o formulário principal ao subformulário. |
Notas:
-
Para obter os melhores resultados, estabeleça as relações entre tabelas antes de seguir os procedimentos descritos neste artigo. Esta ação permite ao Access criar automaticamente as ligações entre subformulários e formulários principais. Para ver, adicionar ou modificar relações entre as tabelas na base de dados, no separador Ferramentas da Base de Dados , no grupo Relações, clique em Relações.
-
Um controlo de subformulário que possua um formulário como objeto de origem contém os campos que colocar nesse formulário e pode ser visualizado como um formulário simples, um formulário contínuo ou uma folha de dados. Uma vantagem de basear um subformulário num objeto de formulário é que pode adicionar campos calculados ao subformulário, por exemplo [Quantidade] * [Preço Unitário].
-
Pode inserir uma folha de dados ou vista dinâmica num formulário criando um controlo de subformulário com uma tabela ou consulta como objeto de origem. Para obter mais informações, consulte a secção Adicionar dados relacionados a um formulário sem criar um subformulário.
Criar ou adicionar um subformulário
Consulte a tabela seguinte para determinar o procedimento mais adequado à sua situação.
Cenário |
Procedimento recomendado |
---|---|
Pretende que o Access crie tanto um formulário principal como um subformulário e que ligue o subformulário ao formulário principal. |
Criar um formulário que contenha um subformulário com o Assistente de Formulários |
Pretende utilizar um formulário existente como formulário principal, mas pretende que o Access crie um novo subformulário e o adicione ao formulário principal. |
Adicionar um ou mais subformulários a um formulário existente com o Assistente de Subformulários |
Pretende utilizar um formulário existente como formulário principal e adicionar-lhe um ou mais formulários existentes como subformulários. |
Criar um subformulário ao arrastar um formulário para dentro de outro |
Criar um formulário que contenha um subformulário com o Assistente de Formulários
Este procedimento cria uma nova combinação de formulário e subformulário através do Assistente de Formulários. Esta é também a maneira rápida de começar caso ainda não tenha criado os formulários que pretende utilizar como formulário principal ou subformulário.
-
No separador Criar, no grupo Formulários, clique em Assistente de Formulários.
-
Na primeira página do assistente, na lista pendente Tabelas/Consultas, selecione uma tabela ou consulta. Por exemplo, para criar um formulário Colaboradores que apresente as encomendas de cada colaborador num subformulário, selecionamos Tabela: Colaboradores (o lado "um" da relação um-para-muitos).
Nota: Não importa que tabela ou consulta seleciona em primeiro lugar.
-
Faça duplo clique nos campos que pretende incluir desta tabela ou consulta.
-
Na mesma página do assistente, na lista pendente Tabelas/Consultas, selecione outra tabela ou consulta. Neste exemplo, utilizaremos a tabela Encomendas (o lado "muitos" da relação um-para-muitos).
-
Faça duplo clique nos campos que pretende incluir desta tabela ou consulta.
-
Partindo do princípio de que configurou corretamente as relações antes de iniciar o assistente, quando clicar em Seguinte, o assistente pergunta Como deseja ver os dados? – isto é, por que tabela ou consulta. Selecione a tabela no lado "um" da relação um-para-muitos. Neste exemplo, para criar o formulário Colaboradores, clicamos em por Colaboradores. O assistente apresenta um pequeno diagrama de um formulário. A página deverá assemelhar-se à seguinte ilustração:
A caixa na parte inferior do diagrama do formulário representa o subformulário.
Nota: Se o assistente não perguntar Como deseja ver os dados?, significa que o Access não detetou uma relação um-para-muitos entre as tabelas ou consultas que selecionou. O assistente continua, mas o Access não adiciona um subformulário ao formulário. Poderá ser melhor clicar em Cancelar e examinar as relações de tabelas antes de continuar.
-
Na parte inferior da página do assistente, Selecione Formulário com subformulário(s) e clique em Seguinte.
-
Na página Qual o esquema que deseja para o subformulário?, clique no esquema pretendido e, em seguida, clique em Seguinte. Os dois estilos de esquemas dispõem os dados do subformulário em linhas e colunas, mas o esquema em tabela é mais personalizável. Pode adicionar cores, gráficos e outros elementos de formatação a um subformulário em tabela, enquanto que uma folha de dados é mais compacta, tal como a vista de folha de dados de uma tabela.
-
Na página seguinte do assistente, selecione um estilo de formatação para o formulário e, em seguida, clique em Seguinte. Se selecionou Tabular na página anterior, o estilo de formatação que selecionar também será aplicado ao subformulário.
-
Introduza os títulos que pretende dar aos formulários na última página do assistente. O Access atribui nomes aos formulários consoante os títulos que o utilizador introduzir e identifica o subformulário consoante o título que o utilizador introduzir para o subformulário.
-
Especifique se quer abrir o formulário na vista Formulário (para poder ver ou introduzir informações) ou na vista Estrutura (para poder modificar a sua estrutura) e, em seguida, clique em Concluir.
O Access cria dois formulários: um para o formulário principal que contém o controlo de subformulário e um para o próprio subformulário.
Adicionar um ou mais subformulários a um formulário existente com o Assistente de Subformulários
Siga este procedimento para adicionar um ou mais subformulários a um formulário já existente. Para cada subformulário, pode escolher se pretende que o Access crie um novo formulário ou utilize um já existente como subformulário.
-
Clique com o botão direito do rato no formulário já existente no Painel de Navegação e, em seguida, clique em Vista Estrutura.
-
No separador Estrutura do Formulário , no grupo Controlos , clique na seta para baixo para apresentar a galeria Controlos e certifique-se de que a opção Utilizar Assistentes de Controlo está selecionada.
-
No separador Estrutura do Formulário , no grupo Controlos , clique no botão Subformulário/Sub-relatório .
-
Clique no formulário no qual pretende colocar o subformulário.
-
Siga os passos indicados no assistente.
Ao clicar em Concluir, o Access adiciona um controlo de subformulário ao seu formulário. Se definiu o Access para criar um novo formulário para o subformulário, em vez de utilizar um já existente, o Access cria o objeto do novo formulário e adiciona-o ao Painel de Navegação.
Criar um subformulário ao arrastar um formulário para dentro de outro
Siga este procedimento se pretender utilizar um formulário existente como formulário principal e adicionar-lhe um ou mais formulários existentes como subformulários.
-
No Painel de Navegação, clique com o botão direito do rato no formulário que pretende utilizar como formulário principal e clique em Vista de Esquema.
-
Arraste o formulário que pretende utilizar como subformulário do Painel de Navegação para o formulário principal.
O Access adiciona um controlo de subformulário ao formulário principal e vincula o controlo ao formulário que arrastou. O Access tenta também ligar o subformulário ao formulário principal, consoante as relações definidas na base de dados.
-
Repita este passo para adicionar outros subformulários ao formulário principal.
-
Para confirmar que a ligação foi bem-sucedida, no separador Base, no grupo Vistas, clique em Vista, clique em Vista Formulário e, em seguida, percorra vários registos utilizando o seletor de registos do formulário principal. Se o subformulário efetuar a filtragem corretamente para cada colaborador, o procedimento está concluído.
Se o teste anterior falhar, significa que o Access não conseguiu determinar como ligar o subformulário ao formulário principal e que as propriedades Ligar Campos Secundários e Ligar Campos Principais do controlo de subformulário estão em branco. Deverá definir essas propriedades manualmente efetuando o seguinte:
-
Clique com o botão direito do rato no formulário principal no Painel de Navegação e, em seguida, clique em Vista Estrutura.
-
Clique uma vez no controlo de subformulário para o selecionar.
-
Se o painel de tarefas Folha de Propriedades não estiver apresentado, prima F4 para o apresentar.
-
Na Folha de Propriedades, clique no separador Dados.
-
Clique no botão Criar junto à caixa de propriedade Ligar Campos Subordinados .
Aparece a caixa de diálogo Ligador de Campos do Subformulário.
-
Nas listas pendentes Campos Principais e Campos Secundários, selecione os campos aos quais quer ligar os formulários e clique em OK. Se não tiver a certeza sobre que campos deve utilizar, clique em Sugerir para que o Access tente determinar os campos de ligação.
Sugestão: Se não encontrar o campo que pretende utilizar para ligar os formulários, poderá ser necessário editar a origem de registos do formulário principal ou subordinado, de modo a garantir que o campo de ligação está nessa origem. Por exemplo, se o formulário for baseado numa consulta, certifique-se de que o campo de ligação está presente nos resultados da consulta.
-
Guarde o formulário principal, mude para a vista Formulário e confirme que o formulário funciona conforme esperado.
Abrir um subformulário numa nova janela na vista Estrutura
Se quiser fazer alterações de estrutura a um subformulário enquanto trabalha no respetivo formulário principal na vista Estrutura, pode abrir o subformulário na sua própria janela:
-
Clique no subformulário para o selecionar.
-
No separador Estrutura do Formulário , no grupo Ferramentas , clique em Subformulário em Nova Janela.
Alterar a vista predefinida de um subformulário
Quando adicionar um subformulário a um formulário, o controlo de subformulário/subrelatório apresenta o subformulário de acordo com a propriedade Vista Predefinida do mesmo. Esta propriedade pode ser definida com os seguintes valores:
-
Formulário Simples
-
Formulários Contínuos
-
Folha de Dados
-
Formulário Dividido
Ao criar um subformulário pela primeira vez, esta propriedade poderá estar definida comoFormulários Contínuos ou talvez Formulário Simples. No entanto, se definir a propriedade Vista Predefinida de um subformulário como Folha de Dados, o subformulário será apresentado como uma folha de dados no formulário principal.
Para definir a propriedade Vista Predefinida de um subformulário:
-
Feche os objetos abertos.
-
No Painel de Navegação, clique com o botão direito do rato no formulário e, em seguida, clique em Vista Estrutura.
-
Se a Folha de Propriedades ainda não estiver apresentada, prima F4 para a apresentar.
-
Na lista pendente situada no topo da Folha de Propriedades, certifique-se de que a opção Formulário está selecionada.
-
No separador Formato da Folha de Propriedades, defina a propriedade Vista Predefinida com a vista que pretende utilizar.
Nota: Se a vista pretendida não constar da lista, certifique-se de que a propriedade "Permitir vista de..." da vista em causa está definida como Sim. Por exemplo, se pretende especificar Folha de Dados como a vista predefinida do formulário, certifique-se de que a propriedade Permitir Vista de Folha de Dados está definida como Sim.
-
Guarde e feche o subformulário e, em seguida, abra o formulário principal para verificar os resultados.