What's the easiest way to create a formatted report



  • I have been given the job of automating the age old procedure of creating the weely reports out here. Here's the situation: Our various offices sell our products ( for now, just consider that it is only one type of product and nothing else), and all this information in present in our centralized Oracle database. The Suits require a weekly report every friday, with up-to-date information from every office. This is currently a 6/7 page pdf, which has a table of all the offices, their weekly sales, the sales 4 weeks ago, and the sales 52 weeks ago, both in number, and in moentary value. At the end, there is a table of offices who failed to meet their targets, with the address & contact details. The First page is an executive summery, which gives the total sales, as well as the number of offices that failed to meet the target.

     

    So far, all of this was being done manually, by one person, but now they want this to be automated, and a weekly report created just after midnight on Friday.

    I am more of a back end programmer, who works with .NET services, and Database design. I have so far created the report in a text only format, but was wondering how to created a nice looking formated pdf. I looked at libraries like ITextSharp, but found that a lot ofwork is required to get even a simple report. Is there any way ofdoing this, if I have a template, with the least amount of code?

     



  • Depends about your definition of "nice-looking". If you don't need fancy graphics, how about LaTeX for layout and tables and gnuplot for plots?

    Btw, which programs did the guy who put together the report manually use?



  • I use Crystal Reports.You can tap into the Oracle DB quite easily, produce a nicely-formatted report complete with graphs, summaries and highlighting to identify data of interest - all of which can be saved as PDF. The only issue is that it's a manual process; you'll need the Crystal server or Business Objects server to automate the report generation.

    If you were using MS-SQL Server, then I'd recommend SSRS, which is their version (and deployment is much better). Once the report has been created then getting it to be produced upon demand (such as in a browser) or scheduled to run off at regular frequencies is quite simple.

    Your problem is twofold there: it's not the creation of the report but the regular automated generation, and the latter will guide/influence the former. Unfortunately this means having to invest time and effort into doing the first bit and you may have to struggle with some unfamiliar tool knowing a shit editor is the only front-end to a backend reporting service.

    I would throw another consideration into the mix: a third issue is the ongoing maintanence of said report. Although you view it as a one-off, is there a possibility that others will also want reports, or that the recipient of said report will want changes in future? Perhaps there's some mileage in looking at Oracle Forms and Reports - but from anecdotal evidence it's a festering pile of rancid hedgehog shit.

    Have you investigated any open-sores reporting systems? Or do you prefer a .NET library and associated tools?



  • @Cassidy said:

    I use Crystal Reports.You can tap into the Oracle DB quite easily, produce a nicely-formatted report complete with graphs, summaries and highlighting to identify data of interest - all of which can be saved as PDF. The only issue is that it's a manual process; you'll need the Crystal server or Business Objects server to automate the report generation.
     

    I've come to hate Crystal Reports, but it comes with a .NET library, and you can use that to build your own automated report generation. It's not completely trivial, though.

    But there are quite a few report generators out there, each with their own advantages. And disadvantages. Your task doesn't sound too hard, so any one of them will probably do.

    About the one-off: usually it starts as a one-off. But remember, it's IT. We invented the WTF. Once there is one report, someone will come along and ask for another one, slightly different. Then a third one. A fourth. They'll all come to you. Then someone will get the idea that all users could compose and generate their own reports via a nice web interface. This task will be given to some moron, because it's a simple design. Guess how it ends and who can clean it up.

    And so the dailywtf.com acquires another steady contributor.



  • @TGV said:

    I've come to hate Crystal Reports
     

    Can I ask why as a matter of interest? I know it has quirks, but most people that struggle with it have often never been formally taught its capabilities (and foibles).  This thurs/fri I delivered a 2-day training course and those attending were quite surprised at its power and capabilities.

    @TGV said:

    About the one-off: usually it starts as a one-off...

    Amen that. On the course, I stressed the importance of configuration management and version control to aid long-term maintanence and documentation. I also got them to see overall service reporting as a project with stakeholders - but these people will be doing several reports for different people. That's not the situation dev3 is currently in, but we're all predicting it'll eventually take that direction.



  •  

     @Cassidy said:

     the importance of configuration management and version control to aid long-term maintanence and documentation. I also got them to see overall service reporting as a project with stakeholders - but ... it'll eventually take that direction.

     

    We do develop other intranet Applications, so I am guesing that soon, the scope will increase, and  this will go into our main app, as all of you have described. We have the other develoipment safeguards like Source control, documentation & developer Wiki. The problem I was having, was how to create a formatted reprot, when I have the information. I can see that Crystal reports and LaTeX has been sugested. I'll look into that.

    @PSWorx said:

    Btw, which programs did the guy who put together the report manually use? 

    Our Intranet App, has an option to download a excel file, and this contains the tabular data. After this, the person uses Microsoft Word, and edits the last report to put in new Values, and finally saves it both in pdf & docx format.

     

     

     



  • @dev3 said:

    Our Intranet App, has an option to download a excel file, and this contains the tabular data. After this, the person uses Microsoft Word, and edits the last report to put in new Values, and finally saves it both in pdf docx format.

    You could join 1998, write an Excel table-backed report, then write some VBA to connect to the intranet and download the data files and run the PDF exporter. OH YEAH!

    Or, you know, do something sane. But that would work. To be fair to Excel.



  • @Cassidy said:

    @TGV said:

    I've come to hate Crystal Reports
     

    Can I ask why as a matter of interest? I know it has quirks, but most people that struggle with it have often never been formally taught its capabilities (and foibles).  This thurs/fri I delivered a 2-day training course and those attending were quite surprised at its power and capabilities.

    @TGV said:

    About the one-off: usually it starts as a one-off...

    Amen that. On the course, I stressed the importance of configuration management and version control to aid long-term maintanence and documentation. I also got them to see overall service reporting as a project with stakeholders - but these people will be doing several reports for different people. That's not the situation dev3 is currently in, but we're all predicting it'll eventually take that direction.

     

    My experience with CR is a little outdated (about 4 years) but here are my reasons.

    • Slow (both to run and design)
    • .Net library is just a wrapper around COM objects
    • Slow (because, hey it's a COM wrapper)
    • DLL version HELL (if you happen to upgrade to the full version versus the one that is in Visual Studio, deployment is hell because the upgrade is of a different version)
    • Slow (because if you need if faster just run it on the CR enterprise server and spend more $)
    • Runtime deployment is 300MB, while the app that uses it comes in at 15MB
    • Slow (God, can this thing run any slower)
    • It's now owned by SAP
    • Slower yet (SAP will probably port the damn thing to ABAP just to make it more shitty and slower) 

    Now to answer the original question.  I would personally go with either MSSQL Reporting Services or if that is too much of a hassle, find a reporting tool like DevExpress Reports or ActiveReports and just create and executable that does the work and schedule it via task scheduler on a server.

     

     


  • ♿ (Parody)

    @lpope187 said:

    My experience with CR is a little outdated (about 4 years) but here are my reasons.

    • Slow (both to run and design)
    • .Net library is just a wrapper around COM objects
    • Slow (because, hey it's a COM wrapper)

    I've never used Crystal Reports, but can you explain why "a COM wrapper" or "COM objects" imply slow? Do you know what COM is?



  • >Slow (both to run and design)

    I'm not going to dispute this, but I've had people producing simple reports within 60 seconds (from creation to presentation) and more complex ones in around 3-5 mins. I have nothing else to compare them against, other than comments from Excel wizards and Access gurus that creating charts and graphs was much faster and simpler in CR, once we'd gone through graph creation.

    >.Net library is just a wrapper around COM objects

    Not too sure where this features. I didn't use .net with CR, so I can't comment upon this statement (basically because I don't understand it)

    >Slow (because, hey it's a COM wrapper)

    What is?

    >DLL version HELL (if you happen to upgrade to the full version versus the one that is in Visual Studio, deployment is hell because the upgrade is of a different version)

    Right... again, I don't know how Visual Studio features here. I've run the full versions of CR 8.5, 9 and 11 and in all occasions I've not had to deal with DLL hell. That doesn't mean it I don't believe it exists, just that I haven't encountered your bad experiences.

    >Slow (because if you need if faster just run it on the CR enterprise server and spend more $)

    Again, I didn't use the CR enterprise server, just CR Professional Edition[1]

    >Runtime deployment is 300MB, while the app that uses it comes in at 15MB

    Not fully certain what that means. I'll have to look at how big the app directories are, but I don't remember it being particularly bloated.[2]

    >Slow (God, can this thing run any slower)

    You keep saying that, but don't actually qualify what you mean by that. Report creation? Report presentation? Database access?[3]

    >It's now owned by SAP

    Okay, I'll give you that one. And Biz Objects didn't exactly champion it when it bought it from Seagate.

    >Slower yet (SAP will probably port the damn thing to ABAP just to make it more shitty and slower) 

    Requires expanding.

     

    Now, I'm not going to go rabid fanboi on CR - it has its faults, bugs and limitations - but most detractors often slate something that I've not encountered. The biggest haters tend to slate their unfamiliarity of the package (there are several places where it can easily bite your fingers) and cite unexpected behaviour; all those I've taught CR to have been amazed by its hidden capabilities and readily admit that nobody in their organisation seems to be using CR to its fullest extent.

    For my experiences, I've used it for small reports (say < 5000 rows) and for a few hundred rows I got near-instant results, for larger datasets there's a delay of a second or so whilst the report is being constructed - it's akin to hitting REFRESH on a fairly busy site and awaiting the web page to build. I know SSRS has much better deployment facilities, and I know CR is much easier and quicker than Oracle Forms/Reports and Business Objects, but I'm mindful that simpler/easier can also mean lightweight and unscalable when it comes to enterprisey tasks.

    [1] which is essentially the "Standard" edition. The "Standard Edition" should have been called "CR Lite".

    [2]  I do recall plenty of extraneous DB connectors and example templates that could have been dropped to tim the bloat

    [3] I'll concede that many people connect to tables and join them in CR which is shit. CR should point to views or SPs - leave the joining to the DB.

     



  • Humor fail, I guess.  You guys do realize when someone repeats the same thing over and over with some sarcastic and non-sensical statements, it's not meant to be 100% factual? Right?

    The reality is you really can't rewrite CR in ABAP because no one in there right mind would create the UI extensions necessary to create the client side part.  ABAP is basically as server side data processing language to create reports, bulk process data, etc not really what I would consider a full featured generic programming language suitable for UI work.  It's very similar to COBOL - in fact it's often describe as COBOL on steriods.  I mean I guess you could get something like Cobol.Net or RPG.Net, but then you should die in a fire.

    Now I've used CR since 2001 or so.  And it was what I would consider the best reporting tool on the market until about 2006 - 07. After that time, other solutions began to be on par or better than CR especially if you needed integration with .Net.  It might be better on the Java side - I'm a .Net developer so I've never played with the Java components.  I will say that the standalone report builder is not really bad, but running the created reports in the runtime is often slow.

    Now I suspect the underlying issue with performance on the .Net side is the fact that CR either doesn't know how to develop in .Net or did not want to spend the resources to write a "native" .Net solution.  Instead what they did was merely create .Net Interop wrappers around their existing COM objects.  That was probably the right call to get a solution out the door really quick, but they should have went back and developed a native solution.  If you don't write the wrappers correctly, you get performance problems, memory leaks and other issues.  Also realize the CR Merge Modules are/were about 75MB compressed and about 300MB expanded.  This puts the client side components on par with the entire .Net 3.5 SP1 Framework and just offers a reporting solution so there is a lot of bloat in there.  One of the areas I know they would have duplicated would be the data access components.  The .Net Interop wrapper call their C/C++ data access library rather than the .Net functions.  If they reengineered their solution, it might end up being competitive for embedded .Net applications.  Now maybe the have reengineered their .Net solution since I used it last - I normally uncheck that crap when I install Visual Studio.

     



  • @lpope187 said:

    Humor fail, I guess. 
     

    Close. Observation fail, too. I thought you were TGV responding to my question; now I realise you're someone else.

    @lpope187 said:

    Now I suspect the underlying issue with performance on the .Net side is the fact that CR either doesn't know how to develop in .Net or did not want to spend the resources to write a "native" .Net solution. 

    Both. It wasn't in BO's interests - they wanted to use CR as a front-end to their BO server and hoped its limitations would serve as a launchpad towards BO's other reporting tools. I've used some CRMs that contain an inbuild CR engine, but for what it did it was okay.

    I know it fails miserably at report deployment, just wasn't sure about .net integration etc (it's not something I had ever had to worry about).



  • Create report in .NET code and get it output to HTML file. Then anyone can look at it or print it to a PDF file. Simple!


Log in to reply