Ola a todos !!!
Estou com problema para mandar, do Flex, uma String contendo a Query, para o Java. O java, por sua vez, esta mandando pro iReport passando o ResultSet, mas a query foi montada no Flex, pois lah q tenho as informacoes necessarias pra montar a query, E por isso que preciso q o Flex mande a String com a query pro java (sem precisar montar ela de novo no java - ate porque eu nao conseguiria).
A principio, estava passando a Query (do Flex pro Java) por parametro da url, mas percebi q o parametro limita a caractares e fez que "comesse" o fnal de uma query (essas funcoes sao dinamicas), por isso me obrigou a ter uma outra forma pra enviar a query do flex pro java.
Marcio passou esse topipco: http://www.guj.com.br/posts/list/209225.java que poderia servir pra mim tambem, mas nao consegui implementar no meu projeto (postei no final desse topico a minha duvida, mas sem respostas ate o momento).
Estou postando os programa pra ver se alguem teria alguma dica e fico MUITO AGRADECIDO desde ja.
1) FUNCAO QUE CHAMA O RELATORIO NO (FLEX P/ FLEX):var PopUp_ExecRot710:Rotina710 = new Rotina710();
PopUp_ExecRot710.SetarUrl( wQuery , "relatorio?nome=Contrato"+
"&banco=" +wBan+
"&hst=" +wHst+
"&dns=" +wDns+
"&porta=" +wPor+
"&usu=" +wUsu+
"&senha=" +wSen+
"&dtbase="+wDat);
//"&query="+wQuery
PopUpManager.addPopUp(PopUp_ExecRot710,this,true);
PopUpManager.centerPopUp(PopUp_ExecRot710);
<?xml version="1.0" encoding="utf-8"?>
<mx:Module layout="absolute" width="700" height="500"
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:ns1="Componentes.Controles.*"
xmlns:strz="Scripts.*" >
<mx:TitleWindow x="0" y="0" width="100%" height="100%" layout="absolute" title="Relatório." showCloseButton="true" close="Rotina710Sair()" >
<ns1:IFrame x="0" y="0" width="100%" height="100%" source="{url}" id="iframe" >
</ns1:IFrame>
</mx:TitleWindow>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.controls.Alert;
[Bindable] public var url:String;
public function SetarUrl(query:String,url:String):void {
this.url = url;
}
private function Rotina710Sair():void {
iframe.dispose();
PopUpManager.removePopUp(this);
}
]]>
</mx:Script>
</mx:Module>
package com.cashonhand;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperRunManager;
@SuppressWarnings("serial")
public class Relatorio extends HttpServlet {
private static String PathJava,PathFlex;
private String Banco="",Hst="",Dns="",Porta="",Usu="",Senha="",Dtbase="",Query="";
public Relatorio() {}
@SuppressWarnings("static-access")
public void service(HttpServletRequest request, HttpServletResponse response) {
if ( this.PathJava == null && this.PathFlex == null ) {
this.PathJava = this.getServletContext().getRealPath("WEB-INF/classes/");
this.PathFlex = this.getServletContext().getRealPath("/assets");
}
Banco = request.getParameter("banco").trim();
Hst = request.getParameter("hst").trim();
Dns = request.getParameter("dns").trim();
Porta = request.getParameter("porta").trim();
Usu = request.getParameter("usu").trim();
Senha = request.getParameter("senha").trim();
Dtbase = request.getParameter("dtbase").trim();
//Query = request.getParameter("query").trim(); //request.getQueryString();
String wNome = request.getParameter("nome");
if ( !wNome.isEmpty() ) {
try {
GeraRelatorio(wNome,request,response);
}
catch(JRException erro) {
erro.printStackTrace();
}
}
}
@SuppressWarnings("static-access")
public void GeraRelatorio(String relat,HttpServletRequest request, HttpServletResponse response) throws JRException {
String relatorio = PathJava+"/com/Relatorios/"+relat+".jasper";
HashMap parametros = new HashMap();
//JOptionPane.showMessageDialog(null,"2) "+Query);
jConectaBanco oBanco = new jConectaBanco();
oBanco.jConectaAoBanco(Banco,Hst,Dns,Porta,Usu,Senha,Dtbase,false);
oBanco.jexecQuery(Banco,Hst,Dns,Porta,Usu,Senha,Dtbase,Query);
JRResultSetDataSource jrRS = new JRResultSetDataSource( oBanco.oResultset );
byte [] pdf_relat = JasperRunManager.runReportToPdf(relatorio,parametros,jrRS);
MostrarRelatorio(pdf_relat,response);
oBanco = null;
}
public void MostrarRelatorio(byte [] relatorio , HttpServletResponse response) {
try {
ServletOutputStream out = response.getOutputStream();
response.setContentType("application/pdf");
out.write(relatorio);
}
catch(IOException erro) {
erro.printStackTrace();
}
}
}
toda ajuda eh bem vinda..
Obrigado
Gilberto