I have a requirement to develop custom reports where we already have some reoprts developed using JasperReports using iReport tool. Now the requirement is to modify those reports design at run time. I should use those existing jrxml files and save as to new report then change the design at run time. Also I should see those newly created reports whenever I want.
I have gone through the Jasper API and Dynamic Reports where we can create the reports dynamically at run time but we can't save the design (like JRXML).
I am looking for any other JRXML design API to create and modify and save the Jasper Reports at run time.
I appreciate if any one can help me.
Thanks in Advance
Srinivas
It seems DynamicJasper can do this.
First thing you will need to draw a flow chart of how you want to do things.
For example, if the report already exists, and you want it as is, what will you do?
In case you want to modify it a little, do you want to save as jrxml and compile each time?
Or do you want to compile to jasper, store on local storage then populate later.
It seems you want to build a reporting engine and answering all those questions is basic. In that case here is something to start from.
Find a factory called DocumentBuilderFactory which will help you parse the XML into DOM object, modify then save it.
Here is a good tutorial on using it
Related
I am new to JasperReports and iReport and I am sturggling to get the most basic example up and running. I'm trying to read input from a .xls file and put it into a table using iReport. Eventually, I want to read from a database, and transform the data in a meaningful way but for now I just want to view what I am reading and I can't get that going. First, if I just drag and drop my Field into the template, $F{Account}, I would expect to see the list of values for that field name (as I do when I preview my "query"). However, if that is all I do and then preview, I see the first account number in my input xls, and then 50 pages of empty white space. Why would this be?
Next, if I create a basic table, I am getting an error
Error filling print... null
java.lang.NullPointerException at net.sf.jasperreports.components.table.util.TableUtil.isSortableAndFilterable(TableUtil.java:344) ...
Print not filled. Try to use an EmptyDataSource...
Any help is greatly appreciated! Also, I should note, I did download JasperReports but I'm wondering if I need to somehow connect iReport to those classes. I saw a way to do it in the Netbeans plugin but I'm just trying to use the iReport GUI
The table component is great. But it's harder to use than it should be. Take a look at this Table Component tutorial to learn how to use it.
For the first part of your question you don't give enough information for anyone to know. My guess is that you put the field into the Title band rather than the Detail band.
What's the best way to setup SSRS reports to run against a test database? We need to run them from the Report Server (e.g. from a browser) against a test database. I tried creating a linked report but I don't see a way to associate a different data connection with the linked report.
Thanks.
I usually create a second copy of reports in a Test folder on the SSRS server. This lets consumers test report changes before they affect production.
But if you really want one version of the report to point at both production and test you can get clever with data sources. Here's a blog entry discussing dynamically changing your datasource based on a parameter.
http://skamie.wordpress.com/2010/12/17/ssrs-changing-data-source-dynamically/
Then you'll need to either expose the parameter or call the report in some way where you can set the hidden parameter.
Create a new folder in the Report Manager and upload the exact same report to that new folder.
If needed, you can also hide this folder so only testing people can access the URL directly.
Create a new data source that points to your test database and change the data source of the new report to use the test data source.
That way you can leave your production report intact.
Go to Properties > Data Sources and point the datasource to your test database
Attempting to create a PDF from a Crystal Report file in C# using the Crystal Report API (version 13) - The API requires that the Crystal Report file be passed in as a file. I currently have the report as a memory stream and would prefer to not save it to a file, use it, then delete the file when done.
Is there any way to "fake" sending a file without creating an actual file? (Parameter it requires is a filename.)
This application runs on a server in the cloud and will have multiple instances and other things that make me not want to try to deal with permissions and file structure and things like that that may crop up when creating a "real" file.
Thanks for your help!
Of course not. If it's expecting a filename as a parameter, it's using OpenFile() or the equivalent to open a physical file on disk. How do you fake it?
Every OS I've ever worked with has a mechanism for getting a temporary filename; in .NET, you can use System.IO.Path.GetTempFileName for exactly this sort of purpose.
I have an application that creates a report using crystal reports. The data for the report is created in db tables that are built on the fly and then deleted after the report has been created. I would like to save the database that create the report.
I have access to the reports, so I was wondering if it is possible to embed a script in the crystal report that would run when the report is created and move the data to another location, such as via a batch script.
Can anyone tell me if this can or cannot be done? Thanks for any thoughts.
Try this. In the .rpt, go to Database Export and Add Command as shown below.
I don't know what the proper SQL syntax is (the query in the sample image threw an error), but once you work it out, you could probably do it this way. This example from Business Objects uses this command as part of a larger question.
(However, since the original DB is immediately deleted, you'll have to specify a new database to put the table in. I don't know if that's possible.)
We have a purchased application (I'm told it's .NET, it's client server, running on Windows XP, connecting to SQL Server 2005) that uses a Crystal Reports runtime and separate report files (.rpt) to do it's reporting function. I have a copy of the CR Designer program but we don't have the CR Enterprise software. I can open the reports in the designer, get to the SQL Server data source (and any others, I guess), add them to the report, run it, print it -- but I can't figure out how to use the same Datasource, which is a subset of the tables in the database that it's connecting to, to do it, and I can't figure out how to save the report files so they'll work with the application. Real gravy would be coming up with new reports.
Is this even possible?
If you open up the report and then go to Database, Set Datasource Location, under the Properties section you will find a lot of info about the datasource and where it is getting it's info from. If the purchased application is creating its own datasource internally though and supplying it to the report at runtime, the best option that I can think of is to start a trace on the SQL Server and then run a report. You should be able to see the SQL that is issued by the Datasource and replicate it in your own version.
You have the possibility to manage your connection's properties at runtime (ie while launching CR from your app). Here is a proposal: Crystal Reports Datasource remap
If you cannot access your app code, you should then do as proposed by #Anthony, by updating all your connection strings in your rpt files, save the rpt files, and copy then on the corresponding report folder of your app: you might have to find where it's located in your system.
First of all, you'd better make sure you're not violating the application's license agreement by attempting to add to it in this way.
It may simply not be possible to add reports to the app in any case - it depends how it loads them and what it does with them.
To use the same datasource, you should just be able to open one of the .rpt files, then go to File > Save As, and give it a new name. Then modify it to what you want. Of course, if you don't know the authentication credentials the app passes to the report to connect, it would be tricky to test it.
It would help greatly if you gave us the name of the purchased application, as we don't really know what you're up against.
It could be that the application is passing through a filter of the data. So when you run the report from Crystal Reports Designer you get the whole data base, however when run through the program the parameters being passed to the report restrict the data back down.
Create a backup of the report. Then edit the existing report, make the changes you require, preview the report to get an idea it looks right, save the report and run the report via the application.
Warning:
As it has already been stated some vendors may not allow you to edit existing reports, your warranty/sport may be voided by editing existing reports, or reports could even be overwritten on the next update.