Array
(
)

Relatórios em Delphi ASP.NET - sugestões

Gandalf.nho
   - 25 jun 2008

Estou desenvolvendo minha primeira aplicação em ASP.NET usando o BDS 2006 e Firebird 2 e gostaria de sugestões de qual ferramenta de relatórios poderia usar (free) e onde poderia encontrar exemplos de uso. Na documentação do Delphi não fala nada sobre o Crystal, tentei usar o componente da biblioteca ComponentOne que acompanha o Delphi mas ele exige um driver OLEDB para conectar ao banco e achei apenas um free (na versão gratuita do pacote IBProvider, mas não está funcionando muito bem).
Sugestões?


Erivando
   - 22 jul 2008

Colega, você já consegui uma solução para seus relatórios dot net em Delphi?

Estou coma mesma dificuladade, poderia mim passar o que está usando?

Grato!

Poor favor: envie e-mail para: erivandosena@bol.com.br

Erivando
Programador Asp.NET


Gandalf.nho
   - 23 jul 2008

A solução que encontrei no momento usa o driver ADO. NET normal para o Firebird. Eu fiz um pequeno utilitário que gera um arquivo XSD à partir de um SELECT, esse XSD é usado para criar o relatório usando o designer do C1Report (sem o XSD, o relatório precisaria ser criado todo em tempo de execução) e via código, eu crio o objeto de conexão com o banco de dados e o atribuo à origem de dados do relatório.


Maikel
   - 07 ago 2008

Outra sugestào seria a utilização do Rave reports...

Esse é um preocesso pouco mais complexo, mas tem tbm suas vantagens.
Utilizando o Rave Reports será necessário a criação de uma dll, a responsável por criar o relatório e gerar um PDF do mesmo salvando-o em algum diretório do computador.
Essa dll deverá criar os componentes em Runtime, chamando o arquivo do RaveReports onde haverá uma conexao configurada com a base de dados, consultas SQL, parametros entre outros, podendo criar livremente seu layout, master detail, entre outras regras.
Possuindo a ddl e o relatório no Rave criado, no asp.net executa-se apenas uma chamada externa para a dll, que irá retornar o nome do arquivo gerado. Este arquivo trata-se do PDF, onde dará-se um redirect exibindo o relatório em PDF na página...
A vantagem que me referi, é no momento da impressão, o relatório no Rave poderá ser configurado para páginas A4, onde depois o usuário não passará por problemas de ajustes de impressão relacionados ao navegador.

Espero ter contribuído

Att


Erivando
   - 07 ago 2008

Colega,

existe algum exemplo deste procedimento no Reve?

eu nunca vi, e acredito que seja preciso muito processo manual


Tiagom
   - 20 mai 2009

Pessoal, desculpem-me por ressuscitar este tópico, mas após muita pesquisa ( frustrada) não consegui achar uma ferramenta que conseguisse gerar um relatório simples com o Delphi.NET 2007 ASP.NET e exportar para o formato .PDF. Gostaria de saber se alguém utiliza alguma ferramenta para criar os relatórios. Com o Delphi Win32 é uma tarefa simples. Mas quando você passa a utilizar o Delphi ASP.NET é uma baita dor de cabeça. Se alguém souber por favor me responde. Agradeço antecipadamente.


Erivando
   - 20 mai 2009

Não sei se irei te ajudar, mais foi devido a esta grande lacuna pra não dizer ´falha grave´ da borland/codegear para com o Delphi que migrei todos meus projetos em Delphi 2006 codigo pascal, para c# Visual Studio 2008, e utilizo tanto para win32 ou .Net os relatórios cristal reports e ReportViewer em .NET que é uma maravilha na exportação para pdf ou excel. Depois de anos dei adeus ao delphi, pois para mim é uma opção de ferramenta de desenvolvimento já morta!


Odacir_z
   - 10 ago 2009

ola pessoal eu resolvi meu problema com o rave report gerando um pdf...
segue dois links explicando todo processo...
http://zvxtxq.blu.livefilestore.com/y1piKDAqxrq4ri4_9OLEOL21QuPWqkWhRNc0A7FHdSxz58rp3F8qtHxKgXBXpA4hp-exHqYOsmQUpJeIhNyMgOmCyJXir0YJLIY/Inicialmente¬20temos¬20que¬20criar¬20uma¬20aplica¬C3¬A7¬C3¬A3o¬20ASP.rar?download

http://zvxtxq.blu.livefilestore.com/y1pXj-mV_CfyiYYZkkvMUKEedBuvlRNju6m2fQUfYM_i-TN01JxGjrBcYo5m0pYHDkJbZIsk6m8TIXebVqMrVX7z6itt5-IVsSa/Rave¬20com¬20ASP.NET.rar?download


Signori
   - 11 ago 2009

odacir_z, esses links estão quebrados...


Pauloroger
   - 12 ago 2009

Tem um artigo do Maikel Sheid, show de bola que gera um arquivo PDF a partir do RAVE, a partir de uma DLL, para RAD Studio 2007


Odacir_z
   - 12 ago 2009

Inicialmente temos que criar uma aplicação ASP .NET. Vamos acessar o menu na IDE do RAD Studio 2007 File  New &61664; ASP.NET Web Application – Delphi for .NET. Isso fará com que a IDE crie um novo projeto.

Na tela de configuração que se segue vamos nomear a aplicação com AspNetWebAppRave. Agora vamos adicionar um VCL Data Module. Vamos acessar o menu File New Other e em seguida no Object Repository, a opção Delphi for .NET Project New Files VCL Data Module.


Vamos renomear a unit para uDMRave.pas e a propriedade name do TDataModule para
DMRave. Em seguida adicionar os seguintes componentes ao TDataModule:

TRvProject,
TRvDataSetConnection,
TListConnector,
TRvNDRWriter e
TRvRenderPDF.

Vamos renomeá-los respectivamente como: RvProjWeb, RvDtsCusdtomer, LstConCustomer, RvNDRWeb e RvRndrPDF.

Para podermos montar o design do relatório precisaremos conectar o Banco de Dados através, por exemplo, de um TSimpleDataSet. Vamos configurá-lo de maneira a acessar a Tabela Customer localizada no Banco de Dados Employee.gdb. Click com o botão direito no TSimpleDataSet e em seguida no menu Edit connection para podermos configurar o acesso ao Bando de Dados Employee.gdb.

Em seguida clicar no botão com o símbolo de + para adicionar um Alias para o Banco de Dados Employee.gdb. Em Driver Name informar Interbase e em Connection Name EMPLOYEE.

Em seguida precisamos informar o caminho físico do Banco de Dados. Para tanto, do lado esquerdo vamos selecionar o Alias que acabamos de criar, EMPLOYEE. Do lado direito vamos informar no campo Database o seguinte caminho:

localhost:C:\Arquivos de Programas\Arquivos
Comuns\CodeGear Shared\Data\EMPLOYEE.GDB. finalmente clicar em Ok.
Em seguida vamos expandir a propriedade Connection e na propriedade LoginPrompt vamos informar False. Agora no Object Inspector vamos expandir a propriedade DataSet e na propriedade CommandText vamos colocar: SELECT * FROM CUSTOMER.

Agora vamos informar que a propriedade DataSet do TRvDataSetConnection aponta para o TSimpleDataSet. Isso é necessário para que consigamos construir o layout do nosso relatório. No Project Manager vamos clicar com o botão direito em cima do nome do projeto e em seguida o menu Add New Folder para adicionar uma nova pasta ao projeto e respectivamente ao disco. Essa pasta terá o nome Report. Agora vamos criar o layout do Relatório. Para isso vamos acessar o menu Tools Rave Reports Designer.

Para nos certificarmos que um novo projeto vazio foi criado, vamos acessar o menu File New no Rave Reports Designer. Em seguida File Save e vamos salvar o arquivo como AspNet.rav dentro do diretório Report que acabamos de criar. Precisamos agora criar um DataView. É através do DataView que o RaveReports irá buscar os dados para gerar o a saída do relatório. Vamos acessar o menu File New Data Object e em seguida Direct Data View. Em seguida nosso RvDataSetConnection irá aparecer e vamos selecioná-lo. Em seguida finalizamos clicando em Finish.

A direita no Project Tree, expandindo Data View Dictionary, vemos que um item foi adicionado como DataView1. Vamos renomeá-lo para dtvCustomer. Agora vamos utilizar o Wizard do Rave Reports para criar nosso layout. Vamos acessar o menu Tools Report Wizards Simple Table. Na tela que se segue vamos selecionar o dtvCustomer e em seguida clicar em Next.

Na próximo tela vamos marcar os campos que gostaríamos que aparecessem no relatório. Vamos marcar : CUST_NO, CUSTOMER e em seguida clicar em Next novamente. Na próxima tela aparece a opção de mudar a ordem dos campos no relatório. Não vamos alterar
nada e em seguida clicar em Next. Na tela que se segue podemos informar o título do relatório e as margens. O título será: Relatório ASP .NET com Rave Reports e em seguida clicar em Next.

Por fim nos é disponibilizado para alterar a font dos itens do relatório. Isso fica a cargo de cada um. E finalmente clicamos no botão Generate. Nosso relatório está pronto. Podemos até testar em Designer clicando no botão F9. No Project Tree notem que foi adicionado um outro relatório ficando Repor1 e Report2 na lista de relatórios para o nosso projeto. O que faremos será excluir o Report1 e renomear o Report2 para rptCustomer.

Agora vamos salvar nosso projeto e fechar o Rave Reports Designer. De volta ao TDataModule vamos configurar os componentes. Em primeiro lugar, não precisaremos
mais do TSimpleDataSet, logo podemos excluí-lo. Em seguida no TRvProject vamos configurar a propriedade ProjectFile informando o caminho do arquivo AspNet.rav. em seguida no TRvDataSetConnection sua propriedade DataSet será setada para o TListConnector.

No SourceCode do TDataModule vamos adicionar um método no escopo public chamado ExecuteReport que possui como parâmetros sFileName, sReportname do tipo String. No método ExecuteReport temos uma variável MStream do tipo TMemoryStream para a qual será gerado o relatório e em seguida renderizado em disco. Setamos a propriedade Engine para RvNDRWeb, no RvNDRWeb setamos sua propriedade Stream para MStream e o StreamMode para smUser. Em seguida invocamos o método ExecuteReport do RvProjWeb, e através do RvRndrPDF, transformamos a stream em memória para um arquivo em disco no formato PDF.

Fianlizada a parte do TDataModule, vamos agora implementar a nossa página principal. Na página Default vamos adicionar um SQLDataSource e renomeá-lo para sqldtsCustomer. Em seguida vamos configurar a Fonte de Dados através do Smart Tag.

Em seguida vamos clicar em Nova Conexão. Isso dará com que outra tela apareça no formato Modal para que possamos informar o Data Source. Nesse caso vamos selecionar do lado esquerdo dbExpress e em seguida clicar em Continue.

Novamente outra tela Modal irá aparecer. Essa serve para configurarmos qual Drive iremos utilizar, o qual, no nosso caso será o Interbase, o Database Name, o User Name e o Password que serão respectivamente: localhost:C:\Program Files\Common Files\CodeGear Shared\Data\EMPLOYEE.gdb, SYSDBA e masterkey. Em seguida podemos clicar em Test Connection para verificar se tudo está configurado corretamente.

Em seguida clicamos em Ok e em seguida em Próximo. Caso deseje salvar a string de conexão para poder utilizar posteriormente em outros projetos, deixa marcada a opção de salvar a conexão e informe um nome amigável. No meu caso informei EMPLOYEE_Source.

Em seguida clicamos em próximo e um outra tela aparecerá para informarmos o nome da tabela e seus respectivos campos. Podemos também informar um SQL e é o que faremos. Vamos selecionar a primeira opção no RadioButton e em seguida clicar em próximo.

Na tela seguinte vamos informar a instrução SQL: SELECT * FROM CUSTOMER e em seguida clicar em Próximo.




Podemos nesse instante clicar em Consulta Teste para verificar se a instrução SQL não possui nenhum problema ou simplesmente clicar em Concluir.

Pronto. Agora o nosso SQLDataSource já está configurado. Vamos adicionar um botão e na sua propriedade Text informar Visualizar Relatório. No evento Click do botão vamos implementar o código para gerar e visualizar o relatório, mas antes disso precisamos informar na seção uses da unit Default.pas a unit uDMRave.pas para podermos utilizar os recursos implementados lá.

No evento Click do botão temos duas variáveis dtv do tipo DataView e sPath do tipo string. O DataModule DMRave é instanciado através de seu construtor e em seguida a dtv é atribuído o retorno do método Select do SqlDataSource. A sPath é atribuído o caminho o qual o arquivo PDF será gerado e em seguida o método ExecuteReport do TDataModule é invocado. Finalmente a página é redirecionado para o caminho que o arquivo PDF foi gerado.


Odacir_z
   - 12 ago 2009

essa procedure vai abrir um popup com o pdf...

procedure Tordem.GeraPDFImp;
var
sPath : string;
dtv: DataView;
begin
try
DMRave := TDMRave.Create(nil);

with DMRave do
begin
dtv := (SqlDSORDEM.Select(system.Web.UI.DataSourceSelectArguments.Empty) as DataView);
LstConCustomer.DataObject := dtv;
sPath := Server.MapPath(Request.ApplicationPath) + ´\Report\Ordem Nº - ´+CODIGO.Text+´.pdf´;
SetParam(´CODORD´, CODIGO.Text);
ExecuteRptOrdem(´rptORDEM´, sPath);
end;
Session[´CODORD´] := CODIGO.Text;
ScriptManager.RegisterClientScriptBlock(Page, GetType(), ´´, ´window.open(´ordempdf.aspx´, ´´, ´´);´, true);
finally
DMRave.Free;
DMRave := nil;
end;
end;

esta procedura vai no VCL Data Module...

procedure TDMRave.ExecuteRptOrdem(sReportName, sFileName: string);
var MStream : TMemoryStream;
begin
try
MStream := TMemoryStream.Create;

RvProjWeb.Engine := RvNDRWeb;
RvNDRWeb.Stream := MStream;
RvNDRWeb.StreamMode := smUser;
//LstConCustomer.Open;
RvProjWeb.Open;
RvProjWeb.ExecuteReport(sReportName);
RvRndrPDF.PrintRender(RvNDRWeb.Stream, sFileName);
finally
//LstConCustomer.Close;
RvProjWeb.Close;
MStream.Free;
end;
end;