Ao trabalhar com dados relacionais no Access, é comum você precisar exibir várias tabelas ou consultas no mesmo formulário. Por exemplo, talvez você queira ver dados de clientes de uma tabela e informações de pedidos de clientes de outra tabela ao mesmo tempo. Os subformulários facilitam isso, e o Access oferece várias maneiras rápidas de criá-los.
O que você deseja fazer?
- Saiba mais sobre subformulários
- Criar ou adicionar um subformulário
- Criar um formulário que contém um subformulário usando o Assistente de Formulário
- Adicione um ou mais subformulários a um formulário existente usando o Assistente de Subformulário
- Criar um subformulário arrastando um formulário até outro
- Abrir um subformulário em uma nova janela no modo Design
- Alterar o modo padrão de um subformulário
- Adicionar dados relacionados a um formulário sem criar um subformulário
Saiba mais sobre subformulários
Um subformulário é um formulário inserido em outro formulário. O formulário primário é chamado de formulário principal e o formulário anexo é chamado de subformulário. Uma combinação de formulário/subformulário às vezes é chamada de formulário hierárquico, formulário master/detalhe ou formulário pai/filho.
Os subformulários funcionam especialmente bem quando você deseja mostrar dados de tabelas ou consultas que têm uma relação um-para-muitos. Nesse tipo de relação, o valor da chave primária de cada registro na tabela primária corresponde ao valor no campo ou campos correspondentes de muitos registros na tabela relacionada. Por exemplo, você pode criar um formulário que exiba os dados dos funcionários e um subformulário que exiba 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, pois cada funcionário pode ter mais de um pedido.
O formulário principal mostra dados do lado "um" da relação.
O subformulário mostra 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 fossem desvinculados, o subformulário exibiria todos os pedidos, não apenas os de Nancy.
A tabela a seguir define os termos relacionados a subformulários. O Access cuidará da maioria dos detalhes se você usar os procedimentos deste artigo, mas é útil saber o que está acontecendo nos bastidores se você precisar fazer alterações mais tarde.
| Termo | Explicaçã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 de subformulário exibe uma folha de dados quando seu objeto de origem é uma tabela ou consulta, ou quando seu objeto de origem é um formulário cuja Default View propriedade está definida como Datasheet. 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 qual campo ou campos no subformulário o vinculam ao formulário principal. |
| Propriedade Vincular Campos Mestre | A propriedade do controle de subformulário que especifica qual(is) campo(s) no formulário principal vinculá-lo ao subformulário. |
Observação
- 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 no banco de dados, na guia Ferramentas de Banco de Dados , no grupo Relações , clique em Relações.
- Quando um controle de subformulário tem um formulário como objeto de origem, ele contém os campos colocados no formulário. Você pode exibi-la como um formulário único, 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
[Quantity] * [Unit price]. - É 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 subformulário arrastando um formulário até outro |
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. Também é a maneira mais rápida de começar, caso ainda não tenha criado os formulários que deseja usar como formulário principal ou subformulário.
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 de Funcionários que exiba os pedidos de 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. Neste exemplo, para criar o formulário Funcionários, selecione 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. Os dois estilos de layout organizam os dados do subformulário em linhas e colunas, mas um layout de tabela oferece mais opções. 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 deseja abrir o formulário no modo Formulário, para poder visualizar ou inserir informações, ou no modo Design, para modificar seu design e, em seguida, 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 próprio subformulário.
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 do Formulário , no grupo Controles , clique na seta para baixo para exibir a galeria Controles e certifique-se de que Usar Assistentes de Controle esteja selecionado.
- Na guia Design do Formulário , no grupo Controles , clique no botão Subformulário/Sub-relatório .
- Clique no formulário em que você 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 desejar usar um formulário existente como formulário principal e adicionar um ou mais formulários existentes a ele 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, o Access não pôde determinar como vincular o subformulário ao formulário principal e as Link Child Fields propriedades e Link Master Fields do controle de 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 estiver sendo exibido, pressione F4 para exibi-lo.
Na Folha de Propriedades, clique na guia Dados.
Clique no botão Construir ao lado da caixa de
Link Child Fieldspropriedade.
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
Se você não vir o campo que deseja usar para vincular os formulários, talvez seja necessário editar a fonte de registro do formulário master ou do formulário filho para garantir que o campo de vinculação seja incluído. 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 do Formulário , no grupo Ferramentas , clique em Subformulário na Nova Janela.
Alterar o modo padrão de um subformulário
Quando você adiciona um subformulário a um formulário, o controle de subformulário/sub-relatório exibe o subformulário de acordo com a propriedade do Default View 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 Formulário Único. No entanto, se você definir a Default View propriedade de um subformulário como Datasheet, o subformulário será exibido como uma folha de dados no formulário principal.
Para definir a Default View propriedade 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 de exibição que você deseja usar não estiver na lista, verifique se a
Allow...Viewpropriedade desse modo de exibição 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.
Adicionar dados relacionados a um formulário sem criar um subformulário
Você nem sempre precisa criar um objeto de formulário separado para exibir dados relacionados. Por exemplo, se você estiver trabalhando em um formulário no modo Layout ou Design e arrastar uma tabela ou consulta do Painel de Navegação até esse formulário, o Access criará um controle de subformulário/sub-relatório que exibe os dados desse objeto. A propriedade do Default View objeto determina como os dados são exibidos. Normalmente, isso é definido para o modo Folha de Dados, mas você também pode definir a Default View propriedade de uma tabela ou consulta como Formulário Único, Formulário Dividido ou Formulários Contínuos, proporcionando mais flexibilidade na exibição de dados relacionados em formulários.
Observação
A alteração da propriedade de Default View uma tabela ou consulta determina como ela é exibida sempre que é aberta, quer você a abra no Painel de Navegação ou a exiba em um controle de subformulário/sub-relatório. Como a alteração das configurações do modo de uma tabela às vezes pode causar confusão quando ela é aberta a partir do Painel de Navegação, recomendamos o uso de uma consulta para este procedimento, em vez de uma tabela.