eduardoprodam 23 de set. de 2008
Tem sim configura teu classPath do Ireport para receber essa VO, faz todo o tratamento via listas no Java e manda pro ireport ele vai somente apresentar os dados não ficando nehuma regra de negócio nele e facilitando manutenções futuras
diogoprosoft 23 de set. de 2008
valeu por me responder, sabe onde posso encontrar um exemplo sobre esse assunto não me iluminou muito as ideias.
Andre_Fonseca 23 de set. de 2008
diogoprosoft 23 de set. de 2008
Valeu Andre mais na verdade nao quero usar procedures no ireport quero deixar somente para execução o que preciso e pegar minha classe VO e colocar no ireport para pegar meus atributos
eduardoprodam 23 de set. de 2008
No Ireport na Aba Opções tem a opção de classpath adiciona a pasta onde fica tuas classes compiladas do teu aplicativo por exemplo C:\eclipse\woskspace\teste\build\classes
Depois vai em na Aba Editar - Query do Relatorio
vai abrir uma tela com várias abas uma dela é a Fonte de Dados Java Bean
nela vc coloca o endereço do teu pacote por exemplo br.com.teste.TesteVO e pressiona o botao Ler atributos ai voce tem todos os campos da field e é só montar teu relatorio como se os fields fossem uma query
diogoprosoft 23 de set. de 2008
Cara show de bola funcionou no ireport porem quando gerou o relatorio gerou em branco meu codigo esta assim:
ExtratoParcelaContratoService extratoParcelaClienteService = new ExtratoParcelaContratoService ( orafactory );
ExtratoParcelaContrato epc = new ExtratoParcelaContrato ();
String pathJasper = getServlet (). getServletContext (). getRealPath ( "/ireport/" ) + "/" ;
String pathImages = getServlet (). getServletContext (). getRealPath ( "/ireport/" ) + "/" ;
String path = getServlet (). getServletContext (). getRealPath ( "/" );
Map parametros = new HashMap ();
parametros . put ( "SUBREPORT_DIR" , pathJasper );
parametros . put ( "IMAGES_URI" , pathJasper );
try {
JasperPrint impressao = JasperFillManager . fillReport ( pathJasper + "/ExtratoParcelaCliente.jasper" , parametros , orafactory . getConnection ());
byte [] bytes = JasperExportManager . exportReportToPdf ( impressao );
byte [] arquivo = bytes ;
String nomeDoArquivo = "ExtratoParcelaCliente.pdf" ;
response . setContentType ( "application/x-msdownload" );
response . setHeader ( "Content-Disposition" , "attachment; filename=" . concat ( nomeDoArquivo ));
response . setContentLength ( arquivo . length );
ServletOutputStream sos = response . getOutputStream ();
sos . write ( arquivo , 0 , arquivo . length );
sos . flush ();
sos . close ();
} catch ( Exception e ) {
if ( e . getClass (). getSimpleName (). equals ( "ClientAbortException" )){
System . out . println ( "Documento cancelado" );
} else {
System . out . println ( "Outros" );
}
}
eduardoprodam 23 de set. de 2008
Tu queres somente exibir na tela ou quer salvar em algum banco ?
eduardoprodam 23 de set. de 2008
Quando nao aparece geralmente é porque vc nao passou a lista para o ireport
diogoprosoft 23 de set. de 2008
eu so preciso mostar na tela em estilo pdf para o usario imprimir ou salvar na tela e no meu ireport eu passei a lista ai mostrou todos os campos arrastei para minha pagina e ficou assim ${cdContrato}
mais nao mostrou nada oque posso fazer preciso entregar hoje
eduardoprodam 23 de set. de 2008
A idéia de código é ± essa :
caminho = teu caminho relativo onde estao os arquivos compilados
listaTesteVO = e a tua VO adicinado os campos para exibção
JasperPrint report = null;
String reportName = caminho + “teste.jasper”;
String jrprint = caminho + “teste.jrprint”;
String pdf = caminho + “teste.pdf”;
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaTesteVO);
// Gerar arquivo no Disco
JasperFillManager . fillReportToFile ( reportName , parametro , ds );
JasperExportManager . exportReportToPdfFile ( jrprint , pdf );
// Gerar arquivo para ser salvo no Banco .
report = JasperFillManager . fillReport ( reportName , parametro , ds );
byte x1 [] = JasperExportManager . exportReportToPdf ( report );
diogoprosoft 23 de set. de 2008
Mano meu código ficou assim:
String pathJasper = getServlet (). getServletContext (). getRealPath ( "/ireport/" ) + "/" ;
String pathImages = getServlet (). getServletContext (). getRealPath ( "/ireport/" ) + "/" ;
String path = getServlet (). getServletContext (). getRealPath ( "/" );
Map parametros = new HashMap ();
parametros . put ( "SUBREPORT_DIR" , pathJasper );
parametros . put ( "IMAGES_URI" , pathJasper );
try {
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource (( Collection ) extratoParcelaContratoVO );
//orafactory.getConnection()
JasperPrint impressao = JasperFillManager . fillReport ( pathJasper + "/ExtratoParcelaCliente.jasper" , parametros , ds );
byte [] bytes = JasperExportManager . exportReportToPdf ( impressao );
byte [] arquivo = bytes ;
String nomeDoArquivo = "ExtratoParcelaCliente.pdf" ;
response . setContentType ( "application/x-msdownload" );
response . setHeader ( "Content-Disposition" , "attachment; filename=" . concat ( nomeDoArquivo ));
response . setContentLength ( arquivo . length );
ServletOutputStream sos = response . getOutputStream ();
sos . write ( arquivo , 0 , arquivo . length );
sos . flush ();
sos . close ();
} catch ( Exception e ) {
if ( e . getClass (). getSimpleName (). equals ( "ClientAbortException" )){
System . out . println ( "Documento cancelado" );
} else {
System . out . println ( "Outros" );
}
}
Porém esta dando erro nessa linha
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource((Collection) extratoParcelaContratoVO);
vai direto para exception
if ( e . getClass (). getSimpleName (). equals ( "ClientAbortException" )){
System . out . println ( "Documento cancelado" );
} else {
System . out . println ( "Outros" );
}
como posso resolver isso?
Fernando_Generoso_da 23 de set. de 2008
coloca o código da tua classe extratoParcelaContratoVO para visualizarmos…
Fernando
diogoprosoft 23 de set. de 2008
meu VO ExtratoParcelaContrato esta assim:
public class ExtratoParcelaContrato {
private Integer cdContrato ;
private String nmContrato ;
private Date dtInicio ;
private Date dtFinal ;
private String nmPredio ;
private String nmImovel ;
private String nmComprador ;
private String telefone ;
private String nmContato ;
private String deObservacao ;
private Date dtContrato ;
private String nmIndicador ;
private Float vlTotalParcelas ;
private Float vlTotalCorrecoes ;
private Float vlTotalJuros ;
private Float vlTotal ;
private ResultSet curParcelas ;
get e set ...
Minha action esta assim:
public ActionForward listaPorData ( ActionMapping mapping ,
ActionForm form ,
HttpServletRequest request ,
HttpServletResponse response ) throws Exception {
OracleDAOFactory orafactory = ( OracleDAOFactory ) DAOFactory . getDAOFactory ( DAOFactory . ORACLE );
orafactory . createConnection ();
ExtratoParcelaContratoService epcService = new ExtratoParcelaContratoService ( orafactory );
RelatorioParcelasContratoForm relatorioParcelasContratoForm = ( RelatorioParcelasContratoForm ) form ;
ExtratoParcelaContrato extratoParcelaContrato = new ExtratoParcelaContrato ();
SimpleDateFormat df = new SimpleDateFormat ( "dd/MM/yyyy" );
Date dataFormatada = df . parse ( relatorioParcelasContratoForm . getDtInicio ());
java . sql . Date dataSQL = new java . sql . Date ( dataFormatada . getTime ());
extratoParcelaContrato . setDtInicio ( dataSQL );
SimpleDateFormat sdf = new SimpleDateFormat ( "dd/MM/yyyy" );
Date dataFormat = sdf . parse ( relatorioParcelasContratoForm . getDtFinal ());
java . sql . Date dtSQL = new java . sql . Date ( dataFormat . getTime ());
extratoParcelaContrato . setDtFinal ( dtSQL );
extratoParcelaContrato . setCdContrato ( relatorioParcelasContratoForm . getCdContrato ());
ExtratoParcelaContrato extratoParcelaContratoVO = epcService . selectExtratoParcelaCliente ( extratoParcelaContrato );
/////////////////////////////Relatorios/////////////////////////////
//ExtratoParcelaContratoService extratoParcelaClienteService = new ExtratoParcelaContratoService(orafactory);
//ExtratoParcelaContrato epc = new ExtratoParcelaContrato();
String pathJasper = getServlet (). getServletContext (). getRealPath ( "/ireport/" ) + "/" ;
String pathImages = getServlet (). getServletContext (). getRealPath ( "/ireport/" ) + "/" ;
String path = getServlet (). getServletContext (). getRealPath ( "/" );
Map parametros = new HashMap ();
parametros . put ( "SUBREPORT_DIR" , pathJasper );
parametros . put ( "IMAGES_URI" , pathJasper );
try {
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource (( Collection ) extratoParcelaContratoVO );
//orafactory.getConnection()
JasperPrint impressao = JasperFillManager . fillReport ( pathJasper + "/ExtratoParcelaCliente.jasper" , parametros , ds );
byte [] bytes = JasperExportManager . exportReportToPdf ( impressao );
byte [] arquivo = bytes ;
String nomeDoArquivo = "ExtratoParcelaCliente.pdf" ;
response . setContentType ( "application/x-msdownload" );
response . setHeader ( "Content-Disposition" , "attachment; filename=" . concat ( nomeDoArquivo ));
response . setContentLength ( arquivo . length );
ServletOutputStream sos = response . getOutputStream ();
sos . write ( arquivo , 0 , arquivo . length );
sos . flush ();
sos . close ();
} catch ( Exception e ) {
if ( e . getClass (). getSimpleName (). equals ( "ClientAbortException" )){
System . out . println ( "Documento cancelado" );
} else {
System . out . println ( "Outros" );
}
}
orafactory . closeConnection ();
return mapping . findForward ( SUCCESS );
}
}
diogoprosoft 23 de set. de 2008
Bom resolvido depois de muito quebrar a cabeça o codigo ficou assim:
public ActionForward listaPorData ( ActionMapping mapping ,
ActionForm form ,
HttpServletRequest request ,
HttpServletResponse response ) throws Exception {
OracleDAOFactory orafactory = ( OracleDAOFactory ) DAOFactory . getDAOFactory ( DAOFactory . ORACLE );
orafactory . createConnection ();
ExtratoParcelaContratoService epcService = new ExtratoParcelaContratoService ( orafactory );
RelatorioParcelasContratoForm relatorioParcelasContratoForm = ( RelatorioParcelasContratoForm ) form ;
ExtratoParcelaContrato extratoParcelaContrato = new ExtratoParcelaContrato ();
SimpleDateFormat df = new SimpleDateFormat ( "dd/MM/yyyy" );
Date dataFormatada = df . parse ( relatorioParcelasContratoForm . getDtInicio ());
java . sql . Date dataSQL = new java . sql . Date ( dataFormatada . getTime ());
extratoParcelaContrato . setDtInicio ( dataSQL );
SimpleDateFormat sdf = new SimpleDateFormat ( "dd/MM/yyyy" );
Date dataFormat = sdf . parse ( relatorioParcelasContratoForm . getDtFinal ());
java . sql . Date dtSQL = new java . sql . Date ( dataFormat . getTime ());
extratoParcelaContrato . setDtFinal ( dtSQL );
extratoParcelaContrato . setCdContrato ( relatorioParcelasContratoForm . getCdContrato ());
ExtratoParcelaContrato extratoParcelaContratoVO = epcService . selectExtratoParcelaCliente ( extratoParcelaContrato );
List < ExtratoParcelaContrato > listaExtrato = new ArrayList < ExtratoParcelaContrato > ();
listaExtrato . add ( extratoParcelaContratoVO );
/////////////////////////////Relatorios/////////////////////////////
//ExtratoParcelaContratoService extratoParcelaClienteService = new ExtratoParcelaContratoService(orafactory);
//ExtratoParcelaContrato epc = new ExtratoParcelaContrato();
String pathJasper = getServlet (). getServletContext (). getRealPath ( "/ireport/" ) + "/" ;
String pathImages = getServlet (). getServletContext (). getRealPath ( "/ireport/" ) + "/" ;
String path = getServlet (). getServletContext (). getRealPath ( "/" );
Map parametros = new HashMap ();
parametros . put ( "SUBREPORT_DIR" , pathJasper );
parametros . put ( "IMAGES_URI" , pathJasper );
try {
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource ( listaExtrato );
//orafactory.getConnection()
JasperPrint impressao = JasperFillManager . fillReport ( pathJasper + "/ExtratoParcelaCliente.jasper" , parametros , ds );
byte [] bytes = JasperExportManager . exportReportToPdf ( impressao );
byte [] arquivo = bytes ;
String nomeDoArquivo = "ExtratoParcelaCliente.pdf" ;
response . setContentType ( "application/x-msdownload" );
response . setHeader ( "Content-Disposition" , "attachment; filename=" . concat ( nomeDoArquivo ));
response . setContentLength ( arquivo . length );
ServletOutputStream sos = response . getOutputStream ();
sos . write ( arquivo , 0 , arquivo . length );
sos . flush ();
sos . close ();
} catch ( Exception e ) {
if ( e . getClass (). getSimpleName (). equals ( "ClientAbortException" )){
System . out . println ( "Documento cancelado" );
} else {
System . out . println ( "Outros" );
}
}
orafactory . closeConnection ();
return mapping . findForward ( SUCCESS );
}
Muito obrigado pela ajuda de todos vcs,
eduardoprodam 23 de set. de 2008