Quando você trabalha com dados relacionais no Access, muitas vezes você precisa exibir várias tabelas ou consultas no mesmo formulário. Por exemplo, talvez você queira ver dados do cliente de uma tabela e informações de pedido de cliente de outra tabela ao mesmo tempo. Os subformos 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
- Adicionar um ou mais subformações a um formulário existente usando o Assistente de Subformação
- 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 subforma é um formulário inserido em outro formulário. O formulário primário é chamado de formulário principal e o formulário fechado é chamado de subforma. Às vezes, uma combinação de formulário/subform é chamada de formulário hierárquico, um formulário master/detalhe ou um formulário pai/filho.
Os subformos funcionam especialmente bem quando você deseja mostrar dados de tabelas ou consultas que têm uma relação de 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 correspondente ou campos de muitos registros na tabela relacionada. Por exemplo, você pode criar um formulário que exibe dados de funcionários e um subforma que exibe 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 uma ordem.
O formulário principal mostra dados do lado "um" da relação.
O subforma 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 subforma fossem desvinculados, o subforma exibiria todas as ordens, não apenas de Nancy.
A tabela a seguir define os termos relacionados aos subformos. O Access manipula a maioria dos detalhes se você usar os procedimentos neste artigo, mas ajuda a 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 subformação 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 é 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 subforma que especifica qual campo ou campos no subforma o vinculam ao formulário principal. |
| Propriedade Vincular Campos Mestre | A propriedade do controle de subforma que especifica qual campo ou campos no formulário principal o vincula ao subforma. |
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 em seu banco de dados, na guia Ferramentas de Banco de Dados , no grupo Relações , clique em Relações.
- Quando um controle de subforma tem um formulário como objeto de origem, ele contém os campos que você coloca no formulário. Você pode exibi-lo como um único formulário, formulário contínuo ou folha de dados. Uma vantagem de basear um subforma em um objeto de formulário é que você pode adicionar campos calculados ao subforma, 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 se você ainda não criou os formulários que deseja usar como o formulário principal ou o subforma.
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 Employees que exibe pedidos para cada funcionário em um subforma, selecione Tabela: Funcionários (o lado "um" da relação de 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 de 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, 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. Ambos os estilos de layout organizam os dados de subformação em linhas e colunas, mas um layout tabular 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 de exibição Formulário, para que você possa exibir ou inserir informações ou no modo design, para que você possa modificar seu design e, em seguida, clicar em Concluir. O acesso cria dois formulários : um para o formulário principal que contém o controle de subforma e outro para o próprio subformforma.
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 você deseja colocar o subforma.
- 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 esse procedimento se quiser usar um formulário existente como o formulário principal e adicionar um ou mais formulários existentes a ele como subformações.
- 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 poderá determinar como vincular o subforma ao formulário principal e as Link Child Fields propriedades e Link Master Fields do controle de subformação ficarã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
Link Child Fieldscaixa de propriedades.
A caixa de diálogo Vinculador de Campo de Subformação é 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 formulário filho para garantir que o campo de vinculação esteja 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 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 subforma a um formulário, o controle subforma/sub-relatório exibe o subforma de acordo com a propriedade do Default View subformador. 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 subforma 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 subforma como Datasheet, o subforma será exibido como uma planilha de dados no formulário principal.
Para definir a Default View propriedade de um subforma:
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 ainda não estiver 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 a exibição que você deseja usar não estiver na lista, verifique se a
Allow...Viewpropriedade para essa 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
Nem sempre você 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 como exibição datasheet, 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, dando-lhe mais flexibilidade na exibição de dados relacionados em formulários.
Observação
Alterar a Default View propriedade para uma tabela ou consulta determina como ela é exibida sempre que ela é aberta, se você a abre do Painel de Navegação ou a exibe em um controle de subformação/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.