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 .
[code]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();
}
}
}[/code]
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.