Quando trabalha com dados relacionais (em que os dados relacionais estão armazenados em tabelas separadas), precisa frequentemente de ver informações de mais do que uma tabela ou consulta no mesmo relatório. Por exemplo, se quiser ver dados do cliente, mas também quiser ver informações sobre as encomendas do cliente ao mesmo tempo. Um sub-relatório é uma ferramenta útil no Access para esse efeito, uma vez que lhe permite apresentar as informações sobre encomendas no relatório com as informações dos clientes de forma lógica e legível. O Access dispõe de várias formas de o ajudar a criar sub-relatórios rapidamente.
O que pretende fazer?
Compreender os sub-relatórios
Um sub-relatório é um relatório inserido noutro relatório. Quando combina relatórios, um deles tem de servir como o relatório principal que contém o outro relatório. Um relatório principal é vinculado ou desvinculado. Um relatório vinculado pode apresentar dados e tem uma tabela, consulta ou instrução SQL especificada na respetiva propriedade Origem dos Registos. Um relatório desvinculado não é baseado numa tabela, consulta ou instrução SQL (ou seja, a propriedade Origem dos Registos do relatório está vazia).
Exemplo de um relatório principal desvinculado com dois sub-relatórios não relacionados
Um relatório principal desvinculado não pode apresentar dados próprios, mas pode servir como um relatório principal para sub-relatórios não relacionados que pretenda combinar.
1. O relatório principal desvinculado contém dois sub-relatórios.
2. Um sub-relatório resume as vendas por colaborador.
3. O outro sub-relatório resume as vendas por categoria.
Exemplo de um relatório principal e um sub-relatório vinculados à mesma origem de registos
Pode utilizar o relatório principal para mostrar registos de detalhes (como todas as vendas num ano) e utilizar um sub-relatório para mostrar informações resumidas (como o total de vendas por cada trimestre).
1. O sub-relatório resume as vendas anuais por trimestre.
2. O relatório principal apresenta as vendas diárias.
Exemplo de um relatório principal e um sub-relatório vinculados a origens de registos relacionadas
Um relatório principal pode conter dados comuns a um ou mais sub-relatórios. Neste caso, o sub-relatório contém dados relacionados com os dados no relatório principal.
1. O relatório principal apresenta o nome e a cidade de cada feira.
2. O sub-relatório apresenta os representantes que vão participar em cada feira.
Subformulários num relatório
Um relatório principal pode incluir subformulários além dos sub-relatórios e pode incluir o número de subformulários e sub-relatórios que quiser. Além disso, um relatório principal pode conter até sete níveis de subformulários e sub-relatórios. Por exemplo, um relatório pode conter um sub-relatório e esse sub-relatório pode conter um subformulário ou um sub-relatório e assim sucessivamente, até sete níveis.
Se adicionar um subformulário a um relatório e, em seguida, abrir o relatório na vista Relatório, pode utilizar o subformulário para filtrar e navegar nos registos. As macros incorporadas e o código VBA (Visual Basic for Applications) anexados ao formulário e os respetivos controlos continuarão a ser executados, apesar de alguns eventos estarem desativados neste contexto. Não pode adicionar, editar ou eliminar registos com um subformulário num relatório.
Ligar um relatório a um subformulário ou sub-relatório
Quando insere um subformulário ou um sub-relatório com informações relacionadas com os dados no relatório principal, o controlo do sub-relatório tem de estar ligado ao relatório principal. A ligação assegura que os registos apresentados no subformulário ou sub-relatório correspondem corretamente aos registos impressos no relatório principal.
Quando cria um subformulário ou sub-relatório com um assistente ou ao arrastar um objeto do Painel de Navegação para um relatório, o Access liga automaticamente o subformulário ao relatório principal se uma das seguintes condições for correspondida.
-
O utilizador define relações para as tabelas que seleciona ou define relações para as tabelas subjacentes às consultas que seleciona.
-
O relatório principal baseia-se numa tabela com uma chave primária e o subformulário ou sub-relatório baseia-se numa tabela que contém um campo com o mesmo nome que a chave primária e tem o mesmo tipo de dados ou um compatível. Por exemplo, se a chave primária da tabela subjacente ao relatório principal for um campo Numeração Automática e a respetiva propriedade TamanhoDoCampo estiver definida como Número Inteiro Longo, o campo correspondente na tabela subjacente ao subformulário ou sub-relatório tem de ser um campo Número com a respetiva propriedade TamanhoDoCampo definida como Número Inteiro Longo. Se selecionar uma consulta ou várias consultas como a origem de registos de um subformulário ou sub-relatório, as tabelas subjacentes na consulta ou consultas têm de corresponder às mesmas condições.
Criar um sub-relatório
Se o sub-relatório vai ser ligado ao relatório principal, certifique-se de que as origens de registos subjacentes estão relacionadas antes de utilizar o procedimento seguinte.
Utilizar o Assistente de Sub-relatórios para criar um sub-relatório
Este procedimento pressupõe que já tem um relatório ao qual pretende adicionar um sub-relatório. Para obter mais informações sobre a criação de um relatório, consulte os artigos Criar um relatório simples ou Criar um relatório agrupado ou de resumo.
-
No Painel de Navegação, clique com o botão direito do rato no relatório ao qual pretende adicionar o sub-relatório e, em seguida, clique em Vista Estrutura.
-
No separador Estrutura, no grupo Controlos, abra a Galeria de Controlos ao clicar na seta para baixo no canto inferior direito:
-
No menu apresentado, certifique-se de que a opção Utilizar Assistentes de Controlo está selecionada.
-
Abra a Galeria de Controlos novamente e clique em Subformulário/Sub-relatório.
-
No relatório, clique no local onde quer colocar o sub-relatório.
-
Se for apresentada uma caixa de diálogo de aviso, clique em Abrir para iniciar o assistente.
-
Na primeira página do Assistente de Sub-relatórios, se quiser criar um novo subformulário ou sub-relatório e baseá-lo numa tabela ou consulta, clique em Utilizar Tabelas e Consultas Existentes. Se já existir um relatório ou formulário que pretende utilizar como sub-relatório, clique em Utilizar um relatório ou um formulário, selecione o relatório ou formulário na lista e, em seguida, clique em Seguinte.
Nota: Se não existirem outros relatórios ou formulários na base de dados, a lista estará em branco e a opção Utilizar um relatório ou um formulário não estará disponível.
-
Se selecionou a opção Utilizar um relatório ou um formulário na página anterior do assistente, ignore este passo e vá diretamente para o passo 9. Caso contrário, na lista Tabelas/Consultas, selecione a tabela ou consulta que contém os campos que pretende incluir no sub-relatório e, em seguida, faça duplo clique nos campos que pretende na lista Campos Disponíveis para os adicionar ao sub-relatório.
Se tiver a intenção de ligar o sub-relatório ao relatório principal, certifique-se de que inclui o campo ou os campos que serão utilizados para criar a ligação, mesmo que não queira que os mesmos sejam apresentados. Normalmente, o campo de ligação é um campo ID. Na ilustração acima, a tabela Encomendas está na origem de registos do sub-relatório e a tabela Clientes é a origem de registos do relatório principal. Uma vez que a tabela Encomendas está relacionada com a tabela Clientes através do campo ID do Cliente, esse campo é adicionado à lista Campos Selecionados.
Nota: Pode incluir campos de várias tabelas e consultas no seu sub-relatório. Quando acabar de adicionar campos de uma tabela, selecione a tabela ou consulta seguinte na lista Tabelas/Consultas e, em seguida, adicione os campos que pretende.
Clique em Seguinte para continuar.
-
Nesta página do assistente, pode determinar como quer ligar o sub-relatório ao relatório principal. Se o Access encontrar campos que pareçam ser adequados para ligar o sub-relatório ao relatório principal, o assistente apresenta uma lista de sugestões de ligações possíveis.
Pode selecionar a sugestão de ligação que parecer ser a mais adequada para a sua situação ou, se não quiser que o sub-relatório esteja ligado ao relatório principal, pode selecionar Nenhum. Se quiser ligar o sub-relatório ao relatório principal, mas nenhuma das sugestões parecer adequada, clique em Definir sem lista.
Nota: Se o assistente não conseguir encontrar campos adequados para a ligação, não apresentará uma lista de sugestões e selecionará automaticamente a opção Definir sem lista.
Quando a opção Definir sem lista está selecionada, o assistente apresenta dois conjuntos de listas.
-
Em Campos do formulário/relatório, selecione o campo ou os campos do relatório principal que pretende utilizar para ligar o relatório principal ao subformulário ou sub-relatório. Pode selecionar até três campos e cada campo que selecionar tem de corresponder a um campo relacionado na origem de dados do subformulário ou sub-relatório.
-
Em Campos do subform./subrel., selecione o campo ou os campos correspondentes do subformulário ou sub-relatório que estão ligados aos campos do relatório principal que selecionou.
-
Para deixar o subformulário ou sub-relatório sem ligação ao relatório principal, certifique-se de que todas as listas estão em branco.
Clique em Seguinte para continuar.
-
-
Na última página do assistente, escreva um nome para o subformulário ou sub-relatório. Também pode apenas clicar em Concluir para aceitar a predefinição.
O Access adiciona um controlo de sub-relatório ao seu relatório e vincula o controlo (ou seja, define a propriedade Objeto de Origem do controlo) da seguinte forma:
-
Se tiver selecionado a opção Utilizar um relatório ou um formulário na primeira página do assistente, o Access vincula o controlo do sub-relatório ao relatório ou formulário que especificou.
-
Se selecionou Utilizar Tabelas e Consultas Existentes na primeira página do assistente, o Access cria um novo objeto de relatório no Painel de Navegação e, em seguida, vincula o controlo do sub-relatório ao mesmo. O nome do novo objeto de relatório é o nome que escreveu na última página do assistente.
Adicionar uma tabela, consulta, formulário ou relatório a um relatório como sub-relatório
Uma forma rápida de adicionar um sub-relatório a um relatório é abrir o relatório principal na vista Esquema ou vista Estrutura e, em seguida, arrastar um objeto para o mesmo a partir do Painel de Navegação. Se quiser que o sub-relatório seja ligado ao relatório principal, certifique-se de que as origens de registos subjacentes estão relacionadas e que as origens de registos incluem os campos que serão utilizados para ligar o subformulário ou sub-relatório ao relatório principal.
-
No Painel de Navegação, clique com o botão direito do rato no relatório que pretende utilizar como relatório principal e, em seguida, clique em Vista Esquema ou Vista Estrutura no menu de atalho.
-
Arraste uma tabela, uma consulta ou outro relatório do Painel de Navegação para a secção do relatório principal em que pretende que o sub-relatório seja apresentado.
O Access segue um dos seguintes procedimentos:
-
Se o Access conseguir determinar como ligar os dois objetos, adiciona um controlo de sub-relatório ao relatório. Se adicionar um formulário ou relatório, o Access vincula o controlo de sub-relatório a esse objeto. Se adicionar uma tabela ou consulta, o Access começa por criar um objeto de relatório e, em seguida, vincula o controlo de sub-relatório a esse novo objeto.
-
Se o Access não conseguir determinar como ligar os dois objetos, será apresentado o Assistente de Sub-relatórios. Para continuar, siga o procedimento na secção Utilizar o Assistente de Sub-relatórios para criar um sub-relatório, a partir do passo 9.
Após concluir o assistente, o Access adiciona o sub-relatório ao relatório.
Utilize o seguinte procedimento para verificar novamente se o subformulário ou sub-relatório está corretamente ligado ao relatório principal.
-
Clique no controlo de sub-relatório para o selecionar.
-
Se a folha de propriedades ainda não estiver visível, prima F4 para a visualizar.
-
No separador Dados da folha de propriedades, examine as propriedades Ligar Campos Principais e Ligar Campos Subordinados.
-
Para um subformulário ou sub-relatório não ligado, ambas estas propriedades devem estar em branco.
-
Para um subformulário ou sub-relatório ligado, as propriedades Ligar Campos Principais e Ligar Campos Subordinados devem apresentar o campo ou os campos relacionados com os dois objetos juntos. Por exemplo, se o relatório principal apresentar informações da tabela Colaboradores e o subformulário ou sub-relatório apresentar informações da tabela Encomendas, a propriedade Ligar Campos Principais deve apresentar o campo ID da tabela Colaboradores e a propriedade Ligar Campos Subordinados deve apresentar o campo ID do Colaborador da tabela Encomendas.
-
Poderá ser necessário editar propriedades para que o subformulário ou sub-relatório funcione corretamente. Siga o seguinte procedimento.
-
No separador Dados da folha de propriedades, clique na caixa de propriedades Ligar Campos Principais e, em seguida, clique no botão Construir .
É apresentada a caixa de diálogo Ligador de Campos do Subrelatório.
-
Nas listas Campos Principais e Campos Subordinados, selecione os campos aos quais quer ligar os relatórios. 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. Quanto terminar, clique em OK.
Se não encontrar o campo que pretende utilizar para ligar o relatório, poderá ser necessário editar a origem de registos do relatório principal ou do subformulário ou sub-relatório, para se certificar de que esta contém o campo de ligação. Por exemplo, se o relatório for baseado numa consulta, certifique-se de que o campo de ligação está presente nos resultados da consulta.
-
Guarde o relatório principal e mude para a vista Relatório. Em seguida, verifique se o relatório está a funcionar como esperado.
Adicionar uma tabela ou consulta a um relatório como uma base de dados
Uma folha de dados é uma representação visual simples de dados, semelhante a uma folha de cálculo. Cada coluna numa folha de dados representa um campo na tabela ou consulta de origem e cada linha representa um registo. Pode utilizar um controlo Subformulário/Sub-relatório para mostrar uma folha de dados num relatório. Esta é uma boa técnica a utilizar em situações em que pretenda obter uma apresentação de dados compacta mas que não precisa das funcionalidades de formatação de um objeto de formulário ou relatório. Para adicionar uma folha de dados a um relatório:
-
No Painel de Navegação, clique com o botão direito do rato no relatório que pretende utilizar como relatório principal e, em seguida, clique em Vista Estrutura no menu de atalho.
-
No separador Estrutura, no grupo Controlos, abra a galeria Controlos ao clicar na seta para baixo no canto inferior direito:
-
No menu apresentado, certifique-se de que a opção Utilizar Assistentes de Controlosnão está selecionada.
-
Abra a Galeria de Controlos novamente e clique em Subformulário/Sub-relatório.
-
No relatório, clique no local onde quer colocar o sub-relatório.
-
Se o Assistente de Sub-relatórios for iniciado, clique em Cancelar para o fechar.
-
Se a folha de propriedades ainda não estiver visível, prima F4 para a visualizar.
-
No relatório, clique no novo controlo de sub-relatório para o selecionar.
-
No separador Dados da folha de propriedades, clique na seta na caixa de propriedades Objeto de Origem e, em seguida, clique na tabela ou consulta que pretende apresentar no controlo de sub-relatório. Por exemplo, para apresentar a tabela Encomendas, clique em Tabela.Encomendas.
O Access tenta ligar a folha de dados ao relatório principal, com base nas relações que foram definidas na base de dados.
-
No separador Dados da folha de propriedades, examine as propriedades Ligar Campos Principais e Ligar Campos Subordinados.
-
Para uma folha de dados não ligada, certifique-se de que ambas estas propriedades estão em branco.
-
Para uma folha de dados ligada, certifique-se de que as propriedades Ligar Campos Principais e Ligar Campos Subordinados apresentam o campo ou os campos que relacionam o relatório principal com a folha de dados. Por exemplo, se o relatório principal apresentar informações da tabela Colaboradores e a folha de dados apresentar informações da tabela Encomendas, a propriedade Ligar Campos Principais deve apresentar o campo ID da tabela Colaboradores e a propriedade Ligar Campos Subordinados deve apresentar o campo ID do Colaborador da tabela Encomendas.
-
Em alguns casos, poderá precisar de definir as propriedades de ligação de campos manualmente. Pode fazê-lo ao seguir o seguinte procedimento.
-
No separador Dados da folha de propriedades, clique na caixa de propriedades Ligar Campos Principais e, em seguida, clique no botão Construir .
-
Se for apresentada uma caixa de diálogo de aviso, clique em Abrir.
É apresentada a caixa de diálogo Ligador de Campos do Subrelatório.
-
Nas listas Campos Principais e Campos Subordinados, selecione os campos que pretende utilizar para ligar o relatório principal à folha de dados. 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. Quanto terminar, clique em OK.
Se não encontrar um campo que pretende utilizar para ligar, precisa de editar a origem de registos do relatório principal ou da folha de dados, para se certificar de que esta contém o campo de ligação. Por exemplo, se a folha de dados for baseada numa consulta, certifique-se de que o campo de ligação está presente nos resultados da consulta.
-
Guarde o relatório principal e mude para a vista Relatório. Em seguida, verifique se o relatório está a funcionar como esperado.
Fazer alterações à estrutura de um sub-relatório
Após adicionar um sub-relatório a um relatório, poderá querer fazer alterações à estrutura do sub-relatório ou poderá querer consultar os dados do sub-relatório no relatório principal. As seguintes secções fornecem sugestões sobre como realizar estas tarefas.
Abrir um subformulário ou sub-relatório numa nova janela na vista Estrutura
Para efetuar alterações de estrutura a um subformulário ou sub-relatório enquanto trabalha no respetivo relatório principal na vista Estrutura, pode abrir o subformulário ou sub-relatório na sua própria janela.
-
Clique no subformulário ou sub-relatório para o selecionar.
-
No separador Estrutura, no grupo Ferramentas, clique em Sub-relatório em Nova Janela.
Nota: Este comando não estará disponível se o controlo de subformulário/sub-relatório estiver vinculado a uma tabela ou consulta.
Apresentar um total de um sub-relatório no relatório principal
Suponhamos que utiliza um sub-relatório chamado Encomendas que contém uma caixa de texto chamada Total de Portes de Envio e essa caixa de texto calcula a soma da coluna Portes de Envio. Para apresentar a soma do sub-relatório no relatório principal, tem de adicionar uma caixa de texto ao relatório principal e, em seguida, utilizar uma expressão para consultar a caixa de texto Total de Portes de Envio no sub-relatório. Pode fazê-lo ao seguir o seguinte procedimento.
-
Clique com o botão direito do rato no relatório principal no Painel de Navegação e, em seguida, clique em Vista Estrutura no menu de atalho.
-
No separador Estrutura, no grupo Controlos, clique em Caixa de Texto.
-
No relatório principal, clique no local onde quer colocar a nova caixa de texto.
-
Se a folha de propriedades ainda não estiver visível, prima F4 para a visualizar.
-
No separador Dados da folha de propriedades, na caixa de propriedade Origem do Controlo, introduza a seguinte expressão.
=ISe(É.Erro([Sub-relatório Encomendas].[Relatório]![Total de Portes de Envio]),0,[Sub-relatório Encomendas].[Relatório]![Total de Portes de Envio])
Notas:
-
Neste exemplo, pode utilizar a expressão mais simples =[Sub-relatório Encomendas].[Relatório]![Total de Portes de Envio] mas, em seguida, se o sub-relatório não contiver dados, o controlo no relatório principal apresenta #Erro. Utilizar a função É.Erro dentro da função ISe, conforme apresentado na primeira expressão, assegura que a caixa de texto no relatório principal mostra um zero (0) se o sub-relatório não devolver quaisquer dados.
-
Pode utilizar o Construtor de Expressões para criar a expressão ao clicar no botão Construir na caixa de propriedade Origem do Controlo.
-
-
No separador Formato na folha de propriedades, defina a propriedade Formato para o valor adequado (neste caso, Moeda).
-
Guarde o relatório e mude para a vista Relatório para verificar se o cálculo está a funcionar como esperado.