Relatórios em Delphi ASP.NET - sugestões
25/06/2008
0
Sugestões?
Gandalf.nho
Posts
22/07/2008
Erivando
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
23/07/2008
Gandalf.nho
07/08/2008
Maikel
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
07/08/2008
Erivando
existe algum exemplo deste procedimento no Reve?
eu nunca vi, e acredito que seja preciso muito processo manual
20/05/2009
Tiagom
20/05/2009
Erivando
10/08/2009
Odacir_z
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
12/08/2009
Pauloroger
12/08/2009
Odacir_z
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.
12/08/2009
Odacir_z
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;
Clique aqui para fazer login e interagir na Comunidade :)