posts - 250,  comments - 58,  trackbacks - 5053

I'm currently working on a point of sales system for my mother-in-law.  She owns a small flower shop near the University of Michigan.  In doing so I've come across the need for a decent reporting engine to generate a few small reports, but most importantly the receipts. 

I started by rolling my own and using GDI+ to draw to the printer.  This was time consuming and difficult to change.  I'm sure I could make it a lot better, but it would take a lot of time.  I decided that I should look at some of the reporting packages out there. I looked at 3 different packages; Active Reports, SQL 2000 Reporting Services, and Crystal Reports.Net (the version that comes with Visual Studio).  Here's what I think:

SQL 2000 Reporting Services:

This started out promising.  The integration with visual studio was equal to the others, and designing simple reports was easy. Where SQLRS fell down for me was that it is completely based around web services.  I think that's great for when you want to build distributed reporting systems, but I just need to create receipts and a few small reports.  that means SQLRS is out.

Active Reports:

I like active reports.  The .NET integration is nice.  It's easy to use and create simple reports.  It's also easy to embed these reports into an application.  The only downside I found to AR is that you can't bind to objects.  I'm the kind of guy who much prefers building my own objects then using typed datasets.  I could write another blog post on that (I might), so I'll leave it at that for now. OK I lied... there's one other downside to AR... it costs more that the free CrystalReports.Net version that comes with visual studio.

CrystalReports.Net:

This is the package that I ultimately decided upon.  This decision was solely based on price.  I'm building this project with no budget, and the whole free thing is very attractive.  It terms of it's functionality, from what I could tell it works mostly like Active Reports.  One piece that I don't like is, it seems that you cannot bind to just a vanilla data table.  With Active Reports I could set a data table as my data source and define the data member on the field in the report.  This resulted in a loosely coupled relationship between the data and the report (it's still not an object like I want, but better).  With Crystal you have to use a typed data set.  That means, for someone like me, that I have to create a typed dataset just for the report.  So if I keep all my data in objects, I have to move that data into a typed data set to send to the report.  That seems like a lot of work to generate a report... why can't I just give the report an object and defined the data members in the report?

So as I said, I picked CrystalReports.Net based on price, but none of the packages worked exactly how I would like.  Maybe I should create an open source reporting engine. 

posted on Thursday, August 19, 2004 11:16 PM
Post a new comment about this topic
Title  
Name  
Url

Comments   

Enter the code you see: