Grouping Jasper Report horizontally - jasper-reports

I have a fairly straightforward Jasper Report that uses Grouping for up to 8 groups. When I run it, it correctly groups and prints, but each group is on a new page. Although there are several SO and other questions that ask this same thing, I have not been able to get this to work.
What I want is exactly what I have now, but instead, for each group to lay out horizontally on the page.
The report property "print order", which several people allude to, is not changing this behavior. And when I tried setting "columns" to 3, it simply takes the first group and spreads its data over 3 columns, and then starts the next group on a new page.
I have tried every other combination of parameters that might prevent this, but without success. Does anyone know if I can show the groups horizontally across the page?

Related

How to create page break between elements inside list entry?

My Jasper Report has Detail element that holds List element. Every list entry of which contains number of tables.
I need to add page break between those tables.
The problem is that it is not possible to add line break. I am able to drag it between tables but the report stops working after adding it. It turns out that break is not supported in such places.
Is there a way to workaround this? Currently I'm thinking of adding some fake element that would consume some space but will be invisible, however it is not as simple.
I know it could be achieved by introducing sub-reports, but this requires complete redesign of my report so it is not an option for me.

Display multiple columns in a group header with charts

I want charts generated for each group to appear in a multi-column format in one group header. I could do it with subreports, but I'm looking for a solution that doesn't require me to load the data set multiple times. How can I achieve this?
Long story short, Crystal isn't a good fit for this.
Even if the number of groups wasn't variable, Crystal reports is fixated on delivering and iterating your records from top to bottom. It's not impossible to structure that, but it would be way more work than it's worth. Plus you'd waste too much time handling the variable number of charts and ensuring unused ones were suppressed. And even then, you'd probably need to use subreports.
You'd have better luck using something other than Crystal for generating this behavior. Even if it meant creating a subreport for the chart and writing a VS program that displayed that report multiple times for each "Group".

Crystal Reports - Remove Excess Records

Good day everyone. I would like to ask for help regarding printing records using Crystal Reports.
My aim is to print all the records in the report. The problem is that when I have only two or three records, the form will still print a space to forcibly expand it into a one whole page.
What I have did is to manually place all the parameters in the form, and add a record number parameter built in the Crystal Reports Designer. I loaded a dummy record with nothing in it. Now when I run a report wherein I have only two to three records, I have this output.
How will I work out this problem? I can only find in the Internet about shrinking, but not expanding.
In the Section Expert, check 'Suppress Blank Section'. Hope that helps

Crystal Reports Splitting Page up into Thirds

I have been asked to mock up a report in Crystal (i would normally use SSRS but the application uses crystal for report), and i need to split the page up into thirds. The idea is that the top 2 thirds are for the customer, then there will be a tear line on the paper and under that will be the section for us to keep.
What is the best way to accomplish this, baring in mind the report could go over 2 pages?
Cheers
Luke
Based on my understanding of the requirements, you just want to space things out over a customer's order (or something similar). I am assuming the grouping will be by customer with items in the details sections.
1) If all fields required are in a single records, and you can stick by the "2/3's page" visually, you can force the spacing simply by extending the reporting band sections. i.e., Increase the page header and include some customer information, or do the same with a group header, etc. and then space out a single details band with fields spread out as is visually pleasing.
With the spacing done this way, you can also embed a small band that holds only a dashed line, which will be a visual tear line.
Fields placed in the next band will be the portion that you intend to keep.
2) If the customer section will have multiple items in details -- be smaller or larger (i.e., if you are pulling in an inventory list that may have 1 or 21 items), then you can still something similar, but not using enlarged, fixed band sizes. You can put customer general information in a group header, followed by multiple details (records), and end with a two-band group footer. The first band can be any closing information for that customer, followed with a visual tear-bar, and the last band can be the information you wish to keep.
Grouping by customer and forcing new pages for each customer should give you what you're looking for.
I hope that's clear enough to give you two alternatives.
D'Oh... and, forgot to include: You can use the Section Expert to format a group footer to Print At the Bottom Of Page, forcing the portion that you want to keep to the lower part of the page. On a multi-page printout, it would be forced to the bottom of the nth page.

Crystal Reports Sub reports repeating based on Parameter

I have a report with 4 seperate sub-reports embedded into it.
On the main report, I have a parameter to filter by group and I have it set to filter by group unless you choose All for the parameter, then it shows all groups.
If {?Main Group Name} = "ALL" then {Incident.Group Name} like "*"
else {Incident.Group Name} = {?Main Group Name}
This filter setup works fine on the individual sub reports, however if I run it selecting "all" as part of the main group, it causes the sheet to loop indefinitely and doesn't show the data properly.
The data is in all Group header 1 and group footer 1, so ideally the same page(as below) should repeat for every group.
When I run it for all, It runs for an abnormally long time, and has to be manually stopped, otherwise it just keeps going. After manually stopping, I get the following. It almost looks like it's trying to render all the groups on top of each other.
Anyone have a clue what could cause this?
Where are your subreports located in the main report (group header)? What are you doing with the record details of the main report (suppressing, I'm guessing)? What do the record selection formulas look like, FROM the subreports? How many tables are in the subreports? If multi-table, are your joins correct?
I have seen occurrences when subreports have a given Record Selection, and then have links added from the main report, where the resulting subreport query is totally hosed as Crystal Reports "helps" by modifying the subreport record selection on top of what the developer intended. True Story (a 17 second report was updated and ran for 20 hours before anyone noticed it had never finished a scheduled run). It sounds (heh, in inter-text) like you don't have correct relationships set up in the subreports, and may actually have cartesean products being formed.
Where are you using your code shown in your question? In the Record Selection? In an #Formula? What kind of link are you using to the subreport? What "should" be linked to the subreports is the {Incident.Group Name} -- as that is what changes in the main report group.
If you break out the subreports, and run them individually, manually setting the {?Main Group Name} to "ALL" and then to sample group names, what is the result? If the individual subreports still run on, you can at least watch the record counts (status bar) and when you manually kill the report, you can look at the performance information, and at the subreport Show Query.
Lastly, if you try running the main as "ALL" using a Top 10 (or 2, or whatever number you want) and then watch the subreport performance, that might give some clues. If there are selection-hosation byproducts, this would at least limit the effects a bit. You'd still be passing "*" to the subreport, but only doing it "N" cycles.
Sigh, and one last: If you really want "all", you might be better served if you use something like:
If {?Main Group Name} = "ALL" then TRUE
else {Incident.Group Name} = {?Main Group Name}
Sorry to be so long... I didn't have enough time to shorten it.
OK, really, really LAST one: If I have misunderstood your post, assumed too many disparate themes, or am just talking out of my hat: Sorry. Missed a meal, picked up several interruptions, and doubled up on the coffee. I'm sure there's a smiley for that, somewhere.
[Inserting add'l answer, as it is distinct enough to warrant it's own entry.]
I think I understand the Group Header/Foot Charts.
Did you try running Main as a Top 10 to limit the # groups?
How big is the (chart) record set?
AND, is the report set up for asynchronous queries?
What IS going on in the subreports:
Complex query?
Simple query?
Suppressing all Details and just showing the Chart?
Going to a different table/database?
Table joins?
Run for "Top 10" Groups in main, wait until it ends, then check for the Main and each chart sub (for at least a few groups):
Report / Performance Information:
Total Number of Records -- (Main should be "Top 10" )
Performance Timing:
Run the Query,
Read Database Records,
Time to Format All Charts
or
Time to Format 1st Page.
If you have several millions of records, even with "top", it could take a while to read and calculate the top. If you are calling charting, even tho' it is for a single Group per chart, if the subreport still has to apply a linked query, parse millions of records, perform add'l calculations, create a chart (that still accounts for all records), etc., it can just be a long time running.
You may find that a small "All" Top "n" will show a lot of time being spent behind the scenes, and that allowing the whole report to run that the add'l Comparison of Ticket Counts is displayed. And if not, we can look at that later (mainly by opening up the corpse and looking inside).
I am trying to ascertain regular behaviour, and I can't get a requirements doc for review. I can only make assumptions and ask questions and make suggestions.