I have a requirement in JasperReports: The user wants to dynamically select a set of columns, or a set of rows in the published report in the browser to calculate any aggregate like sum, count, etc (similar to Excel).
I am currently using Jaspersoft Studio and JasperReports Server v6.0.1. I cant find much help in my internet research and not sure if this is doable. Is this possible to achieve, If so can you please guide me through.
It is possible to generate dynamic columns using crosstab element of jasper reports. You will then have to create list of data objects(JRDataSource).
In my case, all the aggregation was done on the server side and passed the value as a parameter using a hashmap .
Related
I have a requirement to generate reports in PDF and Excel format. For the same I have chosen Jasper. Now require some help from your side to identify the best approach on the same.
Note - My queries are dynamic in nature.Like in some scenario then will provide name in some scenario they will provide dates not name and in some scenario both.
Approaches I have identified are given below.
We can create data source and query in JRXML and execute the same.But not sure query will be dynamic or not. I am personally not prefer this approach because from java I can pass the connection from pool.
We can pass the query and connection both from the Java side and then Japser will execute the query.
We can query in java and then pass the List of bean to the Jasper for report creation.
Now need some suggestions on the best approach among above and also of any approach suggested apart from the above.
To me, option 3 is best. I did that previously.
For mine, I had a master report containing conditional sub-reports. To do that, I have build sub-report's .jasper from their .jrxml and passed my List of bean so that I don't have to re/compile the .jasper from .jrxml again(My master report was in .jrxml and condition for sub-reports where set there).
Another advantage is, you don't have to change your jasper files if you want to change your logic in query level-just leave them untouched once done.
So, I think , option 3 is good to go.
Looking for a solution to dynamically update the parameter in tableau, so that it populates new/changed values, automatically, once the data is refreshed.
Just fyi, Currently, my parameter is getting values from a field which has got date values in string format(for eg: 2016Q1).
Request help.
This is not currently possible without serious XML hacking and scripting. There have been multiple requests for this feature from Tableau users, and it might be added in the future.
I am fairly new to JasperReports and iReport and am struggling with something, which seems should be basic.
If you use MongoDB then you know it does not support the concept of a 'JOIN'. Therefore, from the iReport main dataset query I want to set a parameter/variable from the results. Then I want to use the collection values I just set in a different dataset as a query parameter/variable (NOT table, or LIST - just a plain old simple dataset I create, which will also query MongoDB as the source).
It seems this would be a straight forward use case, but I don't see anything intuitive in iReport that seems would do this. Can this be done? If so any clues you can give me would be wonderful and greatly appreciated.
Do you want to pass the values as collection from one report onto the other ?
This can be done by writing the following in your filter expression $P{parameter_name}.contains($F{field_name}). Additionally, you need to create parameter with the same parameter_name with class type java.util.collection .
Now this report is ready to receive any parameters as collections. This works for MongoDB as I have tried this out. Now as you have already said that you have been able to send the collection from the main report, the above method will work for receiving the parameter in the second report.
I am using Crystal Reports 11 (XI) and I have a crosstab that has quite a few rows to it. Its publishing format is to Excel, so pagination doesn't really even make sense. However, no matter what I do it repeats the column/crosstab headers every couple dozen lines. I've tried:
-Increasing page size definition to max size (12x18) portrait
-Turning off pagination in the output settings
-Turning off horizontal pagination
-Deleting column headers (works) but I cannot delete the crosstab header
I'm running out of ideas.
If the goal is just to create an excel file with some pivoted data crystal reports is not the best way to do it. Check the first 5 minutes of this video:
http://www.r-tag.com/Pages/Preview_Demo.aspx
It compares the same data presented as a cross-tab in Crystal reports and pivot report based on a SQL ad-hoc query. SSRS is also part of the comparison and it is a better choice than Crystal too , but SQL ad-hoc query is my favorite for pivoted data.
P.S. I am proposing this alternative because the tool is free, it will save you development time and will create a better formatted excel file. If you are using BOE and you want to keep the report there this might not work for you.
The solution is as contrived as the problem...
There is no way in Crystal XI to "turn off" the crosstab pagination. It simply cannot be stopped. However, you can cheat the system by configuring a massive page size. In windows on your development machine, locate your XPS printer virtual device and choose "Print Server Properties" (in the top banner in Win 7+)
In the "Forms" tab, you will be able to configure a new paper form object of arbitrary size. Click on "Change Form Settings" and create a new page that is as large as you think you will need. I'm not aware of any limitations on this configuration, but I'm sure bad things happen if you go nuts.
Returning to crystal, go to printer configuration and select the XPS document printer as your target device for exports, and save the custom page size as the target paper type.
Now, the crosstab will assume you are printing to a massive sheet and will not attempt to paginate. As far as I can tell it's impossible to achieve the same effect any other way.
Here is a introduction about jasper crosstab.
http://www.tutorialspoint.com/jasper_reports/pdf/jasper_crosstabs.pdf
From the document, you can add two attributes in node
<crosstab isRepeatColumnHeaders="false" isRepeatRowHeaders="false">
...
</crosstab>
I am dealing learning SSRS 2008. I want to do a report that is a little bit more complex.
I would like to have a row with information about "Object": name, id, description, etc. And I would like to have a + sign in this row, so I can expand/collapse rows that are regarding "Comments" about that object, with columns like "comment", "date", etc.
I first tried the "Grouping" approach, but I got to a dead end because the groups would use the same header.
Now I am trying to tackle it with a subreport.
The first problem I had is that I couldn't find the query designer in VS2008, so I started the SQL Reporter Builder.
Is there any way to use the Query Designer inside VS2008?
Then I created my report and my subreport as different report files, because I thought I would be able to use the subreport properties to select the subreport file and add it, but I was wrong. How can I add it? Do I have to publish it?
I just found out that I can't use the rdl file from SQL Report Builder in Visual Studio (it doesn't recognize the file extension, in VS2008 it is rdlc).
I am basically lost.
Could someone give me some guidance?
Thanks,
Oscar
This was asked a while ago but you haven't closed the question so I assume you still need an answer.... Are you looking to add the drill down feature to your report?
http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/creating-a-basic-drilldown-report-in-ssr-2005
http://www.sqlservercurry.com/2009/08/creating-drill-down-report-with-sql.html
If not... I am confused at what you are looking for and if what you want is really intended to be done in SSRS.
And... are you using subreports because the Object information and the Comment information is on different servers or data sources? Because it seems like you would want to use grouping for this, and group by the objectID and have the comments below.