11
Criando relatórios em Delphi 7 Parte II - Conhecendo o RAVE 5.0 por Adenilton Rodrigues No artigo anterior apresentei minhas experiências com ferramentas de relatórios para desenvolvimento de projetos Delphi. Neste estarei apresentando os componentes da paleta RAVE 5.0 e, no próximo, partirei para a prática da construção de relatórios usando essa ferramenta. Ficou bastante claro que essa suíte de componentes se distingue das demais pelo fato de possibilitar um desenvolvimento estritamente baseado em código de programação Delphi. Essa técnica, apesar de trabalhosa, é bastante flexível, pois possibilita ao programador mais experiente desenvolver seus próprios métodos de criação de relatórios, sem muita depedência dos recursos disponibilizados pelo ambiente gráfico da ferramenta. Porque utilizar o desenvolvimento em código runtime? Imagine a seguinte situação: Preciso montar um Relatório de Vendas e apresente o movimento diário por Cidade e por Vendedor. Seu layout deverá obedecer aos seguintes critérios de impressão: As vendas de segunda-feira à quarta-feira ficarão à esquerda do relatório na cor azul. As vendas da quinta-feira e sexta-feira, serão impressas à direita na cor verde. As vendas do sábado serão impressas numa folha individual. Na última página deverá ser emitido um um resumo semanal de vendas. Vendedores sem vendas no período deverão estar em negrito. Experimente montar esse relatório usando queries SQL em um ambiente de criação de relatórios visuais(!): Pode até ser que você consiga fazê- lo, mas garanto que irá gastar muito mais tempo que o seu equivalente devidamente codificado em Delphi. Os pessimistas dirão que estou sendo extremista. Claro, estou... as dificuldades que o desenvolvedor enfrenta na construção de projetos corporativos costumam ser piores e os prazos cada vez menores! Esta é a nossa realidade. Estaremos sempre nos deparando com questões de difícil e trabalhosa solução. Precisamos aplicar a ferramenta certa

Criando relatórios em Delphi 7 Parte II

Embed Size (px)

Citation preview

Page 1: Criando relatórios em Delphi 7 Parte II

Criando relatórios em Delphi 7 Parte II - Conhecendo o RAVE 5.0

por Adenilton Rodrigues

No artigo anterior apresentei minhas experiências com ferramentas de relatórios para desenvolvimento de projetos Delphi. Neste estarei apresentando os componentes da paleta RAVE 5.0 e, no próximo, partirei para a prática da construção de relatórios usando essa ferramenta.

Ficou bastante claro que essa suíte de componentes se distingue das demais pelo fato de possibilitar um desenvolvimento estritamente baseado em código de programação Delphi.

Essa técnica, apesar de trabalhosa, é bastante flexível, pois possibilita ao programador mais experiente desenvolver seus próprios métodos de criação de relatórios, sem muita depedência dos recursos disponibilizados pelo ambientegráfico da ferramenta.

Porque utilizar o desenvolvimento em código runtime?

Imagine a seguinte situação:

Preciso montar um Relatório de Vendas e apresente o movimento diário por Cidade e por Vendedor. Seu layout deverá obedecer aos seguintes critérios de impressão:

As vendas de segunda-feira à quarta-feira ficarão à esquerda do relatório nacor azul.

As vendas da quinta-feira e sexta-feira, serão impressas à direita na cor verde.

As vendas do sábado serão impressas numa folha individual. Na última página deverá ser emitido um um resumo semanal de vendas. Vendedores sem vendas no período deverão estar em negrito.

Experimente montar esse relatório usando queries SQL em um ambiente de criação de relatórios visuais(!): Pode até ser que você consiga fazê-lo, mas garanto que irá gastar muito mais tempo que o seu equivalente devidamente codificado em Delphi.

Os pessimistas dirão que estou sendo extremista. Claro, estou... as dificuldades que o desenvolvedor enfrenta na construção de projetos corporativos costumam ser piores e os prazos cada vez menores! Esta é a nossa realidade. Estaremos sempre nos deparando com questões de difícil e trabalhosa solução. Precisamos aplicar a ferramenta certa para cada problema. Não existe uma ferramenta mágica que atenda a uma heterogeneidade de propósitos.

Se a construção de relatórios difíceis é um dos seus problemas, então, com certeza, o RAVE veio pra facilitar bastante o seu trabalho de desenvolvimento.

Quem é o RAVE 5.0?

A incorporação do RAVE pelo Delphi 7.0 foi feita de uma forma bastante confusa (creio que foi feita às pressas). Os componentes da paleta RAVE no Delphi 7.0 não são compatíveis com o pacote oficial disponibilizado pela Nevrona em seu site (http://www.nevrona.com/rave). Lá você encontrará o RAVE 4.09 trial para download e a 5.0 para a compra.

Page 2: Criando relatórios em Delphi 7 Parte II

Os arquivos demos disponíveis para download não são compatíveis com o Delphi 7.0 e RAVE 5.0, pois foram baseados no RAVE 4.09.

Houve uma mudança no nome das classes da versão 4.09 para 5.0 e alguns componentes simplesmente desapareceram. Isto inviabilizará o uso dos exemplos de demonstração da versão 4.09. Quem já utilizava o RAVE (ou, no meu caso, o ReportPrinter) terá que modificar seus projetos para garantir a compatibilização do Delphi 5/6 com o 7.0.

Produtos de terceiros, tipo o excelente Rave for Renders da Pragnaam (http://www.pragnaan.com) não são compatíveis. Deverão ser reescritos. A Borland não disponibiliza o código fonte do RAVE. Este deverá ser adquirido junto à Nevrona. Até aí, nada de novo, já era assim com o QuickReport.

Percebi alguns pequenos bugs na versão 5.0 do RAVE, principalmente na sua IDE de criação de relatórios. A Nevrona está prometendo para breve um patch de correção.

Um Bug interessante (se é que Bugs podem ser interessantes) acontece na versão 98 do Windows. quando o usuário tenta salvar um relatório criado na IDE. Uma mensagem de erro o informará que não existe espaço livre no disco rígido (!).O relatório só será salvo se você apontá-lo para a pasta raiz do drive. Cheguei a essa conclusão depois de perder vários trabalhos desenvolvidos na IDE.

O desenvolvedor inicialmente enfrentará o problema da falta de documentação e Demos atualizados para a versão adotada pelo Delphi 7.0.

Não percebi mudanças substanciais na engine básica do componente. Acredito que essa evolução tenha caminhado basicamente para o lado do design de relatórios usando a IDE do RAVE.

Os legionários do excelente ReportBuilder (antigo Piparti) (http://www.digital-metaphors.com) a acharão muito confusa, e realmente é.Acredito ser apenas uma questão de tempo. Essa IDE é bastante nova, se comparada ao ReportBuilder, que já está no mercado desde o Delphi 2.0.

A propósito, nos fóruns "borland.public.delphi.thirdparty-tools" e "borland.public.delphi.reporting-charting" está acontecendo um duelo de titãs entre os criadores do RAVE e do ReportBuilder. Vale a pena acompanhá-la, é umadiscussão de alto-nível onde cada um expõe os recursos de sua ferramenta em comparação com a concorrente. Se você não usa News, procure pelas palavras "Delphi" "RAVE" "ReportBuilder" no http://groups.google.com.

Para conhecer melhor o produto RAVE, recomendo o download da documentação oficial da Nevrona nos endereços abaixo. São dois arquivos PDF (mais de 600 páginas) com uma excelente descrição técnica e funcional das classes do pacote.

Rave Visual Designer Documentation in Adobe Acrobat Format http://www.nevrona.com/files/rave4.pdf

Borland Integration Guide Pro Documentation in Adobe Acrobat Format http://www.nevrona.com/files/rppro4.pdf

Não deixe de visitar também a seção de Tips & Tricks. A maioria das dicas estão desatualizadas, porém o código é compatível com as novas versões.http://www.nevrona.com/rave/tips.shtml

Page 3: Criando relatórios em Delphi 7 Parte II

O Delphi 7.0 traz alguns demos de relatórios do RAVE na pasta RAVE5\DEMOS, porém a Borland se esqueceu de um arquivo importante, o arquivo de projeto do demo (arquivo .DPR), dificultando assim sua compilação pelos usuários com pouco conhecimento do Delphi.

Para compilá-los, crie um arquivo, DEMO.DPR, por exemplo e copie esse código:

program Demo;uses Forms, DM in 'DM.pas' {DataModule2: TDataModule}, Main in 'Main.pas' {Form1};{$R *.res}begin Application.Initialize; Application.CreateForm(TDataModule2, DataModule2); Application.CreateForm(TForm1, Form1); Application.Run; end. Outra alternativa é:

. Crie um projeto novo;

. Remova o form colocado automaticamente pelo Delphi;

. Adicione o datamodule (arquivo DM.PAS) da pasta RAVE5\DEMOS ao projeto;

. Adicione o arquivo MAIN.PAS ao projeto.

. Salve o projeto, compile-o.

Conhecendo o RAVE

Para quem não sabe, RAVE significa "Report Authoring Visual Environment".

Esta série de artigos estará apresentando apenas a parte de criação de relatórios usando o RAVE Codificado, ou seja, os relatórios serão ESCRITOS e não DESENHADOS.

Talvez num futuro eu fale do RAVE IDE.

O RAVE foi projetado a partir de 4 componentes básicos:

TReportPrinter: Controla a impressora e seus recursos mais "baixos".TReportFiler: Age como um cache entre a aplicação e a impressora.TFilePrinter: Controla a interação entre o TReportFile e a impressora.TFilePreview: Controla a visualização do relatório gerado pelo TReportFiler.

Para simplificar a codificação, todos os 4 objetos foram "fundidos" em um único, chamado TReportSystem. Este objeto é o "Mapa da Mina". Ele é a "engine básica" de relatórios do RAVE. Com ele no seu projeto, nada mais será necessário para a criação de relatórios runtime. Um único componente será responsável por todos os relatórios do seu projeto.

Os componentes ReportPrinter, ReportFiler, FilePrinter e FilePreview não existem no Delphi 7.0. Sumiram - assim como mais uma meia dúzia de objetos que existiam no RAVE 4.09 - a Nevrona alega não serem mais necessários, pois seus recursos funcionais foram incorporados pela IDE do RAVE. Restou apenas o ReportSystem, que, conforme foi dito acima, incorpora todo os demais.

A classe TReportSystem mudou de nome (aii meus projetos antigos!). Agora se chama RvSystem. Pelo menos as características desse objeto não foram radicamente alteradas.

Page 4: Criando relatórios em Delphi 7 Parte II

Os demais componentes da paleta RAVE do Delphi 7.0 são estritamente voltados para a construção de relatórios via RAVE IDE e para a exportação de relatórios para os formatos HTML, PDF, RTF e Texto (recurso nativo do RAVE).

No próximo artigo estaremos conhecendo e praticando o RvSystem. Realço que esse componente é tudo o que precisaremos para criar qualquer tipo de relatório utilizando o RAVE 5.0.

Adenilton Rodrigues tem formação superior em Análise de Sistemas. É Consultor em Tecnologias de Desenvolvimento Internet e atualmente responde pelo Departamento de Tecnologia da SOL - Serviços Online (http://www.solnet.com.br/), onde implanta soluções em Delphi, Java e .NET.

COMENTÁRIOSAnselmo Antonio Meur - 15/10/2002 - 13:14:52

Olá Adenilton

Vc. esta de Parabens pelo artigo.Estou migrando do Quickreport para o Rave mais não consigo nenhum material ou exemplo.

Parabens....

Se eu prescisar de ajuda vc esta disposto a me ajudar?

Atenciosamente

[email protected]@bracodonorte.sc.gov.br

................................................ Adenilton Rodrigues - 15/10/2002 - 18:44:41

Seja bem vindo ao RAVE. Se suas dúvidas estiverem ao meu alcance, estou é disposição.

................................................ Sergio Falco Daniel - 16/10/2002 - 17:50:56

Adenilton ja vai fazer um +- 2 anos que eu larguei do VB por causa de Relatorios onde ele fica acregado ao CRISTAL REPORT e quando vc instala o programa ele leva aquele mundo de Dlls no Delphi que agora eu estou a 2 anos eu nao tive este problemas pq consegui dominar o QReport para mim foi uma maravilha nao tenho Dlls malucas mais agora eu estou querendo micrar do Delphi 6 para o 7 eu fiquei meio assim com medo deste tal Rave e por isso sai a procurura de informacaos e vc realmente nesta pagina a qual vc explanou alguma coisa sobre.Para mim isso foi muito bom pq eu sou professor de informatica e do aula de programacao em Delphi no Basico.

Nao querendo ser indelicado eu gostaria que no futuro vc abordace O SQL SERVER como criar as estacoes se possivel pq ate agora eu nao encontrei nada neste sentido eu estou apanhando muito para fazer a estacoes eu gostaria que vc fala-se sobre este assunto

Page 5: Criando relatórios em Delphi 7 Parte II

No mais continue sempre assim nos auxilando nas nossas duvidas.

Obrigado

Sergio Falco Daniel [email protected]

................................................ Adenilton Rodrigues - 16/10/2002 - 19:54:48

S?rgio, o RAVE é 100% código nativo Delphi, dessa forma não haverá distribuição de DLLs. Se você já usava o QuickReport, poderá usar o RAVE IDE. Será apenas uma questéo de tempo e paciência.Quanto ao SQL Server, não sei qual a técnica de conectividade que você esté usando, mas recomendo o uso do ADO, é o mais indicado para bancos de dados Microsoft.

................................................ Anselmo A. Meurer - 17/10/2002 - 10:34:25

Olá Adenilton

O rave tem conecxão nativa com o interbase? ou ele so se conecta atravez de alias, como eu faão a conecxão sem usar um alias?

Atenciosamente Anselmo

................................................ Adenilton Rodrigues - 17/10/2002 - 21:58:07

Oi Anselmo. O RAVE possui conexão a qualquer modelo de banco de dados que implemente a classe TDataset do Delphi, ou seja, se você conseguir usar os componentes dataware (TDatasource, TDBGrid, TDB...) no seu banco de dados preferido via ADO, BDE, IB, Firebird, Halcyon, DAO, DBExpress, ODBC, etc, entéo poderá usar o RAVE sem problemas, tanto no modo Codificado quando Visual.

................................................ Carlos Javel do Vale - 19/10/2002 - 22:57:40

As centenas de relatórios já feitos em Qr e que funcionam perfeitamente, terão que ser migrados todos para o tal RAVE é Esse processo se d? de que forma é se for "manual" a Inprise que me desculpe mas jamais vi uma pisada na bola téo grande. é de se lembrar que existem milhares de empresas com produtos prontos e operacionais que terão que, "forçadamente" mudar se quiser ir para o Delphi 7.

................................................ Adenilton Rodrigues - 20/10/2002 - 13:33:19

Oi Carlos! Realmente este será um sério problema que acabar? "estourando" nas mãos dos desenvolvedores. Em nome da portabilidade a Borland começa a sacrificar solu??es antigas buscando o caminho da integração Delphi x Kylix ( MS fez o mesmo do VB para o VB.NET). A Nevrona esté disponibilizando um wizard de conversão de relatórios do QuickReport para o Rave. Não sei se funciona adequadamente, pois deixei de usar o QR h? mais de 5 anos. Realize alguns testes e d?-nos sua

Page 6: Criando relatórios em Delphi 7 Parte II

opinião: http://www.nevrona.com/cgi-bin/load.pl?/files/QRWizard.zip. O Quickreport ainda continua sendo comercializado pela QuSoft. Se quiser continuar com ele, sugiro comprar o pacote Professional, assim você terá o código fonte e não ficar? preso ?s mudanças de idéias da Borland!

................................................ Alessandro da Silva - 28/10/2002 - 17:44:28

Ola Adenilton, o que vou perguntar não esta relacionado ao novo componente de relatório do delphi 7 mas ja deu para ter certeza de que você tem condi??es de responder a minha dúvida com poucas palavras. Tenho uma aplicação criada por mim que funciona especificamente para Drogarias e Farmacias. Utilizo o paradox e gostaria de usar um bd SGDB ou cliente/servidor. Estou indeciso em qual usar, o Interbase, SQL Server, MySql e vários outros. Estou pesquisando bastante sobre tais bd mais gostaria de sua opinião. O que acha que seria melhor para usar?

................................................ Adenilton Rodrigues - 29/10/2002 - 09:41:51

Oi Alessandro. Essa é uma antiga e bastante longa. Sugiro entrar em contato particular via email para discutirmos alguns pontos. Um abraão.

................................................ William Douglas Knak - 05/11/2002 - 20:36:58

Fiz o download do conversor QR ==> Rave e ele possui um bug: só funciona com os números "americanos", onde o separador decimal é o "ponto" e o separador de milhares é a várgula. Para fazer uso do componente (além de seguir o manual do QRWizard) é necessírio mudar suas configura??es regionais para: separador decimal = "." e separador de milhares = ",".

................................................ Osvaldo Tedeschi Jr. - 07/11/2002 - 16:25:16

Adenilton, eu baixei o QRWIZARD mas na hora de instalar o PACKAGE ele da a msg de erro

Drive C: does not exist

A mesma msg aparece quando quero salvar algum relatorio. Vc tem idéia do que podemos fazer ?

Eu tenho o RAVE que veio no DELPHI 7 ................................................

Ricardo Marzochi - 10/01/2003 - 10:14:30

Olá Adenilton ;

Estou com problemas na conexão do relatorio com meu sistema, quando compilo o sistema, vem o erro de DATALINK, o que vc me recomenda a fazer.

Deste já agradeão a dica :Ricardo

................................................ Carlos Santos - 16/01/2003 - 09:51:25

Page 7: Criando relatórios em Delphi 7 Parte II

Olá Adenilton...

Gostaria de saber se tem como gerar um relatório dinamicamente no Rave Report, a partir de um arquivo txtéAbraãos.

................................................ Adenilton Rodrigues - 26/01/2003 - 21:40:40

Pediria ao pessoal que tem postado duvidas nesse espaão para enviarem suas questées via email para [email protected]. Dentro das possibilidades estarei respondendo é todos.

................................................ Anderson Carmanhani - 02/05/2003 - 15:38:29

Gostaria que se alguem pudesse me mandaralgum exemplo em um [email protected]

................................................ Bruno Alvares da Cos - 11/07/2003 - 15:32:47

Estou com o memso problema de DATALINK ................................................

Geraldo - Poderiam m - 08/08/2003 - 11:41:46

Estou trabalhando com o Rave em delphi 7 voltado para Web. Criei o relatório e testei sem problemas, mas ...Preciso colocar consisténcias como se faz no QuickReport no Detail (After Print, Before Print,...) para validar dados e outros. Visualizo os relatórios em Padrão Web ou .PDF.

Poderia me Ajudar é Testei o ReportBuider mas não gostei ...

Aguardo vosso Retorno e agradeão antecipadamente.

Atenciosamente,

Geraldo SN - [email protected] ................................................

Wiliam Bento - 26/09/2003 - 21:36:02

Muito legal este artigo. Gostaria que vc colocasse um arquivo que informasse com o fazer um relatorio da venda no balcao, para imprimir somente o que o cliente comprou.

................................................ Marcelo Luiz Lombi - 23/10/2003 - 14:33:33

Estou em dúvida entre Rave e RBuilder.

Falando sobre usuário final desenvolver seus práprios relatórios, quais as caracterêsticas dos dois produtos nesse sentido?

do que precisa pra disponibilizar isso? DLL, EXE, o usuário tem q pagar por cada estação, ou oq?

Page 8: Criando relatórios em Delphi 7 Parte II

Marcelo ................................................

Leandro - 18/05/2004 - 23:19:11

VC copiou e colou do clube do delphi este artigo. ................................................

L?zaro - 06/07/2004 - 17:15:18

No Report Builder consigo carregar uma ide em tempo de execução para montar meu relatório. Facilitando assim a criação do mesmo no meu cliente, sem compilar a minha aplicação. Como faão pra carregar uma ide no Rave para construir meu relatório?

................................................ Jarbas - 23/08/2004 - 21:11:26

estou iniciando com o Rave, estou com problemas em achar material pra iniciante! gostaria de saber onde achar [email protected]

................................................ Olá adenilton seus e - 25/10/2004 - 16:49:11

Tentei enviar umas duvidas mais retornaram...tem outro endereço.meu email é [email protected]

................................................ O Envio de Comentários está suspenso temporáriamente