Nesta matéria iremos conhecer este poderoso gerador de
relatório denominado ReportBuilder. Ele se diferencia da forma de trabalhar dos
outros geradores de relatório como o Quick Report, ou até mesmo o Fortes
Report. Vale salientar a imensa quantidade de recursos e a facilidade de
construir relatórios possuindo algumas características importantes que vale
salientar, como:
A fácil instalação e manuseio dos componentes, sua
utilização difere muito do Quick Report, ou seja não precisa de muito adaptação
do programador.
Procurarei abordar os principais componentes e demonstrar
seu poderio seguido de uns exemplos bem simples de sua utilização.
Entendendo o
Funcionamento
Observe na Figura 01 o esquema de como é o funcionamento do
ReportBuilder.
Figura 01. Equação do
ReportBuilder.
Em seguida irei dar uma breve explicação da dita “Equação do
ReportBuilder”.
Data Access: Acesso
aos dados, seria a recuperação dos dados de uma base de dados qualquer, seja
por tabelas ou outra série de dados de forma organizada.
Data Process: Processamento
dos dados, camada intermediária para o processamento dos dados.
Report Layout:
Layout do relatório, é a disposição e o comportamento dos componentes dentro do
relatório.
Report Output: Saída
do relatório, ou seja o resultado final para o usuário.
A instalação
Infelizmente ele não é gratuito, mas possui uma versão trial
no seguinte site http://www.digital-metaphors.com/ que iremos desfrutá-lo neste
artigo. Utilizaremos a versão Server ( a mais completa), para isto entre no
site acima e através da aba Download escolha “Server 10.06 for Delphi 7” e em seguida baixe o seu
instalador. A instalação é bem simples, feche o Delphi 7 e dê um duplo clique
em seu arquivo de instalação. Leia atentamente sua Licença (lembrando que
estamos utilizando uma versão demo) e em seguida clique em next. Aparecerá
algumas janelas para escolher o diretório de instalação, entre outras configurações.
Instale tudo como padrão.
Conhecendo os
componentes
Abra o Delphi 7 e localize a paleta chamada RBuilder, veja a
Figura 02.
Figura 02. Paleta de
componentes.
Irei dar uma breve explicação dos principais componentes
encontrados nesta paleta.
ppDBPipeline: Utilizado para acesso aos
dados. Componente compatível com Tdataset. O ppDBPipeline é conectado através
da propriedade Datasource.
ppBDEPipeline: Utilizado especificamente
para acesso aos dados utilizando o BDE. As características são as mesmas no
descrito acima.
ppTextPipeline: Utilizado para acessar
arquivos textos. As características são parecidas com os descritos acima.
ppJITPipeline: Quando ligado a
propriedade DataPipeline de qualquer componente de relatório Data-Aware, esse
componente pode ser usado para acessar dados armazenados em objetos do Delphi.
ppReport: O principal componente do
ReportBuilder. Ao clicar com o botão direito escolhendo Report Designer... é
possível verificar o layout do relatório.
ppViewer:
É um objeto pouco utilizado, útil para que você possa substituir o
formulário padrão utilizado pelo ReportBuilder para visualização e impressão de
relatórios por formulários criados.
ppArchiveReader:
Componente utilizado para ler relatórios salvos com extensão (.raf)
ppDBArchiveReader:
Componente utilizado para manipular relatórios salvos em tabelas do Banco de Dados.
ppDesigner:
Utilizado para que os usuários finais possam customizar seus relatórios
junto com sua aplicação.
ppReportExplorer:
Permite que os usuários finais salve e organize seus relatórios em uma
estrutura de diretórios.
ppDataDictionary: É possível controlar as
tabelas e campos que o usuário pode ver, como também fornece relacionamentos
default entre tabelas.
Neste momento iremos conhecer alguns dos principais recursos
deste gerador de relatórios para adiante montarmos um exemplo simples. Para
isto abra o Delphi 7 e coloque no formulário um componente chamado ppReport e em seguida dê um duplo
clique. Aparecerá uma mensagem indicando que se trata de uma cópia Demo e mais
algumas informações relevantes para poder obter o produto completo. Veja a Figura
03 o layout.
Figura 03. Design do
ReportBuilder.
Logo abaixo irei explicar e apresentar alguns dos principais
recursos desta ferramenta.
Figura 04. Barra de
Ferramentas.
A barra de ferramentas é dividida em três segmentos:
Na parte esquerda da barra encontram-se os componentes de
interface, na região central os componentes ditos Data-Awares e na direita os
relacionados aos tipos de bandas.
Label,
Memo e Richtext: A mesma funcionalidade dos componentes da própria IDE do
Delphi.
System Variable: Recursos do
sistema. Interessante, permite colocar a data atual, data e hora atual, nome do
documento, número de páginas entre outras coisas.
Poderá ser alterado
através da propriedade VarType e seu formato é controlado pela propriedade
DisplayFormat, veja Figura 05 abaixo:
Figura 05. System Variable.
Shape:
Permite colocar figuras geométricas no relatório como (quadrados,
retângulos, círculos, elipses).
Lines:
Inserir linhas, útil para fazer divisões entre os campos ou entre as bandas
do relatório.
Barcode
e 2DBarcode: Código de barras, recurso muito interessante em se tratando de
geradores de relatórios, um exemplo disto é o Quick Report, é necessário
componentes de terceiros para obter este recurso.
CheckBox:
Possibilidade da utilização do checkBox dentro do relatório.
Chart:
Criação de gráficos.
Os recursos apresentados na região central da barra de
tarefas possuem quase a mesma finalidade, a diferença é que eles têm vínculo ao
Banco de Dados.
Region:
Define uma área especifica do relatório para ser controlada.
Subreport:
Utilizado para criar relatórios do tipo mestre-detalhe, possibilitando criar várias
abas dividindo-o em várias partes. A propriedade PrintBehavior determina o tipo
de banda a ser criada.
Page Break: Como o próprio nome
diz, serve para fazer quebra de páginas.
Crosstab: Componente útil para fazer
relatórios com referência cruzada.
É importante
ressaltar que o ReportBuilder possui Eventos para serem utilizados nas bandas,
mas especificamente nesta matéria não utilizaremos nenhum evento.
Montando um projeto
de exemplo
Depois de aprendermos e conhecermos um pouquinho sobre os
recursos, iremos a partir daqui montar um exemplo simples de relatório do tipo Mestre-detalhe.
Abra o Delphi 7 vá em File/New/Application e adicione no
formulário um componente SqlConnection. Vale ressaltar que estaremos utilizando
o Firebird 1.54 e seu Banco de Dados padrão (EMPLOYEE.FDB), para quem não sabe
ele encontra-se na seguinte pasta C:\Arquivos de
programas\Firebird\Firebird_1_5\examples\EMPLOYEE.FDB.
Pegue um SqlDataset altere seu nome para SqlDepartment e
ligue-o ao Sqlconnection através de sua propriedade Sqlconnection.
Em sua propriedade CommandText iremos colocar a instrução
SQL para obter os campos da tabela Department. Veja abaixo:
SELECT DEPT_NO, DEPARTMENT, LOCATION FROM DEPARTMENT
Neste momento colocaremos um componente Datasetprovider e
ligaremos a propriedade Dataset ao SqlDepartment e em seguida coloque um
Clientdataset, nomeie para ClientDepartment e coloque em sua propriedade
Providername como Datasetprovider1.
Coloque mais um componente Sqldataset e o nomeie para
SqlEmployee, ligue sua propriedade Sqlconnection para Sqlconnection1 e em sua
propriedade CommandText coloque o seguinte código SQL:
SELECT
FIRST_NAME, LAST_NAME, HIRE_DATE, DEPT_NO FROM EMPLOYEE WHERE DEPT_NO =
:DEPT_NO
Em seguida deveremos ligar este
SqlDepartment com o SqlEmployee e será feito isto através de um datasource.
Coloque no formulário um componente Datasource e dê o nome de DSDepEmp. Em sua
propriedade dataset coloque como SqlDepartment, no SqlEmployee coloque a propriedade
Datasource para DSDepEmp. Coloque mais um componente Clientdataset e altere seu
nome para ClientEmployee.
Adicione os Fields tanto nos componentes SqlDatasets quanto
nos ClientDatasets. Não esqueça de setar a propriedade DataSetField do
ClientEmployee para ClientDepartmentSQLEmployee. Veja a Figura 06 como está
ficando nosso formulário.
Figura 06. Mestre Detalhe.
Criamos apenas um relacionamento entre estas duas tabelas. Adicione
mais dois Datasources os renomeie para DSDepartment e DSEmployee e ligue-os aos
respectivos Clientdatasets.
Agora iremos utilizar os componentes do ReportBuilder.
Coloque um componente ppDBPipeline (utilizado para acesso aos dados) e o nomeie
para ppDBDepartment e coloque na propriedade Datasource para DSDepartment. Após
isto coloque mais um componente ppDBPipeline e o nomeie para ppDBEmployee
ligando ao Datasource DSEmployee e a propriedade MasterDataPipeline deixe como ppDBDepartment
(seria a tabela mestre).
Por último coloque um componente ppReport e ligue sua
propriedade Datapipeline para ppDBDepartment.
Veja na Figura 07 como está ficando nosso exemplo.
Figura 07. Mestre Detalhe
Para visualizarmos os dados insira nos formulários dois
Dbgrids e altere suas propriedades Datasource respectivamente para DSDepartment
e DSEmployee e finalmente iremos inserir
uma botão para chamar nosso relatório. Veja abaixo o código e a Figura 08.
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ppReport1.Print;
end;
Figura 08. Configuração dos
Componentes.
Montando o relatório
Dê um duplo clique sobre o componente ppReport para abrir o
Report Designer. Por padrão ele vem com as bandas Header, Detail e Footer.
Adicione na banda Header um componente Label com o nome de “Exemplo – Mestre
Detalhe” e um System variable para podermos pegar a data atual. Em seguida na
banda Detail coloque mais 2 Labels e 2 Dbtext para pegar os seguintes campos da
tabela Department: Dept_No e Department, nomeie os Labels e ligue os Dbtexts
com respectivos campos. Veja abaixo a Figura 09 como está ficando nosso
relatório.
Figura 09. Montando o
relatório.
Adicione na banda Detail um componente Subreport e ligue-o à
tabela Employee. Percebam que foi criado uma aba na região inferior da tela
chamada Subreport1:Dbemployee, é através desta aba que iremos configurar a
outra parte do nosso relatório. Clique nesta aba e coloque mais 3 Labels e 3 Dbtexts, com os seguintes nomes
First_Name, Last_Name e Hiredate e ligandos os Dbtexts aos seguintes campos:
Fisrt_name, Last_Name e Hiredate respectivamente.
Para completar nosso exemplo insira um componente System
Variable, altere sua propriedade vartype para vtPageSetDesc (serve para ter uma
contagem do tipo: página atual por total de páginas) e o coloque no formulário
principal na banda Footer.
Rode nosso exemplo, clique no botão Preview e teremos como
resultado nosso relatório parecido com a Figura 10.
Figura 10. Exemplo Pronto.
Conclusão
Montamos nesta matéria sem muito esforço, um exemplo simples
com este gerador de relatórios. Procurei explorar e demonstrar poucos dos
muitos recursos encontrados nele. Espero que tenham gostado e até a
próxima.
Nenhum comentário:
Postar um comentário