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