iReport SubRelatorio problemas em reconhecer parametro

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.