Valor extenso ireport
25/11/2010
0
boa tarde!
Estou com muita dificuldade em escrever em extenso um valor do campo no ireport,
eu tenho uma classe no java que faz isso, soh q nao sei passar essa classe por parametro para poder usa no ireport ou colocar essa classe no ireport.
No ireport criei o relatorio que servira para preenchimento de cheque, como vou fazer para que cada registro pegue o valor e escreva por extenso?
Aceito qualquer opniao, pois nao consegui de nenhuma maneira.
ja tentei procurar no forum mais o que encontrei nao consegui resolver.
muito Obrigado
Estou com muita dificuldade em escrever em extenso um valor do campo no ireport,
eu tenho uma classe no java que faz isso, soh q nao sei passar essa classe por parametro para poder usa no ireport ou colocar essa classe no ireport.
No ireport criei o relatorio que servira para preenchimento de cheque, como vou fazer para que cada registro pegue o valor e escreva por extenso?
Aceito qualquer opniao, pois nao consegui de nenhuma maneira.
ja tentei procurar no forum mais o que encontrei nao consegui resolver.
muito Obrigado
Iramar Junior
Curtir tópico
+ 0
Responder
Posts
29/11/2010
Davi Costa
Vc vai ter que passar p relatório o dataSource com o campo de valor extenso já formatado no java.
Abaixo segue um exemplo:
//imports omitidos
public class ReportUtil {
private static String ERRO_MENSAGEM_REPORT = "Um erro ocorreu quando o relatório estava sendo executado.";
//executa o relatório através de um JRBeanCollectionDataSource
public static void executarRelatorio(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel, JRBeanCollectionDataSource fonteDados) throws ReportException{
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
//pega o caminho do arquivo .jasper da aplicação
InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);
/*//envia a resposta com o MIME Type
if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){
response.setContentType("application/pdf");
}else if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PAGINA_HTML)){
response.setContentType("application/html");
}
*/
response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf");
response.setContentType("application/download");
response.setHeader("Pragma", "no-cache");
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
//envia parametros para o relatório
if (parametros == null){
parametros = new HashMap<String, Object>();
}
//envia para o navegador o PDF gerado
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, fonteDados);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException e) {
e.printStackTrace();
throw new ReportException(ERRO_MENSAGEM_REPORT);
} catch (IOException e) {
e.printStackTrace();
throw new ReportException(ERRO_MENSAGEM_REPORT);
}finally{
context.responseComplete();
}
}
//executa o relatorio através de uma Connection
public static void executarRelatorio(String caminhoRelatorio, Map<String, Object> parametros, TipoFormatoRelatorio tipoFormatoRelatorio, Connection conn) throws ReportException{
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
//pega o caminho do arquivo .jasper da aplicação
InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);
//envia a resposta com o MIME Type
if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){
response.setContentType("application/pdf");
}else if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PAGINA_HTML)){
response.setContentType("application/html");
}
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
//envia parametros para o relatorio
if (parametros == null){
parametros = new HashMap<String, Object>();
}
//envia para o navegador o PDF gerado
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, conn);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException e) {
e.printStackTrace();
throw new ReportException(ERRO_MENSAGEM_REPORT);
} catch (IOException e) {
e.printStackTrace();
throw new ReportException(ERRO_MENSAGEM_REPORT);
}finally{
context.responseComplete();
}
}
public static String retornaCaminhoLogoSend() {
HttpSession sessao = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
File logoFile = new File(sessao.getServletContext().getRealPath("/img/logo-send.gif"));
String caminho = logoFile.getAbsolutePath();
return caminho;
}
}
Exemplo de chamada passando o DataSource:
@SuppressWarnings("unchecked")
public void executarRelatorioUnidade() throws Exception {
List dados = new ArrayList();
Map record = null;
//varre a consulta e separa os objetos
for (Unidade unidade : findAll()) {
record = new HashMap();
//coloca em um Map cada um dos campos criados
//manualmente pelo relatorio
record.put("cd_unidade", unidade.getId());
record.put("ds_unidade", unidade.getDescricao());
record.put("nm_gestor", unidade.getNomeGestor());
record.put("ds_email_gestor", unidade.getEmailGestor());
//adiciona o List dados
dados.add(record);
}
//cria uma fonte de dados para coleções
JRBeanCollectionDataSource fonteDados =
new JRBeanCollectionDataSource(dados);
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("PARAMETRO_TITULO_RELATORIO", "RELATÓRIO DE UNIDADES");
parametros.put("CAMINHO_LOGO", ReportUtil.retornaCaminhoLogoSend());
parametros.put("CAMINHO_LOGO2", ReportUtil.retornaCaminhoLogoMinc());
ReportUtil.executarRelatorio("/relatorios/emitirUnidade/emitirUnidadesReport.jasper", parametros, "Unidades", fonteDados);
}
Esses campos mais em destaque de amarelo são os fields do seu relatório, que precisam ter no seu relatório, vc pode até continuar c o o SQL no seu report, mas agora já vai passar tudo mastigado para ele e formatado.
Neste exemplo estou usando JSF, caso não use essa tecnologia vai ter que adaptar um pouco. Passando o response do seu action também como parâmetro para esse método que roda o relatório.
Espero ter ajudado.
Att Davi
Abaixo segue um exemplo:
//imports omitidos
public class ReportUtil {
private static String ERRO_MENSAGEM_REPORT = "Um erro ocorreu quando o relatório estava sendo executado.";
//executa o relatório através de um JRBeanCollectionDataSource
public static void executarRelatorio(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel, JRBeanCollectionDataSource fonteDados) throws ReportException{
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
//pega o caminho do arquivo .jasper da aplicação
InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);
/*//envia a resposta com o MIME Type
if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){
response.setContentType("application/pdf");
}else if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PAGINA_HTML)){
response.setContentType("application/html");
}
*/
response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf");
response.setContentType("application/download");
response.setHeader("Pragma", "no-cache");
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
//envia parametros para o relatório
if (parametros == null){
parametros = new HashMap<String, Object>();
}
//envia para o navegador o PDF gerado
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, fonteDados);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException e) {
e.printStackTrace();
throw new ReportException(ERRO_MENSAGEM_REPORT);
} catch (IOException e) {
e.printStackTrace();
throw new ReportException(ERRO_MENSAGEM_REPORT);
}finally{
context.responseComplete();
}
}
//executa o relatorio através de uma Connection
public static void executarRelatorio(String caminhoRelatorio, Map<String, Object> parametros, TipoFormatoRelatorio tipoFormatoRelatorio, Connection conn) throws ReportException{
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
//pega o caminho do arquivo .jasper da aplicação
InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);
//envia a resposta com o MIME Type
if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){
response.setContentType("application/pdf");
}else if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PAGINA_HTML)){
response.setContentType("application/html");
}
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
//envia parametros para o relatorio
if (parametros == null){
parametros = new HashMap<String, Object>();
}
//envia para o navegador o PDF gerado
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, conn);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException e) {
e.printStackTrace();
throw new ReportException(ERRO_MENSAGEM_REPORT);
} catch (IOException e) {
e.printStackTrace();
throw new ReportException(ERRO_MENSAGEM_REPORT);
}finally{
context.responseComplete();
}
}
public static String retornaCaminhoLogoSend() {
HttpSession sessao = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
File logoFile = new File(sessao.getServletContext().getRealPath("/img/logo-send.gif"));
String caminho = logoFile.getAbsolutePath();
return caminho;
}
}
Exemplo de chamada passando o DataSource:
@SuppressWarnings("unchecked")
public void executarRelatorioUnidade() throws Exception {
List dados = new ArrayList();
Map record = null;
//varre a consulta e separa os objetos
for (Unidade unidade : findAll()) {
record = new HashMap();
//coloca em um Map cada um dos campos criados
//manualmente pelo relatorio
record.put("cd_unidade", unidade.getId());
record.put("ds_unidade", unidade.getDescricao());
record.put("nm_gestor", unidade.getNomeGestor());
record.put("ds_email_gestor", unidade.getEmailGestor());
//adiciona o List dados
dados.add(record);
}
//cria uma fonte de dados para coleções
JRBeanCollectionDataSource fonteDados =
new JRBeanCollectionDataSource(dados);
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("PARAMETRO_TITULO_RELATORIO", "RELATÓRIO DE UNIDADES");
parametros.put("CAMINHO_LOGO", ReportUtil.retornaCaminhoLogoSend());
parametros.put("CAMINHO_LOGO2", ReportUtil.retornaCaminhoLogoMinc());
ReportUtil.executarRelatorio("/relatorios/emitirUnidade/emitirUnidadesReport.jasper", parametros, "Unidades", fonteDados);
}
Esses campos mais em destaque de amarelo são os fields do seu relatório, que precisam ter no seu relatório, vc pode até continuar c o o SQL no seu report, mas agora já vai passar tudo mastigado para ele e formatado.
Neste exemplo estou usando JSF, caso não use essa tecnologia vai ter que adaptar um pouco. Passando o response do seu action também como parâmetro para esse método que roda o relatório.
Espero ter ajudado.
Att Davi
Responder
29/11/2010
Davi Costa
Só complementando esse trecho de código da chamada :
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("PARAMETRO_TITULO_RELATORIO", "RELATÓRIO DE UNIDADES");
parametros.put("CAMINHO_LOGO", ReportUtil.retornaCaminhoLogoSend());
parametros.put("CAMINHO_LOGO2", ReportUtil.retornaCaminhoLogoMinc());
Vc pode abstrair são só parametros do relatório caso vc tenha.
OFF(Divulgando) https://www.devmedia.com.br/post-18574-Desmistificando-a-Certificacao-SCJP6-Parte-I.html
Espero ter ajudado
Att Davi
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("PARAMETRO_TITULO_RELATORIO", "RELATÓRIO DE UNIDADES");
parametros.put("CAMINHO_LOGO", ReportUtil.retornaCaminhoLogoSend());
parametros.put("CAMINHO_LOGO2", ReportUtil.retornaCaminhoLogoMinc());
Vc pode abstrair são só parametros do relatório caso vc tenha.
OFF(Divulgando) https://www.devmedia.com.br/post-18574-Desmistificando-a-Certificacao-SCJP6-Parte-I.html
Espero ter ajudado
Att Davi
Responder
Clique aqui para fazer login e interagir na Comunidade :)