Você está na página 1de 43

28/03/14

Crystal Reports: Criando relatrios com SAP

www.devmedia.com.br
[verso para impresso]
Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=29700

Crystal Reports: Criando


relatrios com SAP
Este artigo til para os desenvolvedores de software
iniciantes e avanados que desejam apreender e aprimorar
suas habilidades e conhecimentos na gerao de relatrios
sofisticados, de forma rpida e fcil.

Fique por dentro


Este artigo til para os desenvolvedores de software iniciantes e avanados que
desejam apreender e aprimorar suas habilidades e conhecimentos na gerao de
relatrios sofisticados, de forma rpida e fcil, com a ferramenta geradora de
relatrios SAP Crystal Reports e plataforma .NET. Este artigo faz uma abordagem
introdutria em cima dos principais recursos da ferramenta SAP Crystal Reports,
atravs dos recursos de seu IDE. Tambm ser mostrado como criar relatrio de
listagem simples, campos calculados, subtotais, agrupamentos de campos, formatao
de um relatrio, relatrio com parmetro e por fim ser criado um gerenciador de
relatrios onde ser feito uso da biblioteca de classes do SAP Crystal Reports
disponvel para o Visual Studio e a plataforma .NET.

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

1/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Neste artigo falaremos de uma ferramenta muito produtiva e poderosa, o SAP Crystal
Reports, que est no mercado h bastante tempo e desde sempre teve suporte para
interagir com os principais kits de desenvolvimento de software da Microsoft. Esta
ferramenta pode ser integrada facilmente ao Visual Studio, disponibilizando um template
que permite a criao de relatrio sinttico e analtico dentro do prprio ambiente do
Visual Studio, podendo ser atrelado s principias aplicaes desenvolvidas com Windows
Forms, WPF e websites com ASP.NET.
A ferramenta SAP Crystal Reports pode conectar-se a diversas fontes dados com uso de
providers como SQL OLE DB, ODBC e outros. A partir de diversos SGBDs como o SQL
Server, MySQL, DB2, Oracle e PostgreSQL, podemos gerar relatrios simples e
complexos com recursos para exportao em PDF, Excel, CSV, dentre outros formatos.
Durante este artigo voc ter uma base terica e prtica sobre as funcionalidades da
ferramenta e posteriormente, no decorrer do assunto, faremos download do pacote SAP
Crystal Reports para o Visual Studio 2012. Tambm veremos exemplos prticos de como
listar dados em um relatrio, agrupar campos, criar totalizadores, campos calculados,
passagem de parmetros para filtrar dados no relatrio, formatao do relatrio e outras
funes importantes da ferramenta.
A parte prtica conta com exemplos criados via interface grfica do prprio SAP Crystal
Reports, onde ser feito o uso da biblioteca de classes do SAP Crystal Reports disponvel
para o Visual Studio e a plataforma .NET. Dessa forma temos a disponibilidade de chamar
alguns recursos do relatrio via cdigo programao com a linguagem C#, o que nos d
mais flexibilidade para o desenvolvimento do relatrio e torna a interao com o usurio
mais rica e agradvel.
Para tornar mais produtivos os exemplos deste artigo, criaremos um gerenciador de
relatrios, para que medida que formos criando os relatrios, possamos disponibilizar
os mesmos de forma fcil e prtica em uma aplicao Windows Forms. Atravs do
gerenciador de relatrios, poderemos selecionar um dos relatrios criados e gerar o
mesmo para visualizao e navegao, podendo optar por exportar em diversos
formatos atravs do Crystal Report Viewer.

Introduo a dados e relatrio


Com o avano da tecnologia, principalmente com novos recursos em hardware e software
que possibilita a captura e armazenamento de dados de forma rpida e dinmica,

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

2/43

28/03/14

Crystal Reports: Criando relatrios com SAP

independentemente da posio geogrfica em que os dados forem transmitidos e


armazenados, o ato de transformar dados em informao para gerar conhecimento
tornou-se cada vez mais necessrio, pois as empresas e organizaes necessitam
guardar acontecimentos e fatos ocorridos ao longo de sua existncia em repositrios de
dados, como um sistema gerenciador de banco de dados. No necessariamente os dados
devem ser armazenados apenas em banco de dados, pois h situaes em que no
haver recursos suficientes ou disponveis para gravar os dados de forma mais precisa
em uma base de dados. Desta forma, se faz uso de outros meios para gravar e
armazenar estes dados, como em arquivos texto e XML, levando em considerao que
em muitas situaes realmente necessrio gravar dados em arquivos de deste tipo com
um layout de gravao pr-defino, para que depois possa ser feita a transmisso destes
dados via webservice ou servios WCF (BOX 1) para uma base de dados na nuvem.

BOX 1. WCF
WCF ou Windows Communication Foundation uma tecnologia de disponibilizao
de servio inserida na plataforma .NET a partir do framework 3.0. Trata-se de uma
soluo que a Microsoft encontrou para unificar antigas tecnologias de servios e
troca mensagens, possibilitando trabalhar com protocolos diferentes. Com o WCF
podemos construir de forma fcil e rpida aplicaes distribudas orientadas a
servio.

A demanda por relatrios em cima da rea TI, por parte dos gestores em mais diversos
nveis da hierarquia de uma empresa ou organizao, est cada vez mais frequente e
crescente. Dessa forma, preciso ter profissionais especialistas em anlise de dados e
desenvolvimento de relatrios, para que se possa transmitir informao em forma de
relatrio aos mais diversos setores e nveis de uma empresa.
Para criar um relatrio com informao de qualidade, ou seja, informao correta, precisa
e organizada, no basta apenas jogar dados em forma de uma lista ou planilha,
necessrio seguir algumas diretrizes para preparar a informao dentro de um relatrio.
Vejamos algumas boas prticas para se preparar um relatrio:
Um relatrio sempre deve ser composto por um cabealho, corpo e rodap.
Dependendo do relatrio, o mesmo pode ter cabealho e rodap de pgina, estas
divises no relatrio so chamadas de sesses do relatrio;

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

3/43

28/03/14

Crystal Reports: Criando relatrios com SAP

No cabealho podemos colocar algumas informaes importantes para o mesmo, como


as seguintes:
o Ttulo e subttulo do relatrio, caso seja necessrio. Como exemplo, temos como ttulo
de um relatrio: Relatrio de Vendas; e subttulo: Vendas por Cidade;
o Logomarca da empresa e nome da filial ou matriz;
o Data e hora em que o relatrio foi gerado. Caso os dados sejam oriundos de base de
dados com o objetivo de BI, pode ser importante colocar a data do ltimo sincronismo
da base de dados de BI com o banco de dados em produo;
o Login do usurio que gerou o relatrio;
o Nome e verso do relatrio. Neste caso seria a verso disponvel na tela que se gera o
relatrio, geralmente a verso exibida em aplicaes de mdio e grande porte, que
seguem uma metodologia de desenvolvimento de software bem documentada, o que
torna mais fcil o controle de verses. A medida que uma aplicao cresce, surgem novas
necessidades para o software e principalmente para o desenvolvimento de novos
relatrios, dessa forma, uma tima ideia realizar o controle de verses para os
relatrios;
o Lista dos parmetros informados pelo usurio no momento que gerou o relatrio,
principalmente intervalos de datas, filtros e agrupamentos;
o O cabealho de um relatrio geralmente aparece apenas na primeira pgina do relatrio.
Caso o relatrio tenha um cabealho de pgina, que repetido em todas as pginas do
relatrio, o mesmo deve conter a numerao da pgina;
O corpo de um relatrio a parte mais importante do mesmo, pois onde os dados
sero apresentados. Aqui, torna-se importante ressaltar os seguintes detalhes:
o O ttulo de cada coluna representada no relatrio deve ser compreensvel. Devido ao
espao entre as colunas ser mnimo, recomendvel fazer abreviao de palavras, porm
de extrema importncia realizar a abreviao das palavras de forma correta para que
fique claro do que se trata.
o Geralmente os ttulos das colunas do relatrio devem ser diferenciados, de forma a
chamar ateno de quem for analis-lo, assim, pode ser importante colocar em negrito,
por exemplo.

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

4/43

28/03/14

Crystal Reports: Criando relatrios com SAP

o Os campos que representam dados em formatos distintos, como data e moeda, devem
receber a formatao correta. Por exemplo, valores monetrios devem ter duas casas
decimais (em casos em que a quantidade exata no especificada para a situao) e a
data deve respeitar o formato dia/ms/ano (que o formato mais comum no Brasil, a
menos que um formato especfico seja solicitado).
o Os dados em um relatrio podem ser analticos e sintticos, dessa forma, podemos
optar por realizar agrupamento de dados. Por exemplo, um relatrio de vendas pode
conter dois agrupamentos, o primeiro por vendedor e segundo por rea ou regio em
que o mesmo realiza as vendas.
o Quando um relatrio mostra valores numricos e de moeda, importante colocar totais
no final do relatrio e subtotais para o agrupamento de uma determinada categoria.
o Relatrio com agrupamento pode conter totais de contagem, ou seja, um campo que
conta a quantidade de registros em um determinado agrupamento.
o Para melhorar a visualizao e a esttica de um relatrio, podemos colocar uma linha
para dividir partes do relatrio.
o Colocar dados em formato de tabela pode ser ideal em algumas situaes. O relatrio
zebrado tambm uma opo de destaque, ou seja, uma linha com cor de fundo e outra
sem, para poder diferenciar uma linha da outra.
No rodap do relatrio podem ser repetidas algumas informaes do cabealho, como a
numerao de pgina. Tambm podemos colocar algumas observaes ou mensagens
para o usurio que ir analisar o relatrio. interessante colocar as informaes de
contato da software house que proprietria ou que desenvolveu o produto de software
em questo.

Conhecendo o SAP Crystal Reports


SAP Crystal Reports uma ferramenta especializada em gerar relatrios simples ou
complexos, podendo conectar-se a diversos bancos de dados populares disponveis no
mercado. O mesmo apresenta um IDE que facilita o desenvolvimento (valoriza o padro
de desenvolvimento RAD BOX 2) e o designer do relatrio, para que o usurio possa
criar relatrios de forma simplificada, arrastando e soltando os componentes na rea de
designer do aplicativo, podendo formatar o relatrio de acordo com a necessidade.
Ao criar um novo relatrio no SAP Crystal Reports, temos as seguintes possibilidades de
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

5/43

28/03/14

Crystal Reports: Criando relatrios com SAP

seleo de recursos:
Conexo com o banco ou fonte de dados;
Seleo das tabelas que sero usadas no relatrio;
Escolha dos campos que sero usados para compor o relatrio;
Criao dos relacionamentos entre os campos das tabelas selecionadas;
Organizao das ordens dos vnculos entre as tabelas;
Escolha de estilos predefinidos para dar uma boa apresentao no designer do
relatrio;
Seleo dos campos que devem ser agrupados no relatrio;
Ordenao crescente ou decrescente na exibio das informaes por agrupamento o
sub agrupamento;
Seleo de campos que geram resumo como somatria, mdia, contagem, valor
mximo, valor mnimo, dentre outras escolhas disponveis;
Classificao dos agrupamentos;
Opo de insero de grfico no relatrio com escolha do tipo de grfico, podendo ser
em barras, linhas e setores;
Filtro em campos com opo de seleo do valor menor, maior, igualdade, dentre outras
escolhas para filtragem de dados.
O SAP Crystal Reports tambm conta com um timo visualizador de relatrio, rico em
funcionalidades, onde podemos destacar algumas das principais funes, conforme
descrito logo seguir:
Exportao do relatrio para os formatos PDF, DOC, CSV, XML, XLS, dentre outras
extenses disponveis;
Gerenciador de impresso e ajuste do layout do relatrio;
Barra de navegao para a seleo entre as pginas do relatrio;
Localizador de palavras;

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

6/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Lupa de aumento;
Funo de visualizao individual de registros.

BOX 2. RAD
Vrios pacotes de aplicaes para desenvolvimento de software disponveis no
mercado podem ser classificados como ferramentas que tem caractersticas do
padro de desenvolvimento RAD (do ingls Rapid Application Development), por
terem uma interface de desenvolvimento simplificado, ou seja, aplicaes que
permitem criar um software rapidamente, muitas das vezes sem ser preciso digitar
uma nica linha de cdigo. O Visual Studio um timo exemplo de kit de
desenvolvimento que tem um IDE que garante bastante produtividade para o
desenvolvedor, onde podemos clicar e arrastar os componentes da Toolbox e soltar
na rea de designer da aplicao.

Histria do Crystal Reports


O Crystal Reports foi desenvolvido inicialmente em 1991 pela Crystal Services, com
objetivo de ser uma ferramenta de Business Intelligence usada para gerar e projetar
relatrios, sendo comercializada na poca com nome de Quick Reports.
A Crystal Services produziu as verses 1.0 at 3.0 do Crystal Reports, depois disso foi
adquirida em 1994 pela empresa Seagate Techonology, sendo batizada com o nome de
Crystal Decisions, que produziu as verses 4.0 at 9.0. A Crystal Decisions foi adquirida
em 2003 pela Business Objects, que produziu as verses 10, 11 e 12 do Crystal
Reports. Com esta trajetria da ferramenta, a SAP adquiriu a Business Objects em 2007,
lanando posteriormente, em maio de 2011, o Crystal Reports 2011, verso 14. H
pouco tempo atrs a SAP mudou novamente o nome da ferramenta de relatrio para SAP
Cystal Reports.
Em 1993 a Microsoft fechou uma parceria com a Crystal Services e incorporou o Crystal
Reports no Visual Basic, porm, o desenvolvimento e a criao de relatrio eram
permitidos apenas via interface grfica de designer. Posteriormente, com surgimento do
kit de desenvolvimento Visual Studio e a popularidade do lanamento da plataforma .NET,
a Crystal Decisions reformulou o Crystal Reports para plataforma .NET, incorporando o
mesmo no Visual Studio 2003, possibilitando assim o desenvolvimento de relatrios
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

7/43

28/03/14

Crystal Reports: Criando relatrios com SAP

programaticamente via linha de cdigo. Com o lanamento do Visual Studio 2005, a


Microsoft lanou sua prpria ferramenta para distribuio de relatrio como
ReportViewer. Com o lanamento do Visual Studio 2008, o Crystal Reports para a
plataforma .NET teve melhorias significativas e permanece como a principal ferramenta
para gerao de relatrios. Atualmente a SAP disponibilizou o SAP Crystal Reports para
integrao com o Visual Studio como add-on (BOX 3).
Hoje, a SAP disponibiliza sua soluo em relatrio com o SAP Crystal Reports que oferece
suporte para a plataforma de desenvolvimento com o Visual Studio .NET e Eclipse.

BOX 3. Add-on
Add-ons podem ser definidos como mdulos ou funes complementares que
alteram ou aumentam as funcionalidades de uma determinada ferramenta, podendo
tambm ser caracterizados como plug-ins, extenses, snap-ins, etc. As empresas
que disponibilizam estes pacotes geralmente cobram uma licena de uso para
aquisio do pacote componente de software.

Opes para criar um relatrio com o SAP


Crystal Reports
Em 14 de janeiro de 2013 a SAP disponibilizou a verso de desenvolvimento de relatrio
com o SAP Crystal Reports para plataforma .NET, sendo possvel a integrao com o
Visual Studio 2012. Essa verso possibilita ao desenvolvedor criar relatrios para
aplicaes desktop, com uso de templates como Windows Forms e WPF, podendo
tambm optar por aplicaes Web com ASP.NET.
Para criar relatrios com SAP Crystal Reports pode-se optar por duas formas, conforme
descrito a seguir:

Assistente de relatrio do SAP Crystal Reports


Este assistente permite criar um relatrio de forma simples e rpida. O mesmo conta com
uma tela de apresentao, que auxilia na escolha para criar um novo relatrio em branco.
Pode-se criar o relatrio do zero, ou optando pela a escolha da utilizao de um
assistente que auxilia a criao do relatrio em um passo a passo, isto , o assistente
apresenta ao usurio os templates disponveis para criar um novo relatrio.
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

8/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Esta primeira opo ideal e aconselhvel para quem est iniciando a criao de relatrio
e ainda no tem o domnio da ferramenta, ou mesmo para quem busca ser objetivo,
tendo a possibilidade de criar um relatrio rapidamente sem a necessidade da utilizao
de algumas configuraes no IDE. Com esta escolha no preciso fazer incluso de
cdigo no relatrio para desempenhar atividades mais complexas.

IDE de desenvolvimento de relatrio do SAP


Crystal Reports
A segunda opo para criar relatrio com o SAP Crystal Reports pelo ambiente grfico
de desenvolvimento, onde possvel construir toda a estrutura de um relatrio. Esta
ferramenta oferece uma janela chamada Main Report, que a rea de criao do relatrio
e mostra uma pr-visualizao deste em desenvolvimento. Com o Main Report fica fcil
criar a estrutura do relatrio, pois o mesmo j vem com o relatrio dividido em sesses
e, com o auxlio da janela Field Explorer, podemos clicar e arrastar alguns componentes
para a rea de desenvolvimento do relatrio.
A janela Field Explorer oferece recursos com vrios componentes e ferramentas que iro
auxiliar no desenvolvimento e configurao do relatrio. atravs da Field Explorer que
temos a opo de conectar a uma fonte de dados como, por exemplo, o Microsoft SQL
Server, e assim selecionar tabelas, views, e por fim os campos que iro compor o
relatrio.
Alm da janela Field Explorer, temos a opo de desenvolver vrias funes para nosso
relatrio de forma programtica, ou seja, com uso de uma linguagem de programao
como C#, possvel chamar um documento de relatrio via cdigo e fazer uso do mesmo
de forma mais flexvel. No cdigo podemos recuperar parmetros inseridos pelo usurio
via interface grfica e passar estes parmetros para realizar filtros no relatrio antes do
mesmo ser exibido, assim teremos um relatrio mais limpo e com informaes
resumidas.
Um ponto importante para o desenvolvimento do relatrio a janela Main Report
Preview, que mostra a viso final do relatrio. a forma como o usurio vai visualizar e
navegar no relatrio em produo.

Estrutura de um relatrio SAP Crystal Reports


Aps a escolha do template e a finalizao do assistente para criao de relatrio,
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

9/43

28/03/14

Crystal Reports: Criando relatrios com SAP

criado o arquivo do relatrio, que pode ser visualizado no Solution Explorer. O relatrio
o arquivo com extenso rpt que fica junto aos outros arquivos que compem projeto no
Visual Studio.
No arquivo rpt consta toda a estrutura do relatrio, podendo este ser utilizado em
outros projetos, j que possui todas as configuraes necessrias para conectar a fonte
de dados do relatrio. Expandindo o arquivo rpt no Solution Explorer podemos observar
o arquivo com extenso cs, caso seja uma aplicao desenvolvida com a linguagem de
programao C#, ou extenso vb, caso use a linguagem VB .NET.
No arquivo cs consta o cdigo C# para definir a estrutura do relatrio, com a definio
para criar um novo documento atravs da classe ReportDocument, que faz parte do
namespace CrystalDecisions.CrystalReports.Engine da biblioteca Crystal Reports para
plataforma .NET. Neste arquivo tambm temos a definio das sesses do relatrio,
como o cabealho do relatrio, cabealho da pgina, detalhes do relatrio, rodap do
relatrio e rodap da pgina. As sesses so definidas atravs da classe Section do
namespace do ReportDocument.

Biblioteca de classes SAP Crystal Reports para


a plataforma .NET
Antes de iniciar o desenvolvimento de um relatrio, de extrema importncia conhecer a
estrutura de namespace do SAP Crystal Reports para a plataforma .NET. Na sequncia
sero descritos os principais namespaces importantes para o entendimento e para o
desenvolvimento de recursos para o relatrio via programao.
CrystalDecisions.CrystalReports.Engine: este namespace o pilar para estrutura de um
relatrio com Crystal Reports. Nele esto as principais classes para dar o suporte
necessrio ao desenvolvimento de um relatrio, destacando-se a classe
ReportDocument, que tem propriedades e mtodos para compor o novo documento de
relatrio.
CrystalDecisions.CrystalReports.ViewerObjectModel: aqui temos as classes e interfaces
para dar suporte ao objeto CrystalReportViewer. atravs do CrystalReportViewer que
expomos o documento de relatrio ReportDocument para visualizao e navegao.
CrystalDecisions.ReportSource: este namespace fornece classes que compem uma
camada entre o controle CrystalReportViewer e o modelo de objeto ReportDocument.
Essas classes servem para lidar com as solicitaes dos controles CrystalReportViewer.
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

10/43

28/03/14

Crystal Reports: Criando relatrios com SAP

CrystalDecisions.Shared: o namespace CrystalDecisions.Shared fornece classes,


interfaces e enumeraes que so compartilhados pelo controle CrystalReportViewer e o
modelo de objeto ReportDocument.
CrystalDecisions.Windows.Forms: fornece suporte para os controles
CrystalReportViewer e classes associadas com Windows Forms.
CrystalDecisions.Web: fornece suporte para o controle CrystalReportViewer, controle
CrystalReportPartsViewer e suas classes associadas com ASP.NET.
CrystalDecisions.Web.Services: fornece apoio para expor um relatrio Crystal Reports
atravs de webservice.
CrystalDecisions.Web.HtmlReportRender: oferece recursos para os eventos de
renderizao no controle CrystalReportViewer e no controle CrystalReportPartsViewer.

Download e instalao SAP Crystal Reports


para Visual Studio 2012
Antes de iniciarmos a criao de um relatrio, devemos obter o pacote de
desenvolvimento de relatrio SAP Crystal Reports para o Visual Studio 2012. Atravs do
prprio site da SAP Community Network podemos realizar o download (veja a sesso
Links).
Uma observao importante a respeito do download a escolha do pacote completo, ou
seja, podemos optar por baixar o arquivo CRforVS executvel que realiza a instalao do
SAP Crystal Reports e faz a integrao automtica com o Visual Studio 2012. Caso seja
realizada apenas a instalao do pacote MSI, no ficar disponvel o template do Crystal
Reports do Visual Studio 2012.
Aps o download do pacote CRforVS executvel, devemos realizar a instalao de SAP
Crystal Reports de forma simples pelo seu assistente de instalao, com uma interface
grfica fcil e prtica, onde podemos ir avanando e a instalao ser realizada e
finalizada rapidamente.

Criando um projeto com Visual Studio 2012


Para iniciarmos a explorao da ferramenta SAP Crystal Reports, iremos criar um novo
projeto do tipo Windows Forms com o Visual Studio 2012. Devemos selecionar a
linguagem de programao C# e o framework 4.5 da plataforma .NET. Chamaremos este
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

11/43

28/03/14

Crystal Reports: Criando relatrios com SAP

projeto de CrystalExemplos, conforme podemos observar o Solution Explorer exibido na


Figura 1.
Iremos trabalhar com SAP Crystal Reports em uma aplicao do tipo Windows Forms,
mas nada impede da utilizao de outra tecnologia como WPF e ASP.NET, pois aps a
criao do relatrio, gerado um arquivo com extenso rpt, que depois do
desenvolvimento e configurao do relatrio, pode ser usado em diferentes tipos de
projeto, bastando inserir o arquivo de relatrio do novo projeto e fazer algumas
referncias aos namespace do SAP Crystal Reports necessrios para aplicao.

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

12/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Figura 1. Estrutura inicial do projeto criado


Vejamos a seguir a lista dos namespaces necessrios em uma aplicao com relatrio
SAP Crystal Reports.
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

13/43

28/03/14

Crystal Reports: Criando relatrios com SAP

CrystalDecisions.CrystalReports.Engine;
CrystalDecisions.ReportSource;
CrystalDecisions.Shared;
CrystalDecisions.Web;
CrystalDecisions.Windows.Forms

Criando um relatrio com o assistente do SAP


Crystal Reports
A partir de agora iremos desenvolver exemplos prticos para demonstrar as
funcionalidades da ferramenta SAP Crystal Reports. Para tanto, precisaremos de uma
fonte de dados, e neste caso utilizaremos o banco de dados muito popular para
exerccios, o banco Northwind, com uso do SGBD Microsoft SQL Server 2008. O
Northwind pode ser adquirido atravs do site da Microsoft (veja a sesso Links). Aps
realizar o download do Nortwind, devemos instalar o pacote que ser extrado na pasta
SQL Server 2000 Sample Databases, dentro da unidade C da mquina local, depois s
executar a funo Attach Database no SQL Server 2008 e selecionar o arquivo
Northwind.mdf referente ao banco de dados.
Agora que j temos uma fonte de dados Nortwind e o SAP Crystal Reports devidamente
instalados, ento iremos adicionar ao nosso projeto no Visual Studio 2012 um novo item
do tipo Crystal Reports, que ser um novo documento de relatrio. Aps aberta a tela de
insero de itens ao projeto, iremos sesso Reporting e selecionaremos o template
Crystal Reports, nomeando para CrystalReportRelatorio1.rpt.
Aps a insero do novo documento de relatrio ao projeto, aberta automaticamente a
galeria de relatrios do Crystal Reports, conforme mostra a Figura 2.

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

14/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Figura 2. Tela galeria do SAP Crystal Reports


A Figura 2 mostra a tela inicial para criar um novo documento de relatrio SAP Crystal
Reports, que por sinal no tem mudanas muito significativa na interface grfica em
relao s verses anteriores. Nesta tela temos algumas opes de como ser criado o
novo documento de relatrio. A seguir so descritas as possveis alternativas:
Utilizando o assistente para relatrio: com a escolha desta opo, temos trs tipos de
assistentes para criar um novo relatrio. Temos a opo padro, tabela de referncia
cruzada e rtulo de correio. A opo mais utilizada a primeira, a padro, com esta
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

15/43

28/03/14

Crystal Reports: Criando relatrios com SAP

opo selecionada um assistente ir auxiliar na criao de um novo relatrio em um


passo a passo, desde a conexo com banco de dados, seleo de tabelas, campos para
compor o relatrio, definio das relaes entre as tabelas, criao de filtros para o
relatrio, agrupamento de campos, ordenao de dados, insero de grficos
sofisticados, dentre outros recursos que podemos acrescentar ao relatrio. Podemos
incluir todos estes recursos de forma fcil e prtica no relatrio com ajuda do assistente
de criao de relatrio.
Como um relatrio em branco: esta opo cria apenas o arquivo para um novo
documento de relatrio em branco, o arquivo rpt. Atravs do arquivo de relatrio em
branco, devemos construir todo o relatrio desde o incio. Neste ponto criaremos o
relatrio via designer com auxlio da janela Field Explorer, inserindo e arrastando os
componentes para a rea de desenvolvimento do relatrio. Os componentes inseridos na
rea de desenvolvimento do relatrio podem ser facilmente configurados atravs de suas
propriedades, para assim que possam compor a estrutura necessria para o novo
relatrio.
De um relatrio existente: atravs desta opo podemos selecionar manualmente um
arquivo de relatrio rpt j existente e realizar a insero do mesmo dentro do projeto
atual.
Vale ressaltar que caso a opo selecionada para criar um novo relatrio seja atravs do
Assistente para Relatrio, poderemos escolher um determinado tipo de assistente de
acordo com o objetivo e necessidade do relatrio. Assim sendo, se precisamos de uma
informao resumida, uma boa escolha selecionar o assistente de tabela de referncia
cruzada. Este modelo parecido com uma tabela dinmica do Excel, onde podemos
selecionar os campos que representaro as colunas e linhas, e os campos para
demonstrar valores de uma forma reduzida ou detalhada, conforme escolha dos campos
que representam as linhas e colunas da tabela.
Para explorarmos boa parte dos recursos do assistente de relatrio SAP Crystal Reports,
optaremos pela utilizao da primeira opo, a padro, conforme seleo mostrada na
Figura 2.
Avanando no assistente de relatrio, o prximo passo a ser realizado a escolha dos
dados nos quais nosso relatrio ir se basear. Um detalhe importante neste ponto a
possibilidade de escolha entre diversas fontes de dados para o relatrio. Observe a
Figura 3, nela so exibidos os tipos de origem de dados disponveis para gerar um novo
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

16/43

28/03/14

Crystal Reports: Criando relatrios com SAP

relatrio, conforme descrito a seguir.


Dados do projeto: caso tenhamos uma fonte de dados disponvel dentro do projeto
atual, podemos us-la para criar o novo relatrio. Uma boa escolha seria utilizar como
fonte de dados para o relatrio um DataSet existente.
Minhas conexes: esta opo nada mais que a lista conexes existentes, atravs dela
podemos gerenciar as conexes e fazer alteraes quando for necessrio.
Criar nova conexo: esta a opo mais importante em relao gama de fonte de
dados com a qual podemos criar uma nova conexo. possvel conectar a fontes de
dados como Access, Excel, arquivo XML, conectar atravs ODBC, OLE DB e a vrios
outros SGBDs existentes no mercado.

Figura 3. Tela para escolha da fonte de dados


O prximo passo para dar continuidade ao assistente criar uma nova conexo com o
SQL Server e utilizar o banco de dados Nortwind como fonte de dados para o relatrio.
Para isso, devemos expandir a estrutura de pastas da opo Criar Nova Conexo, neste
momento teremos acesso ao item OLE DB (ADO). Selecionando o mesmo, ir abrir uma
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

17/43

28/03/14

Crystal Reports: Criando relatrios com SAP

nova janela em que devemos selecionar o provedor de dados, que neste caso o
Microsoft OLE DB Provider for SQL Server. Aps este passo devemos avanar. Agora ir
aparecer mais uma janela para informar o nome do servidor e instncia do SQL Server
instalado na mquina. Caso a mesma tenha sido nomeada, ou tenhamos o SQL EXPRESS
instalado na mquina, o nome do servidor ficaria da seguinte forma: .\SQLEXPRESS. O
prximo campo a ser preenchido o nome de usurio e senha. Se no tivermos um
usurio ativo no SQL Server, devemos marcar a opo Segurana Integrada, que ir usar
as credenciais de login do Windows para fazer a conexo base de dados. Por fim, basta
selecionar o banco de dados Nortwind, avanar e finalizar esta etapa.
A prxima tela do assistente (Figura 4) mostra as tabelas disponveis do banco de
dados selecionado. Aqui devemos selecionar todas as tabelas que contenham os campos
que pretendemos usar para compor o relatrio. Em nosso exemplo iremos selecionar
apenas as tabelas Order_Details, Orders e Products.
Uma observao importante na seleo de dados para compor o relatrio possibilidade
de selecionar views, pois podemos criar views no banco de dados com restries em
determinados campos que no devem ser exibidos para terceiros. Isso tambm serve
para diminuir o trfego de dados entre a aplicao e a base de dados. No momento de
criar uma nova view, devemos incluir na mesma apenas os campos que sero utilizados
no relatrio.

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

18/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Figura 4. Seleo de tabelas do banco de dados


Na prxima tela do assistente, tela de vnculo entre tabelas, podemos criar referncias
entre registro de tabelas distintas, ou seja, possvel fazer um vnculo entre duas
tabelas automaticamente por campo de mesmo nome, ou chave, caso no tenhamos um
modelo de dados normalizado. Neste ponto ficaremos com a escolha do vnculo
automtico por chave, e avanaremos para prxima tela do assistente.
Com as tabelas do banco de dados selecionadas para a composio do relatrio e os
vnculos entre os mesmos definidos, devemos agora avanar e na tela que surge
devemos selecionar os campos que sero exibidos no relatrio. Neste caso iremos
selecionar os campos ProductID e ProductName da tabela Products, e na tabela
Order_Details selecionaremos os campos UnitPrice, Quantity e Discunt. Ao final
avanaremos para prxima tela do assistente de relatrio.
Uma observao importante na tela de seleo de campos das tabelas que podemos
selecionar a ordem que os campos sero dispostos dentro do layout do relatrio, ou
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

19/43

28/03/14

Crystal Reports: Criando relatrios com SAP

seja, devemos ir selecionando os campos a serem exibidos no relatrio na ordem da


esquerda para direita.
A prxima tela do assistente, mostrada na Figura 5, exibe os campos disponveis que
podem agrupar determinadas informaes no relatrio. Em nosso exemplo iremos fazer
dois agrupamentos, um pelo campo ShipRegion da tabela Orders e outro agrupamento
pelo campo OrdersID da tabela Orders.
Quando selecionado mais de um campo para agrupar as informaes, podemos definir
a ordem dos agrupamentos, podendo ter um agrupamento dentro do outro e tambm
classificar a informao em ordem crescente ou decrescente. Neste caso necessria a
seleo de um campo para que seja exibido na parte inferior desta tela um combo com a
opo de classificao. Aps avanar ser mostrada outra tela para selecionar os campos
para resumo de informao, como contagem, soma, mximo, mnimo, dentre outras
opes, lembrando que esta segunda tela de campos com resumo s ser apresentada
caso voc tenha algum campo selecionado para agrupar as informaes. Como na tela
anterior realizamos alguns agrupamentos, a tela de resumo de relatrio j vem com
alguns resumos criados automaticamente pelo assistente; iremos retirar estes resumos e
avanar.

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

20/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Figura 5. Seleo de campos para agupar informaes


Aps avanar no assistente, ser apresenta uma tela para realizar filtros em campos do
relatrio, com objetivo de filtrar a informao de acordo com a necessidade da
visualizao de dados. Vejamos na Figura 6 a opo de realizar vrios filtros nos dados
para que a informao seja apresentada de forma resumida e obedecendo alguns
critrios, conforme descritos na combobox de opes de filtros.
Em nosso exemplo no iremos realizar filtros neste momento, esto iremos deixar o
assistente sem filtros e avanar para prxima tela.

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

21/43

28/03/14

Crystal Reports: Criando relatrios com SAP

abrir imagem em nova janela


Figura 6. Filtro em campos
Na prxima tela, e ltima, temos escolha do estilo do relatrio. Temos a opo de aplicar
ao relatrio um layout predefinido, conforme estilos disponveis. Note que ao ir
selecionando as opes de layout podemos visualizar uma prvia de como fica o modelo
do relatrio. Para finalizar o assistente, selecionaremos o estilo padro.
Aps finalizar o assistente, voltamos ao Visual Studio com o arquivo
CrystalReportRelatorio1.rpt aberto e Main Report selecionado, ou seja, estamos com o
ambiente de desenvolvimento do relatrio ativo. Agora precisamos visualizar como ficou
o relatrio que criamos com a ajuda do assistente, assim sendo, temos a opo Main
Report Preview na parte inferior, ao lado do Main Report, que ao ser selecionado mostra
a visualizao final do relatrio, conforme Figura 7.

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

22/43

28/03/14

Crystal Reports: Criando relatrios com SAP

abrir imagem em nova janela


Figura 7. Visualizao do relatio criado pelo assistente do SAP Crystal Reports
Na Figura 7 temos nosso relatrio com dois agrupamentos, por ShipRegion e por
OrderID. Note que o mesmo mostra o detalhe de cada ordem, conforme configuramos no
assistente, ou seja, a lista de produtos de cada ordem. Outra observao importante
que nas primeiras pginas do relatrio no conta a regio, mas isso no um erro no
relatrio, pois neste caso existem registros de ordens na base de dados sem regio.
Ento fica a dica para no realizar agrupamentos em campos que possam conter valores
nulos ou ento, neste caso, fazer a ordenao em ordem decrescente.
O relatrio ainda est bem simples em termos de formatao, tambm no tem cabealho
de relatrio e nem totalizadores. No decorrer do artigo irmos aplicar algumas
formataes e alguns recursos importantes para tornar o relatrio rico e apresentvel.

Conhecendo a rea de designer do SAP Crysltal


Reports no Visual Studio
Precisamos conhecer o ambiente de designer do SAP Crystal Reports. Na Figura 8 temos
a tela do Visual Studio com o arquivo CrystalReportRelatorio1.rpt selecionado, note que
a figura tem alguns destaques numerados em vermelho que correspondem aos principais
recursos para criar e formatar o relatrio, conforme descrito abaixo:
1. rea de designer do relatrio, com exibio de uma rgua na parte superior e
esquerda, para que possa auxiliar no alinhamento dos componentes do relatrio. Logo
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

23/43

28/03/14

Crystal Reports: Criando relatrios com SAP

ao centro existem sesses separando as partes fundamentais do relatrio, como o


cabealho de relatrio, cabealho da pgina, cabealho do primeiro agrupamento,
cabealho do segundo agrupamento, detalhes do relatrio, rodap do segundo
agrupamento, rodap do primeiro agrupamento, rodap do relatrio e por fim rodap da
pgina.
2. Field Explorer, contendo a maior parte dos recursos para auxiliar na gerao do
relatrio, como a insero de grupos, campos calculados, passagem de parmetro,
campos especiais, totalizadores e tambm o Database Fields, que mostra as tabelas
selecionadas para ajudar a compor o relatrio com todos os seus campos. Caso voc
precise adicionar um novo campo ao relatrio, s clicar e arrastar para alguma seo do
relatrio na rea de designer.
3. Na parte inferior da imagem temos duas abas para trabalhar no relatrio. A primeira
Main Reports, que mostra a rea de edio para criar a estrutura do relatrio, e a
segunda Main Report Preview, que mostra a visualizao do relatrio final em execuo,
esta aba bastante importante, pois no precisamos ficar executando a aplicao o
tempo inteiro para ver resultado das modificaes realizadas durante a criao do
relatrio.
4. Toolbox com a guia Crystal Reports, que disponibiliza trs componentes importantes
para auxiliar de forma rpida a inserir alguns recursos no relatrio, como um objeto
texto, linha e caixa para destacar algo no relatrio.
5. Barra de ferramentas, que mostra os atalhos para importantes recursos do SAP
Crystal Reports. Atravs desta barra podemos formatar os objetos do relatrio de forma
rpida e fcil, aplicando formatao na fonte, como tamanho e alinhamento. Tambm
possvel inserir o objeto chart para grficos no relatrio, inserir imagens, agrupamentos,
acessar as propriedades dos objetos dispostos no relatrio, exibir e ocultar a Field
Explorer para dar mais espao para a rea de formatao do relatrio, dentre outros
recursos.
6. Menu do Crystal Reports: este menu exibe atalhos para recursos j comentados
anteriormente. Nele tambm podemos gerenciar a conexo com a base de dados,
verificar update do SAP Crystal Reports, pr-visualizar o relatrio, inserir arquivo CSS
para aplicar formatao diferenciada em sesses especificas do relatrio. Aqui tambm
est disponvel o submenu Design, onde podemos exibir e ocultar e rgua, definir o tipo
de papel e orientao da pgina do relatrio.
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

24/43

28/03/14

Crystal Reports: Criando relatrios com SAP

7. Janela de propriedades: tem um papel fundamental para visualizar e alterar qualquer


propriedade dos objetos do relatrio, bastando apenas selecionar o objeto e pressionar
a tecla F4.

abrir imagem em nova janela


Figura 8. Tela de Designer para o SAP Crystal Reports

Criando campo calculado com Formula Field


O SAP Crystal Reports tem um recurso muito interessante, o Formula Field, que est
disponvel no Field Explorer. Com ele podemos criar campos calculados para utilizar em
diversas situaes no decorrer da criao de um relatrio.
Um campo calculado depois de criado bem simples de ser inserido dentro do relatrio,
basta apenas arrastar do Formula Field para qualquer sesso do relatrio.
Nosso relatrio CrystalReportRelatorio1 tem um campo com o preo unitrio de cada
produto (UnitPrice) e outro campo que tem a quantidade de venda de cada produto
(Quantity). Para complementar nosso relatrio precisamos de um novo campo para
calcular o valor total de venda de cada produto dentro de uma ordem.
Para inserimos o novo campo no relatrio iremos clicar com boto direito do mouse em
Formula Field na Field Explorer e assim inserir um novo item chamado de VtItem, na
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

25/43

28/03/14

Crystal Reports: Criando relatrios com SAP

sequncia ir abrir uma nova janela chamada Editor de formulas. A Figura 9 mostra o
cdigo necessrio para calcular o valor total por produto.
Com a janela editor de frmulas podemos criar campos calculados, campos de expresso
SQL, Frmulas de seleo e frmulas de formatao, para criar novos campos com
frmulas tm disponvel a sintaxe Crystal e Base.

Figura 9. Editor de frmulas


importante notar que na janela de editor de frmulas temos disposio para criar
novas frmulas todos os campos referentes s tabelas selecionadas da base de dados,
os novos campos calculados criados, funes e operadores.
Dando sequncia alterao no relatrio, agora iremos arrastar o novo campo criado
VtItem para dentro da sesso detalhes do relatrio, ao lado direito do campo
Discount.
Se clicarmos na guia Main Report Priview para visualizar o relatrio, notaremos que agora
temos o valor total dos itens vendidos por produto, porm no est sendo possvel ver
as casas decimais, assim sendo, devemos acomodar os campos dentro da sesso
detalhes para que possa caber tudo dentro do relatrio.

Inserindo totalizadores por grupo e geral no


relatrio
Agora vamos agregar mais valor ao relatrio inserindo totais nos agrupamentos do
relatrio e inserindo um total geral no final do relatrio.
Para realizar a anlise de um relatrio necessrio que o mesmo contenha campos para
representar valores acumulados e totais, podendo tambm ter campos para fazer a
contagem do total de registros do relatrio geral ou por agrupamento.
Para iniciarmos as alteraes no relatrio vamos fazer uma cpia do arquivo
CrystalReportRelatorio1 e renomear a cpia para CrystalReportTotais. O segundo passo
criar os novos campos que iro somar os valores totais, para isso usaremos o recurso
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

26/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Running Total Fields, disponvel na Field Explorer.


O primeiro campo que iremos inserir o total para o agrupamento de ordens, que soma
a quantidade de itens dos produtos representados pela coluna Quantity do relatrio.
Devemos ento clicar com o boto direito do mouse no Running Total Fields localizado na
Field Explorer e depois clicar em new para inserir um novo item. Agora temos na tela uma
nova janela chamada Cria Campo de Total acumulativo, conforme apresentado na
Figura 10. Se analisarmos esta tela, temos esquerda todos os campos do nosso
relatrio e todos os campos que selecionamos na base de dados, ou seja, temos todos
os campos das tabelas selecionadas no assistente de relatrio. Neste momento podemos
colocar um total no relatrio de um determinado campo da base de dados que ainda no
se encontra no layout do relatrio. Agora iremos seguir os passos abaixo para configurar
o primeiro campo, conforme sequncia descrita na Figura 10.

Figura 10. Tela de configurao campo acumulativo


1. Seguindo os passos descritos na Figura 10, a primeira coisa que devemos fazer
definir um nome para o primeiro campo total, que neste caso chamaremos de
TotQteGrupo2. O nome para o campo deve dar a ideia de que mesmo est somando,
sendo assim, temos Tot de total, Qte de quantidade e Grupo2 para informar que o
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

27/43

28/03/14

Crystal Reports: Criando relatrios com SAP

mesmo pertence ao GroupFooterSession2.


2. No segundo passo devemos selecionar um dos campos do relatrio, campo frmula
ou campo de algumas das tabelas selecionada da base de dados. Para este exemplo
iremos selecionar o campo OrderDetails.Quantity e definir como campo a ser
resumido.
3. No passo de nmero trs devemos informar o tipo de resumo que queremos obter.
Temos diversas opes como soma, mdia, mximo, mnimo, contagem e outras
possibilidades de resumo; para o nosso relatrio devemos selecionar a opo
soma.
4. Neste passo devemos definir o tipo de avaliao para realizar a soma. Aqui iremos
selecionar a opo para cada registro. A observao importante a respeito do tipo
de avaliao que temos quatro opes para selecionar, so elas;
Para cada registro: ir somar registro a registro do relatrio
Na alterao do campo: esta opo ir avaliar apenas quando tiver alterao no valor do
registro, ou seja, se o valor exibido no se repetir, o mesmo no ir realizar a soma,
contagem ou outra forma de avaliao selecionada.
Na alterao do grupo: esta opo mesma da anterior, porm aplica-se no nvel de
grupo.
Utilizar uma frmula: esta opo bem interessante, pois temos a possibilidade de criar
uma frmula personalizada para ser avaliada de acordo com a necessidade.
5. No quinto passo devemos selecionar uma opo para reconfigurar a avaliao. Neste
caso do iremos zerar a soma ao final de cada grupo.
6. O sexto e ltimo passo definir ao final de qual campo, grupo ou frmula o
avaliador ser reconfigurado, aqui iremos selecionar o Grupo2.
Agora temos um novo campo para totalizar a quantidade da coluna Quantity do
relatrio, devemos arrastar o novo campo TotQteGrupo2 do Running Total Fields para
a sesso GroupFooterSection2, abaixo do campo Quantity, dentro da sesso do grupo
de ordens.
Vejamos que na guia Main Reports Preview temos a visualizao do nosso relatrio com o
totalizador funcionado de forma correta. Devemos agora repetir este passos e criar dois
novos totalizadores para as colunas Discount e VtItem, lembrando que total da
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

28/43

28/03/14

Crystal Reports: Criando relatrios com SAP

coluna VtItem criado com a prpria frmula criada para este campo calculado.
A Figura 11 mostra como fica o relatrio como a insero dos trs totalizadores no
nosso relatrio de exemplo.

abrir imagem em nova janela


Figura 11. Relatrios com totalizadores

Formatando o relatrio
Agora hora de formatar o relatrio para ficar mais apresentvel, pois um bom relatrio
para o usurio final nem sempre aquele que expe quantidades enormes de dados, ele
tambm deve ter um layout agradvel para o usurio que ir analis-lo. Neste ponto
importante definir a formatao dos campos e separar parte do relatrio com linhas e
tabelas entre as sesses do mesmo.
Para formatar nosso relatrio iremos usar vrios recursos do nosso SAP Crystal Reports,
devemos ento seguir alguns os passos descritos a seguir:
1. Primeiramente iremos fazer uma cpia do arquivo de relatrio CrystalReportTotais e
definir um nome da cpia de CrystalReportFormat, na qual passaremos a trabalhar.
2. Agora iremos inserir um ttulo em nosso relatrio. Devemos selecionar um
componente Text Object da guia Crystal Reports da Toolbox e arrast-lo para Section1,
que define o cabealho do relatrio. Com o componente j na rea do relatrio, iremos
dar dois cliques e definir um ttulo do relatrio para RELATRIO DE VENDAS. Na barra
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

29/43

28/03/14

Crystal Reports: Criando relatrios com SAP

de ferramentas definimos a fonte para tamanho 16, bold (negrito) e com a opo Center
da barra de ferramentas definimos que o texto do ttulo deve ficar alinhado ao centro.
Percebemos que o tamanho do texto no coube no Text Object e nem na Section1,
assim sendo, devemos selecionar a Section2 e passar o mouse at aparecer duas setas
(para cima e para baixo) com uma linha no meio, esta opo nos possibilitar
redimensionar o tamanho da Section1, a Section2 um pouco para baixo. Feito isso, agora
precisamos acomodar o texto dentro o objeto Text Object, selecionando o mesmo e
arrastando os pontos que aparecem em suas extremidades, de forma que o texto
dentro dele fique totalmente visvel.
3. Temos um ttulo definido para nosso relatrio, porm o mesmo exibido apenas na
primeira pgina do relatrio, pois est dentro da sesso cabealho. Para descrever que
tipo de relatrio de vendas consta em nosso relatrio, iremos criar um subttulo para o
relatrio com o nome de VENDAS POR REGIO, para isso iremos inserir outro Text
Object dentro da Section2, posicionando abaixo do ttulo e ao lado do campo data. Com
o subttulo dentro do cabealho da pgina, o mesmo ser exibido em todas as pginas
do relatrio. Depois iremos aplicar a mesma formatao descrita no passo 2 no segundo
Text Object e modificar somente o nome para o subttulo do relatrio.
4. Agora precisamos aplicar algumas formataes nos campos estticos da Section2, que
representam o cabealho da pgina para cada coluna do relatrio. Ento devemos
selecionar todos os campos estticos segurando a tecla Ctrl e clicando em todos os
campos para ficarem selecionados, depois clicar com o boto direito do mouse em um
dos campos estticos e clicar na opo Format Multeple Objects, que ser exibida no
menu de contexto. Agora temos a tela de Formatao do Editor SAP Crystal Reports, na
tela temos algumas guias para auxiliar na formatao. A Figura 12 mostra duas guias
que iremos utilizar para formatar os campos de cabealho do relatrio. Na primeira guia
moldura iremos alterar as propriedades estilo de linha, cor da moldura e cor de fundo.
J na segunda guia fonte iremos alterar apenas o estilo para negrito. Todas as
formaes esto destacadas em vermelho na Figura 12. Devemos observar que a
medida que alteramos as propriedades de formatao, temos na parte inferior a
demonstrao de como vai ficar o resultado com a aplicao da formatao.
5. No cabealho do segundo agrupamento (GroupHeaderSection2) no temos campos
estticos para mostrar o nome de cada coluna com dados, assim, a medida que se
visualiza os dados mais na parte inferior do relatrio, no possvel saber de qual campo
se trata a informao, devido os campos estticos das colunas serem exibidos apenas no
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

30/43

28/03/14

Crystal Reports: Criando relatrios com SAP

cabealho da pgina. Assim sendo, vamos recortar os cabealhos de ShipRegion at


VtItem e colar dentro da sesso GroupHeaderSection2, pois os cabealhos de coluna
sero exibidos para cada grupo no agrupamento de ordens. Temos que selecionar todos,
recortar e clicar no canto direto antes de colar, este procedimento ir fazer o alinhamento
correto de todos os campos. Uma observao importante que antes de colar voc deve
deletar o nico campo do cabealho do segundo agrupamento, pois este campo mostra o
nmero da ordem e esta informao j consta nos detalhes do relatrio.
6. Nosso relatrio est ficando com uma nova aparncia, ento agora iremos aplicar a
mesma formatao para os campos da sesso detalhes e rodap do segundo
agrupamento. importante nos campos que representam os dados da sesso detalhes
no colocar negrito, cor de fundo e que os mesmos tenham apenas molduras com linhas
simples. Para ganhar tempo em repetir uma formatao para demais campos, podemos
selecionar um campo j formatado e usar a ferramenta Format Painter, disponvel na
barra de ferramentas. Assim s clicar em outros campos nos quais se deseja aplicar os
mesmos formatos, mas esta tcnica s se aplica em campos de mesmo tipo.
Agora que o relatrio j est formatado, devemos visualizar o mesmo na guia Main
Report Preview, conforme mostra a Figura 13.

abrir imagem em nova janela


Figura 12. Configurao de formatao de campos
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

31/43

28/03/14

Crystal Reports: Criando relatrios com SAP

abrir imagem em nova janela


Figura 13. Relatrio formatado

Criando um gerenciador de relatrios com C#


At o momento criamos alguns relatrios e visualizamos o resultado no Main Report
Preview, ento agora temos que disponibilizar estes relatrios para o usurio de forma
amigvel, atravs de uma interface grfica como o Windows Forms, WPF ou em uma
pgina ASPNET. Em nosso exemplo faremos um gerenciador para o usurio selecionar
um dos relatrios que criamos e poder visualizar e navegar no mesmo atravs do
componente CrystalReportViewer, disponvel na Toolbox.
O primeiro passo selecionar o Form1 criado automaticamente pelo Visual Studio no
momento em que foi criado um projeto do tipo Windows Forms, e com o mesmo
selecionado alterar seu ttulo atravs da propriedade Text, inserindo Gerenciador de
Relatrios. Em seguida definimos a propriedade Size para 1124; 720, para alterar a
altura e largura.
Para que seja possvel visualizar os relatrios no formulrio, iremos arrastar o
componente CrystalReportViewer da Toolbox para dentro do Form1. Neste momento
ainda no ser possvel visualizar nenhum relatrio no CrystalReportViewer, pois ainda
precisamos vincular um relatrio ao mesmo, o que possvel atravs da propriedade
ReportSource, porm em nosso exemplo no iremos vincular o relatrio desta maneira.
A Listagem 1 mostra o cdigo inserido no evento Load do Form1 que trata de definir a
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

32/43

28/03/14

Crystal Reports: Criando relatrios com SAP

propriedade Dock do objeto crystalReportViewer1 para None, para que o objeto no


preencha toda a rea do Form1. A segunda linha de cdigo altera posio Y do objeto
crystalReportViewer1 dentro do From1, e por fim, na ltima linha do evento Load,
definimos a altura e largura do objeto crystalReportViewer1.
Com estas configuraes teremos um espao na parte superior do formulrio para inserir
novos componentes para selecionar e executar os relatrios.
As mesmas configuraes realizadas na Listagem 1 em tempo de execuo tambm
podem ser feitas via IDE atravs das propriedades do objeto crystalReportViewer1,
porm, poder haver situaes quando se manipula relatrios dinamicamente em que
teremos de fazer isso via cdigo.
Listagem 1. Configurando objeto crystalReportViewer1

private void Form1_Load(object sender, EventArgs e)


{
this.crystalReportViewer1.Dock = System.Windows.Forms.DockStyle.None;
this.crystalReportViewer1.Location =
new System.Drawing.Point(0, 90);
this.crystalReportViewer1.Size =
new System.Drawing.Size(1108, 626);
}

Com o visualizador de relatrio pronto, agora hora de inserirmos alguns componentes


da Toolbox dentro do Form1 para fazer o gerenciamento dos relatrios disponveis na
aplicao, de forma que estes possam ser selecionados de forma interativa pelo usurio e
ento visualizados.
Iremos adicionar um componente GroupBox dentro do formulrio e configurar algumas
propriedades, conforme descrito a seguir.
Name: gpbRelatorios;
Text: Lista de relatrios;
Location: 0;0;
Size: 253; 84.
Agora iremos adicionar dentro do GroupBox trs RadioButtons para representar os trs
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

33/43

28/03/14

Crystal Reports: Criando relatrios com SAP

relatrios que criamos anteriormente, dessa forma o usurio ter a opo de selecionar
qualquer um dos relatrios para visualizar no CrystalReportViewer, porm, poder
visualizar apenas um de cada vez conforme a seleo.
Os trs RadioButtons devem ser inseridos no GroupBox um abaixo do outro, e iremos
aplicar as seguintes configuraes em suas propriedades:
RadioButton 1
o Name: rdbCrystalReportFormat;
o Text: Relatrio CrystalReportFormat.
RadioButton 2
o Name: rdbCrystalReportRelatorio1;
o Text: Relatrio CrystalReportRelatorio1.
RadioButton 3
o Name: rdbCrystalReportTotais;
o Text: Relatrio CrystalReportTotais.
Para gerar a visualizao do relatrio iremos inserir um Button no Form1 e depois
codificar o evento click do boto. O Button deve ser configurado da seguinte forma:
Name: btnGerarRelatorio;
Text: Visualizar Relatrio;
Location: 260; 60;
Size: 114; 23.
hora de codificar o evento click do boto para que possamos exibir o relatrio de
acordo com a seleo feita no GroupBox pelo o usurio. Na Listagem 2 temos o cdigo
necessrio para mostrar o relatrio na tela.
Listagem 2. Cdigo para gerar o relatrio

01 private void btnGerarRelatorio_Click(object sender, EventArgs e)


02 {
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

34/43

28/03/14

Crystal Reports: Criando relatrios com SAP

03

ReportDocument objCrystalDoc = new ReportDocument();

04
05

string relSelecionado;

06
07

if (rdbCrystalReportFormat.Checked == true)

08

09

relSelecionado = "\\CrystalReportFormat.rpt";

10

11

else if (rdbCrystalReportRelatorio1.Checked == true)

12

13

relSelecionado = "\\CrystalReportRelatorio1.rpt";

14

15

else

16

17
18

relSelecionado = "\\CrystalReportTotais.rpt";
}

19
20

objCrystalDoc.Load(Application.StartupPath + relSelecionado);

21

this.crystalReportViewer1.ReportSource = objCrystalDoc;

22

this.crystalReportViewer1.Refresh();

23 }

O cdigo da Listagem 2 mostra a criao de uma instncia da classe ReportDocument


para carregar os relatrios .rpt. Na sequncia criada uma varivel para armazenar o
nome do arquivo do relatrio; depois tem um bloco if-else para verificar qual relatrio foi
selecionado e atribuir o nome do deste varivel relSelecionado; em seguida carregado
o relatrio atravs do objeto ReportDocument; e por fim informada a fonte de dados
para o visualizador de relatrio crystalReportViewer1, dando um refresh para atualizar o
visualizador de relatrio e mostrar o mesmo na tela.
Na Listagem 2 importante ressaltar o comando Application.StartupPath, pois o mesmo
recupera o diretrio atual do executvel da aplicao, e para que os relatrios sejam
carregados de forma correta, os arquivos correspondentes a eles (os .rpt) devem estar
no mesmo diretrio do executvel.

Criando um relatrio com parmetros


Uma boa opo durante a criao de um relatrio possibilitar que o usurio possa
interagir com o ele no momento em que ir ger-lo, ou seja, nem sempre um relatrio ir
suprir as necessidades da busca por informao, pois h momentos em que se deseja
obter informaes detalhadas ou resumidas, seja em um intervalo de data, uma
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

35/43

28/03/14

Crystal Reports: Criando relatrios com SAP

determinada venda ou em uma busca das informaes de um cliente. Para facilitar a vida
do usurio, temos que disponibilizar meios para que ele possa parametrizar o relatrio
antes da gerao do mesmo, informando parmetros como datas para filtrar uma
informao em um intervalo de tempo, um cdigo para obter informao de produto em
uma s pgina e realizar uma impresso rpida, dentre diversos tipos de parmetros que
possam permitir ao usurio interagir com o relatrio e obter a informao que precisa.
Um relatrio bem elaborado com boas opes de parmetros s vezes evita a
necessidade de criar novos relatrios futuramente, porm, um relatrio com uma grande
quantidade de parmetros pode levar ao no uso do mesmo, devido ao usurio sentir
dificuldade para realizar o preenchimento de todos os parmetros (que pode acabar no
sendo o relatrio que se esperava devido ter marcado algum parmetro errado).
Quanto maior for a quantidade de parmetros em um relatrio, maior ser o filtro para se
obter uma determinada informao, por consequncia, tambm ser maior o tempo para
gerar e carregar o relatrio. Neste ponto devem ser avaliadas e verificadas as condies
de hardware para processar os relatrios solicitados e devem ser analisadas a
possibilidades de um servidor independente para relatrios, isso depende muito da
necessidade e quantidade de usurios gerando relatrios ao mesmo tempo no sistema.
Para exemplificar a criao de um relatrio com parmetros iremos copiar o arquivo do
relatrio CrystalReportFormat e nomear o novo como CrystalReportParametro, ento
passaremos a trabalhar nessa nova cpia.
Com SAP Crystal Reports podemos trabalhar com parmetros para relatrio de forma
muito fcil atravs do Parameter Fields, opo com a qual podemos inserir parmetros
estticos e dinmicos no relatrio.
Para mostrar o uso de parmetros, iremos adicionar dois parmetros estticos ao
relatrio, onde o usurio ter a opo de selecionar apenas uma determinada Order para
o segundo agrupamento de dados, ou selecionar apenas um determinado produto para
que possam ser exibidas todas as ordens em que mesmo consta, de acordo com o
agrupamento do relatrio.
Primeiramente criaremos os dois parmetros para o relatrio atravs do Field Explorer >
Parameter Fields e os chamaremos de parametroGrupoOrder e
parametroRegistroProduto. Observe como deve ficar a configurao do primeiro
parmetro na Figura 14, o segundo deve seguir a mesma configurao, modificando
apenas o nome para parametroRegistroProduto.
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

36/43

28/03/14

Crystal Reports: Criando relatrios com SAP

abrir imagem em nova janela


Figura 14. Configurao de parmetro para relatrio
Na tela de configurao de parmetro exibida na Figura 14 foi primeiramente definido o
nome do parmetro, e depois o tipo de dado, que deve ser do mesmo tipo da coluna na
tabela da base de dados. Em nosso caso, OrderID e ProductId so do tipo int, esto
devemos configurar o parmetro do relatrio para receber um valor numrico.
Um parmetro em um relatrio no SAP Crystal Reports pode receber dados de vrios
tipos, como booleano, data, data hora, hora, moeda, nmero e sequncia de caracteres.
Aps ter definido os parmetros do relatrio, hora de definir como o relatrio ir usar
esses valores para filtrar os dados.
O SAP Crystal Reports nos possibilita definir frmulas no nvel de grupo e registro, e
como nosso relatrio possui um grupo, e dentro do grupo temos os registros a serem
exibidos, ento iremos definir uma frmula para filtrar uma determinada ordem pelo
campo OrderID a nvel de grupo, e outra frmula a nvel de registro para filtrar um
produto pelo campo ProductID. Dessa forma iremos recuperar o cdigo da ordem ou do
produto passado via parmetro e utilizar os valores dentro das frmulas para filtrar dos
dados e gerar o relatrio, sendo que o usurio s ir poder filtrar uma ordem ou um
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

37/43

28/03/14

Crystal Reports: Criando relatrios com SAP

produto por vez.


Para inserir a primeira frmula no nvel de grupo iremos ao menu Crystal Reports >
Report > Selection Formula > Group e logo ir abrir a janela do editor de frmula com a
seleo de grupo j previamente feita. Devemos expandir a opo de campos do relatrio
e selecionar o campo Orders.OrderId para compor a frmula. Na sequncia, dentro da
janela operadores, iremos inserir o operador de comparao igual e por ltimo selecionar
parmetro parametroGrupoOrder que encontra-se na janela campos do relatrio, para
finalizar a frmula a nvel de grupo.
Com a janela do editor de frmula ainda aberta, iremos inserir a frmula para filtrar o
produto no nvel de registro. Devemos apenas selecionar a opo Seleo de Registro,
localizada esquerda do editor de frmula. Caso no tenhamos a janela aberta, podemos
ir ao menu Crystal Reports > Report > Selection Formula > Record e logo ir abrir
novamente o editor com a seleo de registro j pronta para receber a frmula. A
frmula para selecionar um determinado produto deve seguir o mesmo molde da seleo
de grupo, onde iremos alterar apenas Orders.OrderID para Products.ProductID e
parametroGrupoOrder para parametroRegistroProduto.
Com as frmulas previamente definidas, precisamos colocar em cada frmula criada uma
estrutura de controle if-else disponvel nos operadores para frmulas. Esta estrutura de
if-else ir verificar se o usurio est gerando um relatrio com filtro para uma ordem ou
para um produto.
As Listagens 3 e 4 mostra como devem ficar as frmulas para seleo de grupo e
registro do relatrio, respectivamente. As frmulas verificam se o valor de cada
parmetro diferente de zero, se for, realizam o filtro, caso contrrio, listam todos os
registros vlidos (OrderID > 0 e ProductID > 0).
Listagem 3. Frmula para seleo do grupo

if((?parametroGrupoOrder) <> 0)
then
((Orders.OrderID) = (?parametroGrupoOrder))
else
((Orders.OrderID) > 0)

Listagem 4. Frmula para seleo do registro


www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

38/43

28/03/14

Crystal Reports: Criando relatrios com SAP

if((?parametroRegistroProduto) <> 0)
then
((Products.ProductID) = (?parametroRegistroProduto))
else
((Products.ProductID) > 0)

Agora precisamos inserir alguns objetos no Form1 para que o usurio possa passar
como parmetro para o relatrio o nmero de uma ordem, ou um cdigo de um produto
especifico. Para isso, iremos colocar alguns componentes no Form1, conforme segue;
GroupBox
o Name: gpbParametro;
o Text: Selecione o Parmetro;
o Location: 379; 0;
o Size: 261; 83;
Em seguida adicionaremos dentro do GroupBox dois RadioButton para que o usurio
possa selecionar o tipo de filtro que deseja no relatrio, por ordem ou produto, como
descrito a seguir;
RadioButton 1
o Name: rdbOrdem;
o Text: Por ordem.
RadioButton 2
o Name: rdbProduto;
o Text: Por produto
Tambm iremos adicionar dentro do GroupBox um Textbox para recuperar o valor
digitado pelo o usurio, neste TextBox o usurio tanto pode informar o nmero da
ordem como o cdigo do produto, de acordo com o RadioButton selecionado;
Textbox 1
o Name: txtParametro.
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

39/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Ainda precisamos adicionar dentro do GroupBox gpbRelatorios um RadioButton para


representar o ltimo relatrio criado, o CrystalReportParametro. Vejamos na sequncia a
configurao do ltimo RadioButton:
RadioButton 4
o Name: rdbCrystalReportParametro;
o Text: Relatrio CrystalReportParametro.
Com todos os componentes necessrios no Form1, se executarmos o gerenciador de
relatrio, ele deve ficar semelhante Figura 15.

abrir imagem em nova janela


Figura 15. Tela do gerenciador de relatrios
Agora que temos a parte visual do gerenciador de relatrio pronta, precisamos fazer
algumas modificaes no cdigo do evento click do boto que gera o relatrio
selecionado no gerenciador de relatrios.
A Listagem 5 mostra como deve ficar a nova implementao de cdigo do evento click
do boto do gerenciador de relatrio. Temos duas regions que devem ser destacadas, a
primeira a seleo do relatrio, onde foi modificada a estrutura do if-else para a
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

40/43

28/03/14

Crystal Reports: Criando relatrios com SAP

insero do novo relatrio CrystalReportParametro. A segunda region verificar relatrio


com parmetro verifica se foi selecionado o relatrio CrystalReportParametro, em caso
positivo, verificado qual foi o tipo de parmetro selecionado, ordem ou produto, e
ento setado o parmetro na instncia do ReportDocument, atravs do mtodo
SetParameterValue, que recebe dois valores como parmetro, o primeiro o nome do
parmetro no relatrio e o segundo o valor a ser repassado.
Listagem 5. Cdigo para gerao do relatrio

01 private void btnGerarRelatorio_Click(object sender, EventArgs e)


02 {
03

ReportDocument objCrystalDoc = new ReportDocument();

04
05

string relSelecionado;

06
07

#region Seleo do relatrio

08

if (rdbCrystalReportFormat.Checked == true)

09

10

relSelecionado = "\\CrystalReportFormat.rpt";

11

12

else if (rdbCrystalReportRelatorio1.Checked == true)

13

14

relSelecionado = "\\CrystalReportRelatorio1.rpt";

15

16

else if (rdbrdbCrystalReportTotais.Checked == true)

17

18

relSelecionado = "\\CrystalReportTotais.rpt";

19

20

else

21

22

relSelecionado = "\\CrystalReportParametro.rpt";

23

24

#endregion

25
26

objCrystalDoc.Load(Application.StartupPath + relSelecionado);

27
28

#region Verificar relatrio com parmetro

29

if (relSelecionado == "\\CrystalReportParametro.rpt")

30

31

if (rdbOrdem.Checked == true)

32

33

objCrystalDoc.SetParameterValue
("parametroGrupoOrder",
int.Parse(txtParametro.Text));

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

41/43

28/03/14

Crystal Reports: Criando relatrios com SAP

34

objCrystalDoc.SetParameterValue
("parametroRegistroProduto", 0);

35

36

else

37

38

objCrystalDoc.SetParameterValue
("parametroRegistroProduto",
int.Parse(txtParametro.Text));

39

objCrystalDoc.SetParameterValue
("parametroGrupoOrder", 0);

40

41

42

#endregion

43
44

this.crystalReportViewer1.ReportSource = objCrystalDoc;

45

this.crystalReportViewer1.Refresh();

46 }

Novamente j possvel executar o gerenciador e testar a visualizao dos relatrios.

Concluso
Este artigo tratou de mostrar o conceito introdutrio para criao de relatrios com SAP
Crystal Reports, mostrando uma das diversas formas de criar relatrios e disponibilizar
em um sistema atravs de um gerenciador de relatrio simples. Porm, importante
frisar que esta poderosa ferramenta geradora de relatrio vai muito alm dos exemplos
aqui mostrados, existem muitos recursos que devem ser explorados, possibilitando a
criao de relatrios de forma rpida, fcil e integrada a uma soluo desenvolvida com a
plataforma .NET e linguagem de programao C#.
importante destacar que podemos criar relatrios com grficos de diversos tipos, como
de linhas, pizza e ainda podemos criar um relatrio com SAP Crystal Reports em cima um
DataSet disponvel em uma aplicao .NET. Com este recurso possvel criar relatrios
dinamicamente direto na programao com as bibliotecas do Crystal disponvel para a
plataforma .NET.
O conhecimento adquirido neste artigo serve como base para voc iniciar uma explorao
mais detalhada dos recursos do SAP Crystal Reports, podendo disponibilizar seus
relatrios em aplicaes WPF, ASP.NET e at mesmo disponibilizar atravs de um servio
WebService.
www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

42/43

28/03/14

Crystal Reports: Criando relatrios com SAP

Trabalhar na criao de relatrios no uma tarefa fcil inicialmente, mas medida que
se vai ganhando novos conhecimentos e praticando bastante, conseguimos ter um
domnio maior e neste ponto que desperta a criatividade para resoluo de problemas e
criao de relatrios robustos, que atendam a necessidades do usurio. Isso sem
sombra de dvida a parte mais gratificante para um desenvolvedor.

Links
Download Crystal Reports
http://scn.sap.com/docs/DOC-35074
Download Nortwind
http://www.microsoft.com/en-us/download/details.aspx?id=23654
Site SAP Crystal Reports para desenvolvedores
http://global.sap.com/brazil/solutions/sap-crystalsolutions/developers/index.epx

Madson Aguiar Rodrigues


Formao acadmica em Anlise e Desenvolvimento de Sistemas e Ps-Graduao em Engenharia de
Software cursando atualmente Especializao de Tecnologias para aplicaes Web. Trabalha com
desenvolvimento de software h cinco anos co [...]

www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29700

43/43