title: Subreports in Jasper Reports
body: <p>I have two tables to be printed in same page. Data for those tables will be supplied from a map from a custom data source. I need to implement it. I googled for implementing this task. </p>
  
  <p>At that time I came across sub-reports concept, but I didn't get much info for how to implement sub-reports.</p>
  
  <p>I have an idea of how to create sub-reports. But I don't know how to fill sub reports with customdatasource. That's my question. Please help me in achieving this. </p>
  
  <p>Note: I tried to implement subreports, but I am getting an error. Here is the code I used for compiling subreports:</p>
  
  <pre class="lang-java prettyprint-override"><code>JasperPrint print = new JasperPrint();
  JRPdfExporter exporter = new JRPdfExporter();
  JasperDesign design, design1;
  JasperReport report, report1;
  JasperReport jasperReport;
  JasperDesign jd1;
  
  jd1 = JRXmlLoader.load("D:\\sub_report1.jrxml");
  jasperReport = JasperCompileManager.compileReport(jd1);
  Map parameters = new HashMap();
  parameters.put("ReportTitle", "Table Report");
  parameters.put("DataFile", "TableSource.java");
  parameters.put("Subreport_1", jasperReport);
  
  design = JRXmlLoader.load("D:\\sub_report2.jrxml");
  report = JasperCompileManager.compileReport(design);
  parameters.put("Subreport_2", report);
  
  design1 = JRXmlLoader.load("D:\\master_report.jrxml");
  report1 = JasperCompileManager.compileReport(design1);
  JasperFillManager.fillReportToFile(report1, "D:\\master_report.jrprint", parameters, new TableDataSource());
  
  exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
  exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "D:K\\Report.pdf");
  exporter.exportReport();
  
  JasperViewer.viewReport(print);
  </code></pre>
  
  <p>Here I have compiled <code>subreport1</code> &amp; <code>subreport2</code> individually and added them as a parameter in map. Then I'm getting an error while filling it through masterreports. Please help me to compile the report.</p>
  
  <p>Stack trace of the compiler error:</p>
  
  <blockquote>
    <p>Exception in thread "main" net.sf.jasperreports.engine.JRRuntimeException: Unkown print order 0.
        at net.sf.jasperreports.engine.fill.JRFillSubreport.initSubreportFiller(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(Unknown Source)
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(Unknown Source)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(Unknown Source)
        at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(Unknown Source)
        at ReportTableCompiler.main(ReportTableCompiler.java:53)</p>
  </blockquote>