iReport SubRelatorio problemas em reconhecer parametro

0 respostas
furacao123

preciso gerar um Relatorio com subRelatorio no iReport eu gero tudo certo mas quando eu tento usar minha classe para gerar o relatorio nao consigo enxergar os parametros passados no select do subRelatorio

Expressão de SubRelatorio
$P{SUBREPORT_DIR}

Parametros do SubRelatorio
ID_FUNC $F{id_func}
DATA $F{data}

esses dois parametros eu tenho eles no select do meu Relatorio principal

la em Visualisar -> Parametros do Relatorio adicionei os dois parametros

ID_FUNC java.lang.Object Valor Padrao da expressao $P{ID_FUNC}
DATA java.lang.Object Valor Padrao da expressao $P{DATA}

pronto quando executo no iReport 3.0.0 roda normalmente .

public class relCartaoPonto {

    private static final String relatorio =  "D:\\Arquivos de programas\\JasperSoft\\iReport-3.0.0\\CartaoPonto.jasper";
    private static final String subRelatorio =  "D:\\Arquivos de programas\\JasperSoft\\iReport-3.0.0\\CartaoPonto_Sub.jasper";

	public relCartaoPonto() {
	}

	public void gerar(String mes, String ano) throws JRException , SQLException, ClassNotFoundException {
                
                                Connection con = MySQL.conectar();
		Statement stm = con.createStatement();

String query = "SELECT p.data, p.entrada_1, p.saida_1, p.entrada_2, p.saida_2, p.entrada_3, p.saida_3, p.entrada_4, "+
"p.saida_4, f.nome, fu.funcao, e.nome_fantasia, calc.total_trab, calc.total_noturno, cf.total_trab_final, cf.total_trab_not "+
"FROM empresa e, calculo_diario calc, calculo_final cf, anomalia p INNER JOIN (funcionario f INNER JOIN "+
"funcao fu ON f.id_funcao = fu.id) ON f.id = p.id_func "+
                        "WHERE MONTH(p.data) = '"+mes+"' AND YEAR(p.data) = '"+ano+"' AND id_func = p.id_func AND e.id = f.id_empresa AND p.data = calc.data";

        ResultSet rs = stm.executeQuery( query );

		//implementação da interface JRDataSource para DataSource ResultSet
		JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );

         //alimente os parametros que vai passar para o relatorio aqui, incluindo o subrelatorio
        Map parametros = new HashMap();
        parametros.put("SUBREPORT_DIR",subRelatorio);
        parametros.put("ID_FUNC","0001");
        parametros.put("DATA","2009-02-01");

		JasperPrint impressao = JasperFillManager.fillReport( relatorio, parametros, jrRS );

		//exibe o resultado
		JasperViewer viewer = new JasperViewer( impressao , false );
        viewer.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
        viewer.show();
 

   }
	
	public static void main(String[] args) {
		try {
			new relCartaoPonto().gerar("02","2009");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

executando minha classe me gera a seguinte Exception de que nao foi possivel encontrar o campo

net.sf.jasperreports.engine.JRException: Unknown column name : id_func
at net.sf.jasperreports.engine.JRResultSetDataSource.getColumnIndex(JRResultSetDataSource.java:359)
        at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:116)
        at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:787)
        at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:751)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1422)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:879)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:801)
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)

o que estou fazendo de errado??

preciso urgente desse relatorio

Obrigado.

Criado 25 de março de 2009
Respostas 0
Participantes 1