I recently had an issue with a subreport of my JasperReports's report in which I was get开发者_如何学Pythonting the following error:
Subreport overflowed on a band that does not support overflow.
What is happening?
I fixed the problem, so I thought I'd post my solution here in case someone found it useful.
Things to check:
- If you're in a Detail band, check your report's Print Order. It has to be Vertical. Horizontal Print Order reports are not allowed to overflow on Detail bands.
- Check your subreport's dimensions. The subreport's width must be smaller than the report's width, and, for non-growing bands (see point #3 below), the height must be smaller than the band's height.
- Some bands grow, some bands don't. Keep this in mind with your subreports. If you have a subreport in a header or footer, make sure they do not grow, meaning that your datasource to that subreport can't send in too many elements, or send in repeating elements where your subreport is expecting one or few elements.
In my case, I had made a subreport and passed it a datasource that I wasn't actually using (it was an informational subreport not using any data from the datasource).
(the example is an XML datasource but the same concept applies to SQL datasources.)
e.g.
(net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}
).subDataSource("/Order/Note")
Later, the "Note" was turned into an array instead of a single note. Which meant my footer-subreport was trying to repeat twice, thus the footer report was printing twice, making it too high. Thus the error.
I have fixed the error. The solution is to use : Orientation : Landscape Print order : Vertical
The error occurred when i used the Landscape and Horizontal values
Check if your subreport width is higher than your master report's width. If so, decrease the subreport width. Also ensure that you put your subreport in a valid band, like detail. If your subreport overflows, you will get this error when it is inside invalid bands like page footer.
精彩评论