This issue is resolved. I had to create a new custom JRDataSource based on the default JRTableModelDataSource. I added a method to return the TableModel from the DataSource: public TableModel getTableModel() { return this.tableModel; } I then changed the code to use my new datasource: jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap<String, Object>(), new CustomJRTableModelDataSource(tableModel)); And configured my Table datasource the following way: new net.sf.jasperreports.engine.data.CustomJRTableModelDataSource( ((net.sf.jasperreports.engine.data.CustomJRTableModelDataSource)$P{REPORT_DATA_SOURCE}).getTableModel()) If anybody knows of a better way to reset the datasource without having to use a custom JRDataSource, please let me know! I tried to move the table in the 'title' band instead of 'details' band but that still seems to cause the dataset to be started from 2nd record :-(