@jairodione escreveu:
Olá Pessoal!
Desenvolvi uma aplicação para gerenciar conta corrente (conciliação bancária), mas não consigo acrescentar no relatório de extrato o nome da conta e seu saldo atual. Mas neste extrato já mostro as movimentações com o saldo anterior. Gostaria de colocar o nome da conta e seu saldo atual no cabeçalho do extrato.
O metodo que utilizo para visualizar o extrato está descrito abaixo:
public List exibeExtrato(String dataInicial,String dataFinal,String conCodigo) throws ParseException, SQLException{ Date dataInicio = null; Date dataFim = null; DateFormat formatoDataBanco = new SimpleDateFormat("yyyy-MM-dd"); DateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); if (dataInicial != null) { dataInicio = formatoData.parse(dataInicial); } if (dataFinal != null) { dataFim = formatoData.parse(dataFinal); } String sqlUltimoCredito = "select c.concodigo,c.credata as data,c.crehistorico as historico,c.crevalor as valor,c.consaldo as saldo, 1 as tipo " + "from creditos c where c.concodigo = ? and c.credata >= ? and c.credata <= ? " + "UNION ALL " + "select d.concodigo,d.debdata as data,d.debhistorico as historico,d.debvalor as valor,d.consaldo as saldo, 2 as tipo " + "from debitos d where d.concodigo = ? and d.debdata >= ? and d.debdata <= ? order by data"; PreparedStatement pscUltimoCredito = null; ResultSet rscUltimoCredito = null; List<ExtratoTransiente> extratoTransientes = new ArrayList<ExtratoTransiente>(); try { pscUltimoCredito = connection.prepareStatement(sqlUltimoCredito); pscUltimoCredito.setInt(1, Integer.parseInt(conCodigo)); pscUltimoCredito.setDate(2, new java.sql.Date(dataInicio.getTime())); pscUltimoCredito.setDate(3, new java.sql.Date(dataFim.getTime())); pscUltimoCredito.setInt(4, Integer.parseInt(conCodigo)); pscUltimoCredito.setDate(5, new java.sql.Date(dataInicio.getTime())); pscUltimoCredito.setDate(6, new java.sql.Date(dataFim.getTime())); rscUltimoCredito = pscUltimoCredito.executeQuery(); while (rscUltimoCredito.next()) { ExtratoTransiente extratoTransiente = new ExtratoTransiente(); extratoTransiente.setData(rscUltimoCredito.getDate("data")); extratoTransiente.setValor(rscUltimoCredito.getDouble("valor")); extratoTransiente.setHistorico(rscUltimoCredito.getString("historico")); extratoTransiente.setSaldo(rscUltimoCredito.getDouble("saldo")); extratoTransiente.setTipo(rscUltimoCredito.getInt("tipo")); extratoTransientes.add(extratoTransiente); } } catch (Exception e) { Logger.getLogger(ExtratoDAO.class.getName()).log(Level.SEVERE, null, e); } return extratoTransientes; }
Este trecho abaixo acrescentei no método para que o sistema pegue a conta e seu saldo para visualizar no extrato:
Contas contas = new Contas();
String sqlConta ="select * from contas where concodigo = "+conCodigo; PreparedStatement psConta = null; ResultSet rsConta = null; psConta = connection.prepareStatement(sqlConta); rsConta = psConta.executeQuery(); String conta = null; double saldo = 0; while(rsConta.next()){ contas.setConCodigo(rsConta.getInt("concodigo")); contas.setConDescricao(rsConta.getString("condescricao")); contas.setTipoCodigo(rsConta.getInt("tipocodigo")); contas.setConSaldo(rsConta.getDouble("consaldo")); //System.out.println("Extrato da Conta-> "+contas.getConDescricao()); conta = contas.getConDescricao(); saldo = contas.getConSaldo(); System.out.println("Extrato da Conta-> "+conta+": Saldo Altual-> "+saldo); }
Abaixo está o servlet:
private Connection connection; /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException { response.setContentType("text/html;charset=UTF-8"); //PrintWriter out = response.getWriter(); RequestDispatcher rd = null; String dataInicial = request.getParameter("dataI"); String dataFinal = request.getParameter("dataF"); String conCodigo = request.getParameter("concodigo"); ExtratoDAO extratoDAO = new ExtratoDAO(); List<ExtratoTransiente> extrato; try { extrato = extratoDAO.exibeExtrato(dataInicial, dataFinal, conCodigo); } catch (ParseException ex) { throw new ServletException(ex); } JasperReport report; byte[] byteStream = null; try { URL resourceUrl = request.getSession().getServletContext().getResource("/WEB-INF/report/extrato.jasper"); report = (JasperReport) JRLoader.loadObject(resourceUrl); byteStream = JasperRunManager.runReportToPdf(report, null, new JRBeanCollectionDataSource(extrato)); } catch (JRException ex) { Logger.getLogger(Extrato.class.getName()).log(Level.SEVERE, null, ex); } OutputStream outStream = response.getOutputStream(); response.setHeader("Content-Disposition", "inline, filename=extrato.pdf"); response.setContentType("application/pdf"); response.setContentLength(byteStream.length); outStream.write(byteStream, 0, byteStream.length); }
Baixo está o relatório no ireport:
GOSTARIA DE EXIBIR A INFORMAÇÃO NO CABEÇALHO DO EXTRATO
Mensagens: 1
Participantes: 1