Relatório Simples com Rave Report

Por Marcos P. Gomes

Nesse pequeno artigo iremos mostrar de forma simples e objetiva como montar um relatório usando o Rave Report que foi incorporado a partir da versão 7 do Delphi

Em primeiro lugar, criaremos nossa conexão com o banco de dados. Adicione uma TQuery e configure as seguintes propriedades.

Objeto TQuery

DatabaseName

DbDemos

Name

QryClients

SQL

select * from clients

Após isso, vá até a guia Rave e adicione o componente RvQueryConnection. Esse componente é responsável pela troca dos dados entre os objetos de conexão com o banco de dados e os dados que serão impressos através do Rave, como você pode perceber o Rave trata os dados de forma diferente do Quick Report, pois o Quick Report acessava os dados diretamente através dos componentes de conexão (Ttable, TQuery, ...).

Agora configure as seguintes propriedades :

Objeto TRvQueryConnection

Name

RvQryClients

Query

qryClients

Agora devemos colocar o componente RvProject, esse componente é responsável pelo gerenciamento de todos os relatórios que estão em nosso projeto Rave (.RAV).

Dê um duplo clique nesse componente, isso fará com que o Rave abra sua área de Design para que possamos desenhar nosso relatório.


Ambiente Design do Rave Report

Agora dentro do Rave, Vá em File | New Data Object | Direct Data View e selecione o RvQryClients na área Active Data Connection, os itens que aparecem nessa área são as conexões que colocamos em nosso formulário do Delphi.

Isso fará com que seja adicionado mais um item na seção Data View Directory que se encontra no Tree Panel, nesse local ficará todas as conexões com as tabelas que serão usadas nesse relatório.


Tree Panel

Vá até a guia Report e adicione um componente chamado Region Component. Todas bandas devem estar obrigatoriamente dentro de um Region e esse Region deve ocupar toda a área de impressão.

Adicione o componente Band, clique em BandStyle e marque as opções Body Header, First (1) e New age (P).

Ainda dentro do Band1, na guia Standard, adicione três Text Component e altere o Text dos mesmos para Nome, Endereço, Cidade

Após isso, volte para a guia Report e adicione o componente DataBand, ligue a propriedade DataView ao DataView1.

Depois disso tudo nossas bandas já estão quase finalizadas o que resta é apenas adicionar os campos que deverão ser impressos.

Para isso, fique pressionado CTRL, clique no campo DataView1FIRST_NAME e arraste ele para dentro de nossa DataBand1, repita esse processo para o campo de endereço e cidade.

Selecione o Band1 e ligue a propriedade ControllerBand ao DataBand1 e nosso trabalho dentro do Rave está finalizado, teremos algo semelhante a figura abaixo:

Visão final de como deve ficar os objetos no Rave

Salve esse projeto como ListaRave.RAV e volte para o Delphi, faremos nossa aplicação Delphi iniciar a impressão desse relatório.

Dentro do Delphi, adicione um TButton e coloque a seguinte codificação :

  RvProject1.Execute;

No componente RvProject1, aponte a propriedade ProjectFile para o projeto Rave que acabamos de criar ListaRave.RAV.

Nosso aplicativo Delphi terá a seguinte aparência :

Aplicação Delphi

Conclusão

O Rave é um gerador de relatórios fantástico, onde podemos ter vários relatórios centralizados em um único projeto Rave.

Além disso, também podemos mandar nossos relatórios separados da aplicação ou podemos incorporar os relatórios no próprio executável.

Clique aqui e faça download desse sistema.

Marcos P. Gomes trabalha como desenvolvedor de sistemas em uma empresa do ramo automobilístico, desenvolve sistemas em diversas linguagens e é um dos fundadores do site http://www.delphibr.com.br/. Também faz parte do grupo de moderadores da lista de discussão lista-delphi@yahoogrupos.com.br. Pode ser contatado pelo e-mail marcos@delphibr.com.br

COMENTÁRIOS
Renata - 17/04/2003 - 16:42:00
Legal! É bom que seja falado mais sobre este assunto (Rave) já que todos nós ainda estamos cheios de dúvidas...
Mas seria legal um exemplo c/ um relatório com mais funcoes, algo com header, detail, footer, etc...
O que acham???

[]'s
................................................
Marcos P. Gomes - 17/04/2003 - 16:44:58
Em breve... estaremos disponibilizando mais material sobre o assunto...

Fiquem atentos :)


Marcos P. Gomes
Moderador - DelphiBR
................................................
Walter Felipe - Olin - 18/04/2003 - 21:08:59
Muito legal de sua parte disponibilizar algo em torno do RAVE, pois como muitos de nos somos oriundos do QuickReport fica um pouco difícil entender a funcionalidade desta nova ferramenta. Assim sendo dou o maior apoio tanto a você como a outros que venham à disponibilizar algum material sobre esta nova forma de gerar relatórios. Inclusive recomendo a aqueles que tenham conhecimento técnico suficiente que pensem quanto ao lançamento de um livro que aborde de forma prática a manipulação do RAVE.
................................................
Hook me up - 19/04/2003 - 20:46:52
RAVE é perda de tempo.
................................................
Carlos Silveira - 22/04/2003 - 18:10:50
Não entendo porque ainda tem gente que perde tempo só pra denegrir o trabalho dos outros. Rave é perda de tempo? Pode ser, desde que vocë apresente argumentos plausíveis que sustente sua idéia.

Meu amigo "Hook me up" seja um formador de opiniões e não apenas mais uma "maria vai com as outras".

Um debate saudável de pontos de vistas antagônico só agregará novos valores e conhecimentos preciosos.

Vamos ser construtivos?
................................................
Marcos P. Gomes - 23/04/2003 - 10:21:37
O Carlos Silveira falou tudo, mas peço que não dê continuidade a esse tópico ("RAVE é perda de tempo").


Marcos P. Gomes
Moderador
................................................
Jackson - 23/04/2003 - 11:42:56
Otima iniciativa esta de iniciar sobre o assunto RAVE, fiz alguns testes mas ainda nao sei como faço para passar o valor de um Edit em um relatorio de dados que fiz do RAVE, por exemplo onde a pessoa possa digitar o titulo do relatorio.
Caso possam me ajudar..
................................................
Marcos P. Gomes - 23/04/2003 - 14:41:48
Jackson dúvidas tecnicas sobre o Rave, estamos respondendo na lista-delphi@yahoogrupos.com.br

Para se cadastra : lista-delphi-subscribe@yahoogrupos.com.br

Marcos P. Gomes
Moderador
................................................
Harlinton - 27/04/2003 - 09:35:25
Muito bom o exemplo sobre um relatório criado com o rave, eu faço minhas as palavras da Renata que solicitou algums outros exemplos com + funções e quem sabe até com a utilização do código de barra.
................................................
Ricardo Ferreira - 28/04/2003 - 10:41:22
Ao Sr. Jackson,

Bem, com relação a sua duvida de querer poder escrever a partir de um edit, o titulo de um relatório você pode proceder da seguinte forma:

Digamos que no seu relatório Rave, o label do titulo de chame 'TitRep'. Coloque um edit num form e um botão. no evento onclick deste botão coloque o seguinte:

procedure TForm1.Button1Click(Sender: TObject);
var
Pag: TRavePage;
Tit: TRaveText;
begin
with RvProj.ProjMan do
begin
Pag := FindRaveComponent ('Report1.Page1', nil) as TRavePage;
Tit := FindRaveComponent('TitRep', Pag) as TRaveText;
Tit.Text := Edit1.Text;
end;
end;

Onde, RvProj é o componente ReportProject, Pag é uma variável que irá representar a página do seu relatório e tit
será uma referência ao objeto text que reside dentro do relatório.

No Rave, não se pode acessar diretamente as instâncias dos objetos Rave, mas uma vez que eles estão em memória (Heap), podemos criar referências (ponteiros) pra eles. Desde que essas referências sejam do tipo requerido (Por isso o typecasting) no final da chamada a FindRaveComponent.

E declare as bibliotecas: RvClass, RvProj e RvCsStd na cláusula uses da unit.

OK?
................................................
Poliana - 02/05/2003 - 14:54:33
Já foi publicado algum livro que fale sobre o Rave?
................................................
Poliana - 02/05/2003 - 14:55:02
Já foi publicado algum livro que fale sobre o Rave?
................................................
sandra - 02/05/2003 - 15:11:40
como usar em uma aplicação clx. Tentei fazer o mesmo que fiz numa aplicação normal, mas não funciona
................................................
Letícia - 02/05/2003 - 17:35:46
Ótimo o artigo, especialmente pra iniciantes como eu.
Agradeço
................................................
Vargas - 05/05/2003 - 11:20:24
tem como criar um gerenciador de relatórios no RAVE, o report builder possibilita essa opção
................................................
Hermano Bessa - 11/05/2003 - 14:47:11
Tenho que fazer vários relatórios e já estou pesquisando vários dias sobre o R.A.V.E e não consigo fazer estes relatórios, portanto vou voltar para o QuickRep. Mais Agradeço assim mesmo.
................................................
Daniel - 14/05/2003 - 17:32:51
Não sei se porque estou começando a programação agora, mas gostei do Rave, só que tenho muitas duvidas. Mas acho que vale a pena.
................................................
Willians - 16/05/2003 - 15:16:59
Gostei muito do rave, mas gostaria de sabe como eu posso fazer uma conexão direta com rave utilazando componente do interbase ?
................................................
Daniel - 20/05/2003 - 12:21:59
Achei o Rave fantástico, embora estou começando no desenvolvimentos de sistemas a pouco tempo, tenho certeza que é melhor que os geradores de relatórios das versões anteriores, até pelo fato do Rave ser independente do Projeto.
Agradeço todas os meus esclarecimentos de duvidas.
................................................
Ricardo Ferreira - 27/05/2003 - 12:37:52
Ao Sr. Julio,

Verifique se você colocou os nomes corretos dentro do projeto Rave. No meu exemplo. coloquei o nome do report como Report1, e a página dentro do report como Page1. Verifique também o nome do label que deve ser TitRep. Ok?

Dica.: No site do fabricante do Rave (Nevrona) tem excelentes tutoriais de como trabalhar com a ferramenta, bem como criar relatórios com ele.

www.nevrona.com
................................................
Julio - 27/05/2003 - 13:05:34
A Ricardo Pereira, obrigado pelo seu exemplo, mas nao esta dando certo, parece a mensagem "Access violation at address .... Read of address 00000000" = que pode estar acontecendo?
................................................
Julio - 27/05/2003 - 13:32:00
A Ricardo Pereira, obrigado pelo seu exemplo, mas nao esta dando certo, parece a mensagem "Access violation at address .... Read of address 00000000" = que pode estar acontecendo?
................................................
Julio - 27/05/2003 - 13:44:00
Me desculpa pelas muitas mensagens, mas parece que a velocidade da minha linha esta com problemas. Conferi os nomes e estao certos, mas nao tem nada a ver os nomes do DataViewRegion e DataViewTitleBand? Usando F7 aparece que o valor de Tit é nil, ta certo? Obrigado
................................................
Julio - 27/05/2003 - 13:47:02
Nao consigo ter acesso a www.nevrona.com, se for possivel se comunicar direto com julio.telot@umcc.cu, vou ficar grato. Obrigado
................................................
Carlos Eduardo - 27/05/2003 - 16:04:01
Gostaria de saber como fazer para conectar o RAVE com o banco de dados mysql?
................................................
Marcos P. Gomes - 28/05/2003 - 07:36:59
Pessoal esta área não é para dúvidas !!! É apenas para que você possa expressar sua opinião sobre o material que acabou de ver acima.

As Dúvidas tecnicas estamos respondendo na lista-delphi@yahoogrupos.com.br

Para se cadastra : lista-delphi-subscribe@yahoogrupos.com.br

Marcos P. Gomes
Moderador
................................................
Envie seu comentário
Nome
Comentários