When I think of reports I think of banded reporting. Tools like Microsoft Access, Crystal Reports, SSRS and even VisualFox use this. Dynamic behavior must be anticipated in advance and is controlled through conditional fields, subreports and parameters. These reports are perfect for financial reports or lists of things where anytime you run this (typically between some date range) the look and feel is predetermined and expected by the user.
However our company requires a solution where any user should be able to change any aspects of the report. Fields, formatting and layout are all changed anytime a report is run. It's not a traditional "report" if you will since it's not a somewhat static output.
Resorting to banded reporting in this case would banish some developers to the world of crystal reports since we generate 2-6 reports on any given day. I can't imagine a typical user being happy with having to learn how to use crystal report designer either.
What are some alternative reporting solutions that allow you to build reports without being at the whim of learning an entire reporting suite such as Crystal Reports? I've added an answer of my own to show a great alternative that we're currently using and hope to get some good input for future use. The point of this post however is to collect some alternative solutions to the one proposed.
DevExpress Snap
With some digging we discovered DevExpress Snap which allows you to build reports using a Word Processor much like Microsoft Word by dragging fields from a fields toolbox right into the document! It feels exactly like Microsoft Word with data field drag and drop capabilities. Fantastic!
We've already created a Template structure so users can save their predetermined layouts as "general" templates to start work off of but nearly every report generated contains different fields and formatting. Sometimes even images are dropped into the document to illustrate a point.
Now I don't have to be banished to the land of SSRS! This is an amazing solution though I still generate certain reports (P&L for example) through SSRS since it should be a pre-set reporting style, with it's fields and design locked away from the user.
The other solution I found that looks pretty powerful and easy to use is Windward Autotag. It's an actual plug-in for Word that just adds an extra tab at the top of the ribbon for all your report options. So you can literally design all your reports right in Word. You put your data wherever you want by going to the Autotag tab added to the ribbon and clicking a button to insert your data where you want it. I haven't tried it yet, but the website and demo video look pretty impressive.
Related
I want to provide the end users of my application an option to modify the crystal report after the report is loaded. How can I provide this option? I've googled for days but couldn't get any solution. What I found was to upgrade to professional edition of crystal report and use the Report Application Server(RAS), which is not an option for me since my client cannot afford to buy it. Is there a workaround for this? What I really want is to let the users delete the columns they don't need in the report, change the order of columns etc. Pls help.
With regards,
JosephJCKochi
There isn't a designer control that I've seen.
Options:
You could use a parameter to determine which fields are displayed and another parameter to control grouping.
I would ask why people need to remove a field. Why can they just ignore it? You'll expend a lot of resources trying to meet this requirement.
If they need to do 'additional analysis', I would ask what this means. Is is a cross-tab? A graph? Flexible sorting or grouping? Then just add it to the report.
I want to have users click on a column of a histogram and have that action load a subreport contained based on an attribute of that column.
This would make SSRS reports a bit more interactive and a lot more useful.
I noticed that when specifying actions, we get the following dialog which has "go to report" but not "load subreport".
Maybe there's hope in "Go to URL" and javascript?
Well, sort of. You could set the Go To Report function to go to the Parent Report (back to itself), and pass a parameter that updates the subreport. Not elegant, but it works. I've used it to create a tabbed "form" and use the "tabs" to switch out the subreport below.
I have used "Go to Bookmark" and instead of loading a subreport, it simply jumps to another page in the report that shows the details of the chart item selected. Good luck.
The answer is no, it is not possible to re-load a subreport based on a click using SSRS.
Several people mentioned this to me in different places:
#cadrell0 says:
SSRS posts when ever you click on anything, such as sorting tables or
toggling hidden items. This leads me to believe you cannot use
javascript to interact with it
On twitter, I get the simple, straightforward advice:
Subreports in SSRS don't work that way. See Summary of Characteristics
here - http://bit.ly/v0erHi
In general, If you want a more interactive experience, you need to do web development or find another solution that is not SSRS. A Microsoft solution that looks promising is Power View. It comes out soon and it may provide a better way to explore data.
I would like to generate an invoice and print it in the background (without being showed to the user of the application),once the cashier has received the cash from the customer.
I don't know how to do that in WPF,i tried to create a user control and pass the needed objects and bind it to a DataGrid control into this user control and print it.
Someone suggested to use Crystal Report and pass a parameter then generate the invoice and print it,but i don't know how to do that technically.
Thanks in advance
In WPF you have many possibilities:
Printing via XPS, look here for more information. It's really flexible and powerfull but also a little complex. Here you will find a short example.
Create a FlowDocument and print out this. This way is more simple, has a lot of features and also gives you good print quality. However it has a specific goal: Support of flowing documents. Therefore it's not always the best choice because of formatting limitations.
A very simple possibility to use PrintDialog.PrintVisual. With this you can print out quickly the contents of a visual. This is good for a simple solution but very limitted.
Use a reporting tool such as Microsoft Report Viewer. You can use it also from WPF and it is very powerfull and free. Take care, there are many different versions out there. I would use the newest one (V3). This is the version VS2010 has an integrated designer.
All these ways can be used to print out without direct user-interaction.
You have written: I don't know how to do that in WPF,i tried to create a user control and pass the needed objects and bind it to a DataGrid control into this user control and print it.. To see how the result becomes, take the PrintDialog.PrintVisual-method, it seems you also have all you need and then you will see if it fits your needs. Otherwise choose one of the other technologies.
For creating nice formatted print-documents, I would propose to use a reporting technology, because of the flexibility they provide. You can do it also in XPS but in general, this is much more work (the more complex the layout becomes) and is also less supportable. However, it's also an effort to learn and embedd the reporting technology into your app.
I'm using winforms. I spend a lot of time drawing forms (maybe not a lot, but it is a boring task).
To sum up... I want to develop a simple aplication that connect to a sql server database, let the user to select a table, and put the controls in a form for me (generate the designer code), based on the tipe of each column. Then my app will name each control like the column of the table, set the maxlengh property (if the type is varchar), and create a label with the same text near the control. If the column is a FK, then the app will draw a combobox and so on. I saw that Telerik Open ORM make something like this, but I only need a simple app for the IU Generation.
If the same day I finish my little application I discover a tool that make the same... I will feel myself stupid :D
Are there any tool out there that do this work for me?
You can just drag DB columns from the Server Panel and drop them on the Form. This will generate TextField, CheckBoxes and other UI elements for you.
You can also drag the entire table and drop it on the form. Same thing will happen: all fields will get generated.
This is using plan Visual Studio 2008 IDE.
Take a look at DevExpress - they have a number of ways to do exactly this. (We're a happy user of their product.)
Take a look at Microsoft lightswitch. I had posted a similar question as yours and stumbled upon it by accident. Devexpress also has an orm like Teleriks http://www.devexpress.com/Products/Index/Frameworks.xml. I am using Lightswitch for form gen. good luck
I'm using ReportViewer WinForms, and since it is no easy way to create an coversheet, then I wonder, is it possible to render two reports and have them concatenated?, so they appear as one report?
If I was to print only, then I could execute two reports after each other, but since the user want to see the report before printing (you know, no environment waste here) then they have to appear in the same viewer.
OR, is there other ways of creating coversheets?
Today I use an subreport, but there are some issues with margins etc. which is not easy to fix.
To clarify, we are talking about
ReportViewer using RDLC files, no
Crystal Reports involved.
Do you need to display the 2 reports as 1 in the reportViewer control or would having them both exported to PDF and showing a single PDF containing both reports be satisfactory?
I was looking for that but using the Web ReportViewer and found examples exporting the reports to several PDFs, then concatenating the PDFs into 1 using PDFtk (free)
Blog post about using PDFtk and Reporting Services
Multiple RDLC reports displayed at the same time
PDFtk web site
I've created a report that sounds like what you are attempting to do...first to clarify, I'm going to guess your using Crystal Reports within VS2005/2008.
If that's the case, all you need to do in the main report is create an additional section after your section that contains the "Cover Sheet" layout/data. In the section expert for the "Cover Sheet" section (in layout view, right click on section header bar, pick section expert in pop up menu..), check off the "New Page After" option.
Edit: After your update, I see you are using RDLC reports, and from my limited exposure to those, I can't recall an easy way to get to where you want to be. Though I'm pretty sure you may be able to pass multiple reports to the same report viewer in code.