用什么方法把sql语句传递给子表啊?各位达人指教~

解决方案 »

  1.   

    或者这样说,怎样设置子表的sql语句
      

  2.   

    我又表达不准确了,应该这样说,怎样设置子表的DataSource我用这个方法JasperRunManager.runReportToPdf("D:\\iReport\\master.jasper",map,jrResaultSetDataSource);只是把主表的数据源设置了,打印出来子表空的...应该怎么设置子表的数据源呢?
      

  3.   

    还是传参数,比如dataSource用Hibernate的话,加上参数:
    <subreportParameter  name="HIBERNATE_SESSION">
    <subreportParameterExpression><![CDATA[$P{HIBERNATE_SESSION}]]></subreportParameterExpression>
    </subreportParameter>就是:HIBERNATE_SESSION - $P{HIBERNATE_SESSION}
      

  4.   

    这样就是把整个数据源作为一个参数传递给子表了?那子表里怎么去接?子表里拿到这样一个dateSource,怎么知道这个datasource就是我用来填充detail band里各个字段的呢?
      

  5.   

    我现在这样的操作顺序
    ireport内
    1,父表内添加参数to_sub,类型是JREmpryDataSource
    2,subreportParameter里设置parameter为from_master,Expression为$P{to_sub}
    3,子表内添加参数from_master,类型是JREmptyDataSource代码里
    jdbc拿到一个ResultSet rs;
    JRDataSource js=new JRResultSetDataSource(rs);
    parameterMap.put("to_sub",js);问题:
    1:这样设置对吗?运行时候抛了个Incompatible net.sf.jasperreports.engine.JRResultSetDataSource value assigned to parameter to_sub in the print_detail_master dataset.
    2:如前面问的,子表里拿到这样一个dateSource,怎么知道这个datasource就是我用来填充detail band里各个字段的呢?
      

  6.   

    ireport内
    1,父表内添加参数to_sub,类型是JREmpryDataSource
    2,subreportParameter里设置parameter为from_master,Expression为$P{to_sub}
    〈〈〈〈〈〈
    我说的是这一步:加上HIBERNATE_SESSION - $P{HIBERNATE_SESSION}
    HIBERNATE_SESSION 是内置参数,类似于数据库链接
    〉〉〉〉
    3,子表内添加参数from_master,类型是JREmptyDataSource
      

  7.   

    你理解是不是有点问题呢?对于iReport来说,subReport跟一般的report是没有区别的:也就是说,一般的report怎么设置subreport就怎么设置
    只不过一般的report的参数是有程序传进来的,比如通过JasperFillManager.fillReport(jr, params);中的Map参数params;而子报表是由一般的report调用的,参数只能从SubReport的属性中设置了,就在属性页面SubReport/SubReport(Other)中[一个传Map参数,一个传Obeject参数]
    属性页面SubReport可以设置连接。