18 Replies Latest reply on Sep 22, 2008 12:09 PM by Ansury

    No Reporting Components?

    xwisdom Level 1
      Quick question:

      How do you generate reports in Flex?
        • 1. Re: No Reporting Components?
          Jason Szeto Level 3
          Can you be more specific about your question? We have a number of components to view data. We have charting and the Advanced Data Grid which are well suited for reports. Many Flex reporting applications are interactive, allowing users to filter, drill-down and compare the data dynamically.

          We also have new Data Wizards built into Flex Builder which allow you to easily connect to your backend data.

          Here is a list of the new Data features in Flex 3:

          • 2. Re: No Reporting Components?
            xwisdom Level 1
            I'm looking for something that works similar to Crystal Reports or the Visual Studio Report Viewer/Control.

            You just connect the report to a datasource or recordset and it will generate the pages, group data sum columns, etc along with user specified headers, footers, etc. When the report is generated I can then page through the report and print it when done.

            • 3. Re: No Reporting Components?
              Ansury Level 3
              Same here... another thread with no responses? Seems to be a pattern developing. ^_^
              • 5. Re: No Reporting Components?
                Ansury Level 3
                That looks nice, but I think Flex's charting features will do fine for our graphical charting purposes.

                Let me clarify what kind of reporting tool I need (and I assume the type the OP needed).

                Users need to be able to generate (and definitely print!) reports of data similar to what a DataGrid gives you. This could be a very very long list - a few hundred pages potentially. (Sounds stupid, but it's not worth explaining..trust me. lol)

                Users (like in a DataGrid) should be able to move columns around, add/remove columns, customize the title/header/footer of the printed pages, and use "advanced search" type functionality to narrow their report results with.

                Technically, this could be done using a DataGrid inside Flex and some other various Flex work, but the whole idea of using a reporting solution is that it does these things for you out of the box. And even then, the headers/footers of the report when printing are still a major problem. I've yet to see an example of a DataGrid being printed with a header/footer, page numbers, etc. from within a Flex app.

                So... and I'm hoping someone from Adobe will respond here... are there ANY good solutions that fill this need, allowing you to stay within your application's SWF and not need to go outside to some crummy old school web page to do your reporting?
                • 6. Re: No Reporting Components?
                  I have similar reporting requirements for a system I'm prototyping at the moment. I've looked at the liveDoc examples and one particular problem is that using the printDataGrid object you have to re-create the original information including formatting etc.. for each column of data (very hard work). I've looked at the FlexReport (can be found in Flex Exchange) and that has some interesting ideas and allows printing or PDF production using alivePDF.

                  What I'm trying to create is where you obtain or derive your data within your flex app, accesses a preview screen and loads the data into inter-changable document objects (these different doc templates could be tabular report style or invoice layout etc...) the application keeps control of the data and loads it into multiple pages(doc templates) on the previewer. This will show thumbnails of each page and will enable printing or PDF's. I like this approach because it allows the document screens to be interactive (sorting, filtering etc.. possibly even drill-down to actual invoices or transactions.). Only problem I foresee is volume - I think it will be fine with 10 to 20 screens, but may need some cacheing system to allow hundreds of pages.

                  Steve - Thornton Software (UK)
                  • 7. Re: No Reporting Components?
                    Ansury Level 3
                    Yeah, length could be a problem with using FlexReport. I've been looking at it a little already. Even the 2 page example, for some reason, loads *VERY* slow for me. I have a much larger application that loads almost instantly, so... hm. And the SWC file for the project itself is almost 1 meg. Oh, I'm also having an issue where the compiler wasn't seeing "ReportDataGrid.mxml" and I had to copy it out of the FlexReport project, and put it somewhere in my own project. Arg. No idea why FlexBuilder isn't adding that into the SWC that it's compiling.

                    The other thing with FlexReport is that it'd probably be more appropriately named PrintFlexReport since it's focused only on printing. I'd also like to be able to give users ad-hoc reporting capabilities, which means they'd need to be able to build their own reports and customize almost every aspect. Obviously that's way out of the scope of that project.

                    ClearBI seems to offer this type of functionality, but I'm having a *hell* of a time getting it to work -- and there seems to be little or no support and community backing it. (And not because it's new either, it's not new.)
                    • 8. Re: No Reporting Components?
                      Ansury Level 3
                      Is creating your own reporting functionality reasonably possible using Flex (and maybe FlexReport for help)? I mean, from a "getting done in a reasonable amount of time" standpoint.

                      There's so many reporting tools out there...Crystal Reports, JasperReports, etc. that are we just re-inventing the wheel creating it in Flex? I'm not 100% sure either way. On the other hand I feel like with Flex it'd be MUCH MUCH easier to implement reporting than it would have been when non RIA technologies were king. (Which coincidentally is when products like Crystal and such became popular - they didn't become the standards while stuff like Flex was around.)

                      Is Flex with it's PrintDataGrid, AdvancedDataGrid, remoting, etc making reporting tools like Crystal obsolete? Or are we just re-inventing the wheel doing reporting in Flex and not using a tool?
                      • 9. Re: No Reporting Components?
                        SWT62 Level 1
                        Hi, I have looked at all of the above plus PHPReport etc.. most old solutions seem to be server based! The solutions I'm creating are AIR based and will work on a connected/disconnected basis. I need reports to run locally and maybe update remotely. I think the tools included in FLEX are very poor - from my C# days I know that providing a user with the ability to print a dataGrid will be a solution (until the user say's - Oh! by the way I need it to do xxxx ). Users are starting to expect rich (RIA) things from us, this includes having reports that they can drill-down or manipulate directly. A software house I work for has got almost thirty years of development entrenched in reporting facilities that can't offer these sort of facilities (they have a five!! year plan to fix this)

                        So yes I think we need reportability on the client side using the rich components in Flex.

                        • 10. Re: No Reporting Components?
                          Ansury Level 3
                          Well it's possible to print more than just a PrintDataGrid correctly, I believe. I know I've done other forms of text and such in tests and it came out fine (no pics but I'll never need that).

                          I'm trying to get a feel for what others are doing as far as Flex reporting. It seems like many people are developing their own solutions rather than using reporting tools like ClearBI (which seemingly has no support or userbase).

                          It's a real shame too, I think if ClearBI had been much easier to use, didn't try to automate everything possible, and wasn't an Eclipse plugin that needs to run with the plugin version of FB, it could have taken off. Based on the screenshots it looks great. All I need is a reporting module that I can add (and configure) into one of my existing application's ViewStacks. (I think) The rest of the work (bus/service layers) I already have done for the most part.

                          I'd rather not settle on having users go into some crappy 3d party reporting website for reports. That's crap.. that's the old school non-RIA solution.
                          • 11. Re: No Reporting Components?
                            SWT62 Level 1
                            I've come to the same conclusion, I'm developing my own output modules - I need a pretty straight-forward method to create various tabular and invoice like documents.

                            My method so far is like this :-

                            [ application mxml ] ---- [tabular doc template] [invoice doc template ] [ graph template ]

                            ---------------------- [ preview screen [ doc template ] ]

                            All the data and parameters are created and controlled in the application module, the application module selects and creates an instance of the doc template it requires. it also creates an instance of the preview screen that contains a view stack and navigation bar. In my code I can configure headers and footers and how many lines my body section should have.. I populate my body which could be a table or I've used a repeated hBox in a vBox which works for low volume stuff. Each time I fill a page I add it to the previw stack and so on.

                            The doc templates contain a header, body and footer section, I just control wether they are included in the layout or not. Each page can be shown as thumbnails on the preview screen and if the user wants to print them or PDF them then I only have to re0iterate thru the viewStack and send each page to the output.

                            I'm not trying to create a reporting system - rather just a manageable way of generating tabular and other bread and butter reports.


                            • 12. Re: No Reporting Components?
                              Ansury Level 3
                              Steve - how is that working out for you? Doing something like that was definitely on my list of possible solutions, but I was convinced that it would (actually--might) be too much work.

                              The areas I would think you will run into trouble are:
                              - Printing
                              - PDF and Excel generation
                              - Large reports

                              I'm guessing report design and ease of creation are your primary advantages...

                              Are you using FlexReport (previews) and AlivePDF? I really HATE how AlivePDF has to send all that data back to the server just to save the file. Such a waste of bandwidth and efficiency... (till Flash 10 anyway.) So that kinda damaged that idea for me since our reports can be big.

                              I ended up settling on using Jasper Reports, but honestly it's not a perfect answer. Integration with Java was easy and clean (unlike BIRT which we tried out), but it's not saving us any time IMO, even using iReport for gui report design. In addition to the learning curve (which isn't too bad so far) I'll still have to create GUI dialogs in Flex to allow passing of report parameters. The report designs aren't always trivial. Layout isn't too bad (after the learning curve) but quirks like needing entire subreports and complex sql queries just to generate simple summary data definitely is a detractor.

                              I figure the main thing Jasper is giving us is PDF generation (without the extra overhead of AlivePDF) and Excel generation, and the "safe" feeling because it's a mature tool. Security will be tricky figuring out since I'm just calling a plain servlet to initiate the PDF download, so now I need to get a hold of a session ID, or re-authenticate, or something, which really sucks. I'd rather just do all this junk in Flex (re-using our already coded service/business tiers!) but in addition to these issues, I have an experienced team member who is *very* opposed to doing this without a full blown tool, which seems kindof a red flag that we should be using one.
                              • 13. Re: No Reporting Components?
                                SWT62 Level 1
                                Hi Ansury, I have completed my proof of concept reporting solution and I have posted a Blog about it.
                                I've also just uploaded it to Adobe Exchange. I'm quite happy with the results so far, when I go on to develop the commercial app I'm prototyping I think the reporting solution should work well.

                                One note from your post - I have used AlivePDF (Complements to the AlivePDF people!) and I can save the PDF locally - you don't have to send it to a server - although a couple of people that have tried the demo have said that they had problems outputting the PDF to the desktop (I'm on Vista and it works fine - so it may be a Mac thing)

                                Anyway you can find the Blog about my Reporting/Printing Example at :-


                                If you think you can use it feel free, if you have any problems please let me know

                                Steve Thornton
                                • 14. No Reporting Components?
                                  Ansury Level 3
                                  The last I heard as far as saving a pdf (any file) to disk is that we'd have to wait until Flash 10 when Adobe provides that functionality. I actually was looking at an example from the AlivePDF webpage where they had both php and java servlet code which simply takes pdf data and streams it back as a download to the browser, because of this 'security limitation'.

                                  The other solution (other than this streaming hack) is to use Adobe AIR, which has file system access.

                                  Ah - I just looked at your blog (very nice) -- but I see you're using AIR which evades that problem. Unfortunately I'm doing a purely Flex app (kinda wish it could be Air but it defeats a big bonus of easy deployment).

                                  If I ever get an excuse to switch over to running on AIR (no weird pun intended) I'll definitely be looking at doing the same kind of thing in Flex with AlivePDF. I might try it out even with the streaming issue, for small reports it's not a show stopper.

                                  Your report example looks very cool, nothing too fancy or attempts to be automagic, just the essentials. Alot of tools out there tend to go too far anyway. Do you know it's performance limits yet? Say max# of pages before it starts getting slow? Does it use the same method FlexReport does (creating a big list of images)?
                                  • 15. Re: No Reporting Components?
                                    SWT62 Level 1
                                    Hi, yes most of my apps I have planned will implement AIR in one way
                                    or another.

                                    I have set a timer on my preview to give the user consistent feedback
                                    about the progress. If this is removed (max speed) then I have tested
                                    it at 250+ pages in around fifteen seconds. The report document is a vBox and so I load them into a viewStack as container objects. Had 500 pages loaded at one point (by accident!!) and it was fine. Giving the user visual feedback cost's us a lot of speed because Flex/Flash is asynchronous.


                                    • 16. Re: No Reporting Components?
                                      batmitra Level 1
                                      i've read all of this and i am aware that it's an AIR application that is beeing developed nevertheless i have to say that i'm at the moment building a large portal application with flex + .Net (c #) and it needs a lot of reports, from statistical to graphics printing and others.
                                      So what was the solution i've implemented:

                                      i'm using Crystal Reports 11 with visual studio 2003 so ,i've decided to publish my reports as webservices, Crystal allows me to do that, so in flex i consume every data i want, the user filters whatever he/she wants and at the final i just send my data to the webservice, Crystal takes care of printing. Until now it was the fastest and easiest way to do it.

                                      About PDF, unfortunaly i have to use it to, but what i do is simply get a link to my pdfs, to create them we use a pdf printer instaled on the system.
                                      • 17. Re: No Reporting Components?
                                        SWT62 Level 1
                                        Hi, I'm and old c# dog and I've often used a 'print to PDF' solution. In our case we used to deploy PDFCreator for our clients.

                                        Many of the Visual Basic or C# apps I've done, I have often not used
                                        Crystal because of speed or size of deployment issues.

                                        • 18. Re: No Reporting Components?
                                          Ansury Level 3
                                          Yeah that's what I thought of when I read "webservices" -- not the fastest stuff in the world. XML is the overrated laughing stock of "protocols" as far as efficiency, so AMF would be preferable by far. We're probably going to settle on using JasperReports to call a Java servlet which triggers a PDF download (at least short term). But I'll still need to implement some form of basic 'report query customizer' UI, so hell is it really worth it? Only as far as getting PDFs or Excel spreadsheets I guess...

                                          15 seconds for a few hundred pages isn't that bad. The real trick would be somehow preventing total UI freeze during that time.

                                          But I don't think most browsers render html much faster, if faster at all. And generating a pdf that big is pretty slow too. I know it'd be uselessly slow if you had interactive javascript going on in there-- seen that before (sorry Ajax hackers :p).