Olá,
Primeiramente estou postando o exemplo de um metodo usando URLRequest, que dispara uma url em direção a o servlet, passando como parametro duas data [ inicial , final].
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.managers.PopUpManager;
public function gerar():void{
var dtIni:String;
var dtFin:String;
dtIni = dataInicial.text;
dtFin = dataFinal.text;
var request:URLRequest = new URLRequest("http://localhost:8080/Projeto/ServletRelatorio?relatorio=osData& dataInicial="+dtIni+"dataFinal="+dtFin");
navigateToURL(request, "_blank");
PopUpManager.removePopUp(this);
}
}
]]>
</mx:Script>
Aqui esta um exemplo de servlet, que recebe os dados via parametro da url e repassa-os para gerar o relatório.
package servlet;
import java.io.IOException;
import java.sql.Connection;
import java.util.Date;
import java.util.HashMap;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
import util.ConexaoFactory;
/**
* Servlet implementation class for Servlet: geraRelatorio
*
*/
public class ServletRelatorio extends HttpServlet {
static final long serialVersionUID = 1L;
@SuppressWarnings("unused")
private static String caminhoJava;
//Para abrir a conexão com o banco é necessario emprementar uma classe no java só para fazer a requesição de abrir as sessões com banco.
private Connection conexao;
public ServletRelatorio() {
conexao = ConexaoFactory.getConnection();
}
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response) {
caminhoJava = this.getServletContext().getRealPath("WEB-INF/classes");
// o getParameter é responsavel por recuperar os parametros passado pela url.
String relatorio = request.getParameter("relatorio");
// compara se o relatorio é do gerar Os Por data.
if(relatorio.equals("osData")){
try {
relatorioOsPorData(request, response);
} catch (JRException e) {
e.printStackTrace();
}
}
}
/**
* metodo que gera relatorio de ordem de servico por data
* @param request
* @param response
* @throws JRException
*/
@SuppressWarnings("unchecked")
private void relatorioOsPorData(HttpServletRequest request, HttpServletResponse response) throws JRException {
HashMap parametro = new HashMap();
@SuppressWarnings("unused")
Date dataInicial, dataFinal = null;
String relatorio = caminhoJava + "\\relatorio/osData.jasper";
String dtInicial = request.getParameter("dataInicial");
String dtFinal = request.getParameter("dataFinal");
//É necessario emprementar uma classe para formatação das data para [Date]
dataInicial = util.Funcoes.FormataData(dtInicial);
dataFinal = util.Funcoes.FormataData(dtFinal);
parametro.put("dataInicial", dataInicial);
parametro.put("dataFinal", dataFinal);
byte[] pdf = JasperRunManager.runReportToPdf(relatorio, parametro, conexao);
this.exibirRelatorio(pdf, response);
}
/** metodo que exibe os relatorios* */
public void exibirRelatorio(byte[] relatorio, HttpServletResponse response) {
ServletOutputStream out = null;
response.setContentType("application/pdf");
try {
out = response.getOutputStream();
out.write(relatorio);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Mas para funcionar é preciso o arquivo do relatório gerado pela ireport, estar dentro do sistema, o arquivo.jasper.
Para saber mais como usar a ferramenta Ireport é cadastrar nesse site[ www.integrator.com.br ] lá vc encontrar apostilas RelatoriosJasperReports
E tambem é necessario adicinar a o projeto algumas Lib especificas do Ireport para gerar os relatórios.