I need to create a couple of reports, invoices, credit reports, etc...
My question is: How/what is the best way to go about this using
VB2005 / SQL Server 2000
Crystal Reports? MS Reporting? Home brew using print document?
(Program to be distributed thoughout this office and possibly to a few
other organizations that have expressed an interest).
I've taken a couple of stabs at this and either this is more
complicated that it should be, or I'm oblivious to it's simplicity.
ie, trying to get either of these to print a phone number stored as
5555555555 to print as (555) 555-5555 eludes me. If there is a simple
way to do this, I just can't figure it out.
Crystal Reports has tons of bad rap in the newsgroups for being over
bloated and riddled with bugs and nuances. Conjecture, or the best
tool for the job?
The first question you have to ask yourself is: what is the .NET code
going to do in all of this? Let me outline two scenarios.
Scenario 1: Your .NET code get some data from "somewhere", maybe asks
the user some questions, does some sophisticated computing, and
produces data _on the fly_ that then must be formatted into a report.
Admittedly, an unlikely scenario for something as bland as an invoice.
Call this a "push" scenario. Probably not your case.
Scneario 2: The data is in SQL Server. The .NET code is just to make
the report happen. The report itself is free to pull the data from SQL
Server and do whatever formatting is necessary in order to produce the
report. Call this a "pull" scenario.
If your situation is a "pull" (scenario 2) then I would definitely
investigate SQL Reporting Services first and foremost. I've done some
brief fiddling with it from .NET and once you have the basics figured
out it should be smooth sailing. However, SQL Reporting Services
practically requires a "pull" model: you define the report, put it on
SQL Server, and then the report is responsible for doing the SQL
queries necessary to gather the data. The only data your app gets to
"send" to the report is report arguments... so, a few simple values.
In my company, we're stuck with doing a "push": the application
produces the data on the fly. The report can't pull the data from a
database because the data is never in a database. In a case like this,
SQL Reporting Services "isn't there yet," although if they get this
working I'll be jumping on board.
Instead, we use Crystal. Yes, it has a bad rap, and if you want to do
anything with dynamic images (product catalogs, etc) or with fancy
printer wrangling (selecting input trays, output trays, etc) then
Crystal sucks the big one. However, if all you want is to lay up some
text on a page, and your company is flexible about format (so you can
adapt your format to avoid things that Crystal does particularly badly,
like vertical lines separating columns of text), then it works just
fine. We use it constantly and the only person going nuts is me: I sort
the bugs out beforehand and the users have no problems.
I've heard that Active Reports is also a good package.
So... if you can get away with a "pull", look into SQL Reporting
Services.
If you're stuck with a "push", look into Active Reports, and don't
discount Crystal for doing simple stuff; it's not all _that_ buggy.