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 :
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...