Quando você está trabalhando com dados relacionais (dados relacionados armazenados em tabelas separadas) em Access, muitas vezes você precisa exibir várias tabelas ou consultas no mesmo formulário. Por exemplo, você pode querer ver dados de um cliente de uma tabela e as informações sobre pedidos de cliente em outra tabela ao mesmo tempo. Subformulários são uma ferramenta conveniente para fazer isso, e o Access fornece muitas maneiras para ajudá-lo a criar subformulários rapidamente.
O que você deseja fazer?
Saiba mais sobre subformulários
Um subformulário é um formulário dentro de outro. O formulário primário é chamado de formulário principal, e o formulário que está incluído no formulário é chamado de subformulário. Uma combinação de formulário/subformulário é algumas vezes citada como um formulário hierárquico, um formulário mestre/detalhado ou um formulário pai/filho.
Subformulários são eficientes principalmente quando se deseja exibir dados de tabelas ou consultas que possuem uma relação de um-para-muitos. Uma relação de um-para-muitos é uma associação entre duas tabelas na qual o valor da chave primária de cada registro na tabela primária corresponde ao valor em um ou mais campos correspondentes de vários registros na tabela relacionada. Por exemplo, você pode criar um formulário que mostre dados do funcionário e que contenha um subformulário mostrando os pedidos de cada funcionário. Os dados na tabela Funcionários são o lado "um" da relação. Os dados na tabela Pedidos são o lado "muitos" da relação (cada funcionário pode ter mais de um pedido).
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 são vinculados de tal forma que o subformulário mostra apenas registros que estão relacionados ao registro atual no formulário principal. Por exemplo, quando o formulário principal mostra as informações de Nancy Freehafer, o subformulário mostra apenas seus pedidos. Se o formulário e o subformulário não estivessem vinculados, o subformulário exibiria todos os pedidos, não somente os de Nancy.
A tabela a seguir define parte da terminologia associada a subformulários. O Access lidará com a maioria dos detalhes se você usar os procedimentos neste artigo, mas é útil saber o que está acontecendo nos bastidores, caso você queira fazer modificações posteriormente.
Termo |
Definição |
---|---|
Controle de subformulário |
O controle que insere um formulário em um formulário. Imagine o controle do subformulário como um "modo" de outro objeto no seu banco de dados, seja ele outro formulário, uma tabela ou uma consulta. O controle do subformulário fornece propriedades que permitem vincular os dados exibidos no controle aos dados no formulário principal. |
Propriedade Objeto de Origem |
A propriedade do controle de subformulário que determina qual objeto é exibido no controle. |
Folha de dados |
Uma simples exibição de dados em linhas e colunas, muito semelhante a uma planilha. O controle do subformulário exibe uma folha de dados quando o objeto de origem é uma tabela ou consulta ou quando ele é um formulário cuja propriedade Modo Padrão está definida como Folha de Dados. Nesses casos, o subformulário às vezes é chamado de folha de dados ou subplanilha de dados em vez de subformulário. |
Propriedade Vincular Campos Filho |
A propriedade do controle de subformulário que especifica quais campos no subformulário o vinculam ao formulário principal. |
Propriedade Vincular Campos Mestre |
A propriedade do controle do subformulário que especifica quais campos no formulário principal o vinculam ao subformulário. |
Observações:
-
Para obter melhores resultados, estabeleça relações de tabelas antes de seguir os procedimentos descritos neste artigo. Isso permite que o Access crie automaticamente os vínculos entre os subformulários e os formulários principais. Para exibir, adicionar ou modificar relações entre as tabelas em seu banco de dados, na guia Ferramentas de Banco de Dados , no grupo Relações, clique em Relações.
-
Quando um controle do subformulário possui um formulário como objeto de origem, ele contém os campos que você coloca no formulário e pode ser visto como um único formulário, um formulário contínuo ou uma folha de dados. Uma vantagem de basear um subformulário em um objeto de formulário é que você pode adicionar campos calculados ao subformulário, como [Quantidade] * [Preço unitário].
-
É possível inserir uma folha de dados ou uma exibição dinâmica em um formulário criando um controle de subformulário cujo objeto de origem seja uma tabela ou uma consulta. Para obter mais informações, consulte a seção Adicionar dados relacionados a um formulário sem criar um subformulário.
Criar ou adicionar um subformulário
Use a tabela a seguir para determinar qual procedimento é mais apropriado para a sua situação.
Cenário |
Procedimento recomendado |
---|---|
Você deseja que o Access crie um formulário principal e um subformulário e que vincule o subformulário ao formulário principal. |
Criar um formulário que contém um subformulário usando o Assistente de Formulário |
Você deseja usar um formulário existente como o formulário principal, mas deseja 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 usando o Assistente de Subformulário |
Você deseja usar um formulário existente como formulário principal e adicionar um ou mais formulários existentes a esse formulário como subformulários. |
Criar um formulário que contém um subformulário usando o Assistente de Formulário
Este procedimento cria uma nova combinação de formulário e subformulário usando o Assistente de Formulário. Além disso, ele é a forma mais rápida de começar caso você ainda não tenha criado os formulários que deseja usar como o formulário ou subformulário principal.
-
Na guia Criar, no grupo Formulários, clique em Assistente de Formulário.
-
Na primeira página do assistente, na lista suspensa Tabelas/Consultas, selecione uma tabela ou consulta. Para este exemplo, para criar um formulário Funcionários que mostra pedidos para cada funcionário em um subformulário, selecione Tabela: Funcionários (o lado "um" da relação um-para-muitos).
Observação: Não importa qual tabela ou consulta você escolhe primeiro.
-
Clique duas vezes nos campos que você deseja incluir desta tabela ou consulta.
-
Na mesma página do assistente, na lista suspensa Tabelas/Consultas, selecione outra tabela ou consulta da lista. Para este exemplo, selecione a tabela Pedidos (o lado "muitos" da relação um-para-muitos).
-
Clique duas vezes nos campos que você deseja incluir desta tabela ou consulta.
-
Quando você clicar em Avançar, supondo que tenha definido as relações corretamente antes de iniciar o assistente, o assistente perguntará Como você deseja exibir os seus dados? — ou seja, a partir de qual tabela ou consulta. Selecione a tabela no lado "um" da relação um-para-muitos. Para este exemplo, para criar o formulário Funcionários, clique em por Funcionários. O assistente exibe um pequeno diagrama de um formulário. A página deve ser parecida à seguinte ilustração:
A caixa na parte inferior do diagrama do formulário representa o subformulário.
Observação: Se o assistente não perguntar Como você deseja visualizar seus dados?, significa que o Access não detectou uma relação um-para-muitos entre as tabelas ou consultas selecionadas. O assistente prosseguirá, mas o Access não adicionará um subformulário ao formulário. Você pode clicar em Cancelar e examinar as suas 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 Avançar.
-
Na página Que layout você deseja para o seu subformulário?, clique na opção de layout desejada e, em seguida, clique em Avançar. Ambos os estilos de layout organizam os dados do subformulário em linhas e colunas, mas um layout tabular é mais personalizável. Você pode adicionar cor, elementos gráficos e outros elementos de formatação a um subformulário tabular, enquanto uma folha de dados é mais compacta, como o modo folha de dados de uma tabela.
-
Na próxima página do assistente, selecione um estilo de formatação para o formulário e clique em Avançar. Se você escolheu Tabular na página anterior, o estilo de formatação que você escolher também será aplicado ao subformulário.
-
Na última página do assistente, digite os títulos desejados para os formulários. O Access nomeia os formulários com base nos títulos que você digita e os rótulos do subformulário com base no título que você digita para o subformulário.
-
Especifique se você deseja abrir o formulário no modo Formulário, para poder visualizar ou inserir informações, ou no modo Design, para poder modificar seu design, e clique em Concluir.
O Access cria dois formulários: um para o formulário principal que contém o controle do subformulário e outro para o subformulário propriamente dito.
Adicionar um ou mais subformulários a um formulário existente usando o Assistente de Subformulário
Use este procedimento para adicionar um ou mais subformulários a um formulário existente. Para cada subformulário, você pode decidir se deseja que o Access crie um novo formulário ou use um formulário existente como o subformulário.
-
Clique com o botão direito do mouse no formulário existente no Painel de Navegação e clique em Modo Design.
-
Na guia Design de Formulários , no grupo Controles , clique na seta para baixo para exibir a galeria Controles e verifique se Os Assistentes de Controle de Uso estão selecionados.
-
Na guia Design de Formulários , no grupo Controles , clique no botão Subform/Sub-relatório .
-
Clique no formulário em que deseja colocar o subformulário.
-
Siga as instruções no assistente.
Quando você clica em Concluir, o Access adiciona um controle de subformulário ao seu formulário. Se você optar que o Access crie um novo formulário para o subformulário, em vez de usar um formulário existente, o Access criará o novo objeto do formulário e o adicionará ao Painel de Navegação.
Criar um subformulário arrastando um formulário até outro
Use este procedimento se você quiser usar um formulário existente como formulário principal e quiser adicionar um ou mais formulários existentes a esse formulário como subformulários.
-
No Painel de Navegação, clique com o botão direito do mouse no formulário que deseja usar como o formulário principal e clique em Modo Layout.
-
Arraste o formulário que você deseja usar como o subformulário do Painel de Navegação até o formulário principal.
O Access adiciona um controle de subformulário ao formulário principal e associa o controle ao formulário que você arrastou do Painel de Navegação. O Access também tenta vincular o subformulário ao formulário principal, com base nas relações que foram definidas no seu banco de dados.
-
Repita esta etapa para incluir subformulários adicionais ao formulário principal.
-
Para verificar se essa vinculação foi bem sucedida, na guia Página Inicial, no grupo Modos, clique em Modo e em Modo Formulário e use o seletor de registro do formulário principal para avançar pelos diversos registros. Se o subformulário filtrar a si mesmo corretamente para cada funcionário, o procedimento estará concluído.
Se o teste anterior não funcionar, significa que o Access não pôde determinar como vincular o subformulário ao formulário principal, e as propriedades Vincular Campos Filho e Vincular Campos Mestre do controle do subformulário estão em branco. Você deverá definir essas propriedades manualmente fazendo o seguinte:
-
Clique com o botão direito no formulário principal no Painel de Navegação e, em seguida, clique no Modo Design.
-
Clique no controle do subformulário uma vez para selecioná-lo.
-
Se o painel de tarefas Folha de Propriedades não for exibido, pressione F4 para exibi-lo.
-
Na Folha de Propriedades, clique na guia Dados.
-
Clique no botão Criar ao lado da caixa de propriedade Link Child Fields .
A caixa de diálogo Vinculador de Campo de Subformulário é exibida.
-
Nas listas suspensas Campos Mestre e Campos Filho, selecione os campos com os quais deseja vincular os formulários e clique em OK. Se não tiver certeza de quais campos usar, clique em Sugerir para que o Access tente determinar os campos responsáveis pelo vínculo.
Dica: Caso você não veja o campo que deseja usar para vincular os formulários, talvez tenha que editar a fonte de registro do formulário mestre ou do formulário filho para ter certeza de que o campo vinculado esteja nele. Por exemplo, se o formulário for baseado em uma consulta, verifique se o campo responsável pelo vínculo está presente nos resultados da consulta.
-
Salve o formulário principal, alterne para o modo Formulário e verifique se o formulário funciona conforme esperado.
Abrir um subformulário em uma nova janela no modo Design
Se você quiser fazer alterações no design de um subformulário enquanto estiver trabalhando em seu formulário principal no modo Design, pode abrir o subformulário em sua própria janela:
-
Clique no subformulário para selecioná-lo.
-
Na guia Design de Formulários , no grupo Ferramentas , clique em Subformar em Nova Janela.
Alterar o modo padrão de um subformulário
Quando você adiciona um subformulário a um formulário, o controle do subformulário/sub-relatório exibe o subformulário de acordo com a propriedade Modo Padrão do subformulário. Essa propriedade pode ser definida com os seguintes valores:
-
Formulário Simples
-
Formulário Contínuo
-
Folha de Dados
-
Formulário dividido
Quando você cria um subformulário pela primeira vez, essa propriedade pode ser definida como Formulários Contínuos ou talvez como Formulário Simples. No entanto, se você definir a propriedade Modo Padrão de um subformulário como Folha de Dados, o subformulário será exibido como uma folha de dados no formulário principal.
Para definir a propriedade Modo Padrão de um subformulário:
-
Feche os objetos abertos.
-
No Painel de Navegação, clique com o botão direito do mouse no subformulário e clique em Modo Design.
-
Se a Folha de Propriedades não for exibida, pressione F4 para exibi-la.
-
Na lista suspensa na parte superior da Folha de Propriedades, verifique se a opção Formulário está selecionada.
-
Na guia Formato da Folha de Propriedades, defina a propriedade Modo Padrão como o modo que você deseja usar.
Observação: Se o modo que você deseja usar não estiver na lista, verifique se a propriedade “Permitir…Modo” para o modo está definida como Sim. Por exemplo, para especificar Folha de Dados como o modo padrão para o formulário, verifique se a propriedade Permitir Modo de Folha de Dados está definida como Sim.
-
Salve e feche o subformulário e depois abra o formulário principal para verificar os resultados.