Data Report - Agrupando e totalizando campos do relatório


Vou ser sincero : Eu não gosto de usar o Data Report ; prefiro usar o Crystal Reports ou o objeto Printer quando tenho que gerar meus relatórios. Como recebo muitas perguntas sobre o Data Report vou tentar mostrar neste artigo algumas das dúvidas relacionadas com a geração de relatórios usando grupos e a totalização de campos.

Se você esta começando agora com o Data Report saiba que ele esta disponível apenas na versão 6.0 do VB. Para saber mais sobre o Data Report leia os artigos :

  1. Usando o Data Report.
  2. Data Report - Gerando relatórios dinâmicos.
  3. Data Report - Passando parâmetros para geração do relatório

Neste artigo vou criar um relatório usando o Data Report e mostrar como criar grupos e usar funções para totalizar valores dos campos no relatório.

Criando a consulta para gerar o relatório

Neste exemplo eu vou usar o banco de dados Northwind.mdb do Access (versão em português) , no meu caso eu fiz uma cópia do arquivo com o nome de Nwind2002.mdb. A ídeia é gerar um relatório de produtos por categoria de forma a criar um grupo com o nome da categoria e mostrar as informações do produto totalizando os campos itens e o preço unitário no relatório.

A primeira coisa a fazer é criar uma consulta que exiba os produtos por categoria ; a maneira mais fácil de fazer isto é usando o Microsoft Access e o assistente de Consulta. Vamos usar as tabelas Produtos e Categorias conforme exibidos na figura abaixo ( O campo PreçoUnitário também foi incluído , embora não apareça na imagem)

Consulta Produtos por Categoria sendo criada no Access

A instrução SQL equivalente ao modo estrutura mostrado acima é :

SELECT Produtos.NomeDoProduto, Produtos.QuantidadePorUnidade, Produtos.UnidadesEmEstoque, Categorias.NomeDaCategoria, Produtos.PreçoUnitário
FROM Categorias INNER JOIN Produtos ON Categorias.CódigoDaCategoria = Produtos.CódigoDaCategoria;

Salve esta consulta com o nome de Produtos por Categoria . Pronto ! com a consulta criada podemos começar a gerar o nosso relatório. Vamos a ele :

Gerando o relatório

1- Inicie um novo projeto padrão no Visual Basic e inclua um Data Environment no seu projeto escolhendo no menu principal Project | More Active Designers e a seguir clique em Data Environment

Obs: se esta opção não estiver aparecendo para você clique em Project|Components e em Designers selecione o Data Environment)

Após a inclusão altere a propriedade Name para : datNwind2002

   
2- Vamos criar agora uma conexão com o banco de dados Nwind2002.mdb. Clique com o botão direito do mouse sobre o objeto Connection1 e selecione Properties.

Na aba Provider selecione o provedor conforme abaixo:

Na aba Connection informe o local do banco de dados e nome do usuário e senha ( se houver) ; a seguir clique em - Test Connection. Se tudo foi feito de acordo você vai ver a imagem como a figura ao lado direito indicando uma conexão efetuada com sucesso.

Altere a propriedade Name do objeto Connection para : cnNwind2002

   
3- Após criar a conexão vamos criar um comando para obter os dados da consulta Categoria por Produtos que criamos no início do artigo. No menu View | Data View abra a pasta Views e arraste a consulta - Produtos por Categoria - para o Data Environment conforme figura ao lado.

A estrutura básica do relatório já esta criada vamos agora mostrar como criar o Grupo para o relatório em questão.

Foi criado um objeto Command com o nome - Produtos por Categoria.

   
4- Para criar o grupo clique com o botão direito sobre o comando Produtos por Categoria recem criado e clique em Properties

Na guia Grouping (veja figura ao lado) marque Group Command Object e não altere a propriedade - Grouping Command Name.

Agora selecione o campo que será usado para agrupar os dados do relatório. Como iremos agrupar por categoria selecione NomedaCategoria e clique na seta > para que o mesmo apareça na caixa de listagem do lado direito.

- A seguir clique em OK.

   
5- No menu Project selecione a opção Add Data Report para incluir o Data Report no seu projeto.

Feito isto altera as propriedades do Data Report : Name , DataMember , Data Source e Caption conforme a figura ao lado:

Obs: Não esqueça de alterar o nome do Data Report. Vamos usar o nome : datrptProdutosCategoria

   
6- Para ajustar a estrutura do Data Report com a estrutura criada no Data Environment clique com o botão direito do mouse sobre o Data Report e selecione - Retrieve Structure.

Observe que a estrutura criada possui a seção Group conforme o comando criado além das seções Details , Header e Footer.

   
7- Agora temos que criar o relatório arrastando os campos do Data Environment para o Data Report conforme figura abaixo:
 
8 - Vamos incluir alguns controles Rptlabel para informar o nome do relatório e dos campos.

   
9- Vamos incluir dois controles RptFunction - Function1 e Function2 para calcularmos a quantidade de produtos por categoria e o total dos preços por categoria.

   
10 - Após incluir os controles rptFunctions temos que configurar as propriedades : DataMember , FunctionType e DataField conforme as figuras ao lado.

DataField deve corresponder ao campo que desejamos aplicar a função. A função 0-rptFuncSum irá somar os campos agrupados.

Altere o valor de DateFormat para Currency para exibir os valores conforme a configuração da moeda local(R$)

 
11- Após mais alguns ajustes o seu relatório Data Report deverá ter a seguinte aparência:

   
12- Podemos inserir o número da página , a data atual , o total de número de páginas e outras funcionalidades clicando com o botão direito do mouse na seção apropriada e selecionando Insert Control do menu suspenso ; a seguir basta clicar na opção desejada.

 
13- Agora só falta exibir o seu relatório. Sabe como fazer isto ??? È só comandar : datrptProdutosCategoria.Show e ver o resultado conforme abaixo.

   

Básico , não é mesmo !!!.Até o próximo artigo...