Galera, estou precisando de uma ajuda, estou desenvolvendo uma tela que tem uma ComboBOx com informações do banco concatenadas(Data, Código, Titulo etc.) Até então eu consegui resolver, mais eu preciso gerar um PDF com as informações escolhida na comboBox e não consigo ter ideia de como fazer isso.
Minhas dúvidas são:
O que preciso fazer para o botão funcionar, isso é, o botão está na tela mais não faz nada.
Como criar o método para gerar o PDF, e como chamo ele etc.
Criei o relatório e possui muitas tabelas, e quando crio um tabela ele pede para inserir a query de consulta, sendo que não consigo configurar para receber um parâmetro no “where”.
Algumas coisas eu cheguei a ver no GUJ e fui preenchendo mais ainda não consigo ligar os pontos.
RESUMO:
EU QUERO QUE O BOTÂO FUNCIONE E CRIE O PDF, POIS NÂO SEI COMO FAZER ISSO.
PAGO UMA GORJETA PARA QUEM ME AJUDAR, EU SEI QUE O GUJ Não é para ISSO MAIS O DESESPERO É GRANDE.
Vou colocar o código:
[size=18][color=red]
JSP
[/color]
[/size]
<%@page import="java.awt.Button"%>
<%@page import="br.com.sein.controle.GeraRelatorioPdf"%>
<%@page import="br.com.sein.controle.GeraRelatorio"%>
<%@ page import=" br.com.sein.dao.AnalysisDAO, br.com.sein.bean.PrintAnalysisBean, java.text.SimpleDateFormat, java.sql.Date " %>
<%@ page import="java.util.*, java.sql.SQLException" %>
<%@ page import="java.sql.*" %>
<%@ page import="org.postgresql.Driver" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>CETEM - Centro Tecnologico Mineral</title>
</head>
<body>
<%
String url = "jdbc:postgresql://172.16.0.160:5432/sca"; //Informe a porta de conexão. Assim você garante todas as informações de conexão.
String username = "postgres";
String password = "";
Class.forName("org.postgresql.Driver");//Não precisa chamar o método newInstance, basta assim como coloquei.
Connection conn = DriverManager.getConnection( url, username, password );
%>
<br />
<table align="center">
<tr>
<td align="center"><a style="color:#FFD700"> Sistema para Controle de Análises Minerais</a></td>
</tr>
<tr align="center">
<td><a style="color:black">Obs: No caso de TRAVAMENTO durante o processamento pressione a tecla 'SHIFT' <br />
simultaneamente com o botão 'ATUALIZAR'</a>
</td>
</tr>
</table>
<br />
<table align="center" style="background-color:#27408B;">
<tr>
<td align="center"><h4><a style="color:#FFD700">Boletins / Impressão de Boletins de Análise</a></h4>
<input type="submit" value="Gerar Relatório" name="bottonSca" style="font-size: 05 pt; font-family: arial" onClick="this.form.action='Teste.jsp'"/>
</td>
</tr>
<tr>
<td><h5><a style="color:white;"><b>Boletins:</b> (Data de Geração, Código do Boletim, Código da SA, Sigla do Projeto e Nome do Cliente) *</a></h5>
<select name="ImprimirAnalise" onclick="">
<%
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy HH:mm");
//formato.format(new Date(System.currentTimeMillis()));
AnalysisDAO dao = new AnalysisDAO();
List<PrintAnalysisBean> bean = dao.getComboBox();
for(PrintAnalysisBean analysisBean: bean){
%>
<option value="boletim" id="valor" >
<%
out.print(formato.format(new Date(analysisBean.getDateGeneration().getTime())) + " : " +
analysisBean.getCodeBulletin() + " : " +
analysisBean.getCodeSa() + " : " +
analysisBean.getAcronym() + " : " +
analysisBean.getNameClient());
%>
</option>
<%
}
%>
</select>
</td>
</tr>
</table>
</body>
</html>
[size=18][color=red]
GeraRelatorioPdf
[/color]
[/size]
Achei estranho ter que colocar a Query se eu já coloquei no iReport, eu sei to maluco e não sei fazer.
package br.com.sein.relatorio;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JButton;
import org.apache.jasper.tagplugins.jstl.core.Out;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.util.JRLoader;
import br.com.sein.jdbc.ConnectionFactory;
public class GeraRelatorioPdf extends HttpServlet {
private JButton button = null;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
String cod = request.getParameter("valor");
Connection conn = null;
PreparedStatement stm = null;
ResultSet rs = null;
JRResultSetDataSource jrRs = null;
try{
conn = new ConnectionFactory().getConnection();
//stm = (PreparedStatement) conn.createStatement();
String sql = "select sa.sa_con, sa.sa_bol, sa.sa_dba, cli.cli_nome, con.con_sigla, con.con_titulo, sa.sa_din, sa.sa_dua"
+ "from Sa sa, Contratos con, Clientes cli "
+ "where (SUBSTR(sa.sa_con,1,4)='2011'"
+ " OR SUBSTR(sa.sa_con,1,4)='2012')"
+ " AND (SUBSTR(sa.sa_con,1,8)=con.con_codigo)"
+ " AND sa.sa_sit=4 AND con.con_resp=cli.cli_logon"
+ " AND sa.sa_bol = "+ cod + " ORDER BY sa.sa_dba DESC,sa.sa_Bol;";
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
jrRs = new JRResultSetDataSource(rs);
stm.close();
rs.close();
}catch(Exception e){
System.out.println("Database erro " + e.getMessage());
}
//Gera o relatório
byte[] bytes = null;
try {
URL url = this.getClass().getClassLoader().getResource("/Relatorios/Sca-version6.jasper");
System.out.println("URL para usuários.Jasper " + url );
//Carrega os arquivos Jasper
JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(url);
//Parametros se houverem
Map parametros = new HashMap();
bytes = JasperRunManager.runReportToPdf(relatorioJasper, parametros,jrRs);
} catch (JRException e) {
System.out.println("Erro ao carregar relatório ");
e.printStackTrace();
}
if(bytes != null && bytes.length > 0){
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream oupOutputStream = response.getOutputStream();
oupOutputStream.write(bytes, 0, bytes.length);
oupOutputStream.flush();
oupOutputStream.close();
}
}
}
[size=18][color=red]
DAO
[/color]
[/size]
package br.com.sein.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import br.com.sein.bean.PrintAnalysisBean;
import br.com.sein.jdbc.ConnectionFactory;
public class AnalysisDAO {
private Connection connection;
/*
* Realiza a construção para conectar ao banco
*/
public AnalysisDAO() throws SQLException, ClassNotFoundException{
this.connection = new ConnectionFactory().getConnection();
}
/**
*
* Lista todas as análise e seta para seta na combo.
*
* @return
*/
public List<PrintAnalysisBean> getComboBox(){
try{
StringBuffer sql = new StringBuffer();
sql.append("SELECT Sa_Dba, Sa_Bol, Sa_Con, Con_Sigla, Cli_Nome FROM Sa,Contratos,Clientes ");
sql.append("WHERE (SUBSTR(Sa_Con,1,4)='2011' OR SUBSTR(Sa_Con,1,4)='2012') AND");
sql.append(" (SUBSTR(Sa_Con,1,8)=Con_Codigo) AND Sa_Sit=4 AND Con_Resp=Cli_Logon ");
sql.append("ORDER BY Sa_Dba DESC,Sa_Bol;");
List<PrintAnalysisBean> print = new ArrayList<PrintAnalysisBean>();
PreparedStatement stmt = this.connection.prepareStatement(sql.toString());
ResultSet rs = stmt.executeQuery();
while(rs.next()){
PrintAnalysisBean bean = new PrintAnalysisBean();
bean.setDateGeneration(rs.getTimestamp("Sa_Dba"));
bean.setCodeBulletin(rs.getString("sa_bol")); //Codigo do Boletin
bean.setCodeSa(rs.getString("sa_con")); //Codigo SA
bean.setAcronym(rs.getString("con_Sigla")); //Sigla
bean.setNameClient(rs.getString("cli_nome"));// nome do cliente
//Montando a data através de Calendar
// String dataformatada = new SimpleDateFormat("dd/MM/yyyy").format(bean.getDateGeneration().getTime());
// SimpleDateFormat formatada = new SimpleDateFormat("dd/MM/yyyy HH:mm");
// Calendar data = Calendar.getInstance();
// data.setTime(rs.getDate("sa_dba"));
// formatada.format(data);
// bean.setDateGeneration(data);
//
print.add(bean);
}
rs.close();
stmt.close();
return print;
}catch(SQLException e){
throw new RuntimeException(e);
}
}
}
[size=18][color=red]
BEAN
[/color]
[/size]
package br.com.sein.bean;
import java.sql.Timestamp;
public class PrintAnalysisBean {
private Timestamp dateGeneration; // Data da geração
private String codeBulletin; //Codigo do Boletin (SA_BOL) ex: 2012/001
private String codeSa; //Codigo do SA (SA_CON) ex:2001/025/012
private String acronym; //sigla
private String nameClient; //Nome do cliente
public Timestamp getDateGeneration() {
return dateGeneration;
}
public void setDateGeneration(Timestamp timestamp) {
this.dateGeneration = timestamp;
}
public String getCodeBulletin() {
return codeBulletin;
}
public void setCodeBulletin(String codeBulletin) {
this.codeBulletin = codeBulletin;
}
public String getCodeSa() {
return codeSa;
}
public void setCodeSa(String codeSa) {
this.codeSa = codeSa;
}
public String getAcronym() {
return acronym;
}
public void setAcronym(String acronym) {
this.acronym = acronym;
}
public String getNameClient() {
return nameClient;
}
public void setNameClient(String nameClient) {
this.nameClient = nameClient;
}
}