JSP e iReport - AJUDA POR FAVOR - PAGO COMISSÂO E O GUJ PERMITIR

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;
	}
	
	

}

cara tu so quer que coloque os dados do JSP na tela do IREPORT, ou tu quer que faça bonitinho? Tens o layout pra fazer?

recomendo os livros do Edson Gonçalves sobre IREPORT, vais aprender muito.

Eu vi alguns tutoriais na internet sobre iReport ai consegui montar um formulário, sendo que lá no iReport queria colocar na query para receber um parâmetro e não consigo.

E queria fazer um evento ou qualquer coisa para esse botão funcionar, isso é o usuário seleciona a informação na comboBox e quando clica no botão gerar um pdf.

normalmente eu já coloco a query no relatório e depois só passo a conexão para o ireport…

cria uma variavel na aba PARAMETERS do mesmo tipo que a tua variavel java vai passar pro ireport, depois onde tu digita o SQL, vai ter uma aba com essa variavel q tu criou, clica e arrasta pro campo que tu digita a query, vai fikar algo assim:

select * from table where coluna = #{PARAMETRO}

é eu to querendo fazer assim:
POr exemplo
Criei uma tabela de informação no iReport e uso uma query por exemplo - “select * from contatos where = $P{parametro}” sendo que ele não identifica e fica com erro.

na tua clausula where tem q ter uma coluna da tabel pra comparar com a variavel, sem isso com certeza vai da erro de sintaxe no sql

Sim sim, o erro que é exibido no iReport é:

Error: Sourced file: inline evaluation of: ‘’$F{sa_bol};": Attempt to access property on underfined variable or class name

Eu editei a query, add uma variavel do tipo String de acordo com o banco e arrato para o where ai exibi esse erro, mais se eu colocar a condição funciona ex: ‘2011/0494’

Query usada:

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 = $P{sa_bol}
ORDER BY sa.sa_dba DESC,sa.sa_Bol;

cara vou te dar a dica.

procura na net pelo curso da T2TI, eles tem video aula de IREPORT e ensinando tudo praticamente. (axo q tem no youtube ou pra download no google). Sao 4 horas de video aula mais ou menos e tu nao vai se encomodar, vais poder ver e ir fazendo e ter certeza que vai funcionar.

Nao vou ter como te auxiliar mais pq ja to saindo do trampo e so volto amanha.

Malz ai por ter que sair, precisa mande mensagem por aqui.

EDIT:
Vi que tu ta fazendo muito scriplet no teu JSP isso nao eh aconselhavel, principalmente por dados da conexao na pagina JSP isso tu poe numa classe JAVA ou em um .properties ou em um XML. E outra coisa pq tas usando AWT e SWING na tua JSP e no teu BEAN? isso nao funciona pra web, tens que usar um button para que apareca para o usuario, voce realmente é analista de sistema como está na sua assinatura?

Muito Obrigado,

Vou dar uma olhada não tem problema de ser 4 horas, por tanto que eu consiga aprender.

Sim to usando, mais estou no desespero, pois tinha que ter entregado isso na quinta passada, mais tive muitos problemas, depois de entregar, eu vou consertando.

vlww