Vlw robson, mas acho q eu coloquei o problema de forma errada.
Vamos supor q eu tenha uma servlet q gere um relatorio…
[code]String mproject = request.getParameter("mproject");
String versionr = request.getParameter("versionr");
String versionb = request.getParameter("versionb");
String formato = request.getParameter("type");
Connection c = ConectaBD.getconection();
ServletContext context = getServletContext();
String rel=null;
try
{
JasperReport relatorioJasper = JasperCompileManager.compileReport(System.getenv("CATALINA_HOME")+"/webapps/REPORT_SR1/WEB-INF/reports/Report_SR1.jrxml");
Map parametros = new HashMap();
parametros.put("pageRoot",context.getRealPath("/"));
parametros.put("mproject",mproject);
parametros.put("versionr",versionr);
parametros.put("versionb",versionb);
if(formato.equals("pdf"))
{
//criando o pdf
byte[] bytes = null;
bytes = JasperRunManager.runReportToPdf(relatorioJasper,parametros,c);
if(bytes != null && bytes.length > 0)
{
//envia o relatorio em pdf para o browser
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(bytes,0,bytes.length);
outputStream.flush();
outputStream.close();
}
else
{
response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>PDF Fail</title>");
out.println("<body><br><br><p ><font rgb(0, 0, 0) size=+2>PDF Fail</font><br>");
out.println("</head>");
out.println("</html>");
}
}//if pdf
}//try
catch(Exception e)
{
e.printStackTrace();
throw new ServletException(e);
} [/code]
Dentro do relatorio eu tenho uma query que recebe a conexão e os valores e retorna os valores no DETAILS do relatorio.
<queryString><![CDATA[select p.proj, p.ds, max(a.ef), max(b.ef), to_char(max(a.ef),'J')-to_char(max(b.ef),'J'), round((to_char(max(a.ef), 'J') - to_char(max(b.ef),'J')) / decode((to_char(max(b.ef),'J') - to_char(min(b.es),'J')),0,1,(to_char(max(b.ef),'J') - to_char(min(b.es),'J'))) * 100, 0), decode(count(a.asd), 0, 'NO INICIADO', decode(count(a.afd)-count(a.act), 0, 'FINALIZADO', 'EN CURSO'))
from av_activity a, av_activity b, av_project p, av_mpmembers m
where a.proj = b.proj and a.act = b.act and a.ver = $P{versionr} and b.ver = $P{versionb} and a.proj = p.proj and b.proj = p.proj and m.proj = p.proj and m.mp = $P{mproject}
group by p.proj,p.ds]]></queryString>
No meu caso eu não tenho nenhuma query dentro do meu relatorio…portanto não uso conexão!!
Eu preciso passar a lista de valores que será populada em DETAILS diretamente!
No campo Detail do meu relatorio eu tenho:
<detail>
<band height="22" isSplitAllowed="true" >
<textField isStretchWithOverflow="true" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="74"
y="6"
width="124"
height="13"
key="textField-8"/>
<box></box>
<textElement rotation="None">
<font />
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$P{nomeF}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="198"
y="6"
width="124"
height="13"
key="textField-9"/>
<box></box>
<textElement rotation="None">
<font />
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$P{nomeCC}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="676"
y="6"
width="74"
height="13"
key="textField-10"/>
<box></box>
<textElement textAlignment="Right" rotation="None">
<font />
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$P{valorNF}]]></textFieldExpression>
</textField>
</band>
</detail>
Estes $P{nomeF}, $P{nomeCC} e $P{valorNF} que eu quero completar com os valores que estao em minha lista (diretamente)!
Vlw Robson