Bons dias campeões:
Gostava de vos colocar uma questão sobre como invocar um relatório usando o IREPORT.
Estou a fazer a invocação da seguinte forma.
Precisava era de uma coisa… Quando estou a chamar este relatório precisava que o resultado em vez de ser apresentado na mesma página fosse mostrado noutro.
Isto é possivel?
String query = request.getParameter(QUERY);
String outputFormat = this.getFormato();
if (outputFormat == null)
outputFormat = IGReport.HTML.getExtension();
String filename = request.getParameter(FILENAME);
if (filename == null)
filename = "report" + System.currentTimeMillis() + "."
+ outputFormat;
String disposition = request.getParameter(DISPOSITION);
disposition = "attachment"; //inline ou attachment
if (disposition == null)
disposition = Ficheiro.DISPOSITION_ATTACHMENT;
Principal user = request.getUserPrincipal();
Map<String, Object> params = new HashMap<String, Object>();
Enumeration en = request.getParameterNames();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
params.put(key, request.getParameter(key));
}
params.put("util", user.getName());
if (user == null) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
return;
}
if (this.getIdModelo() == 0) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
try {
IGReportGenerator rg = getReportGenerator();
IGReport report = null;
Connection con = null;
// Criar a ligação
try {
con = this.dataSource.getConnection();
if (query == null || query.length() == 0)
report = rg.generateReport("" + this.getIdModelo(), params,
con);
} finally {
if (con != null)
con.close();
}
// se
if (report != null) {
response.addDateHeader("expires", (new Date()).getTime());
response.addHeader("Content-Disposition", disposition
+ "; filename=" + filename);
response.resetBuffer();
OutputFormat format = report.getFormat(outputFormat);
response.setContentType(format.getContentType());
report.render(format, response.getOutputStream());
response.flushBuffer();
}
} catch (Throwable e) {
throw new QualaRuntimeException(e.getMessage(), e);
}
}