Our company develops a Point-of-Sale application. It is developed in Clarion for Windows. Clarion has its own database format and reporting engine for compiling built in reports and provides some programmatic options for inserting code during ANY of the report rendering process. This however only allows our developers to make layouts/design/logic for these reports. There is also a product called Clarion Report Writer which is an AFTER MARKET report design tool primarily for TPS database files (Clarion's database format). This allows us to have our customer design their own reports but without any logic besides filtering, sorting and basic prompting. It was also an extra fee ($300/per license) to our customers and a separate product which provided almost no integration into our application besides the ability to call a report designed in Report writer from our software.
A 3rd party developer made a simple report designer for clarion that would allow us to pump information into the designer as we'd like users to see it (pre-formatted data and fields) and would allow us to provide a basic designer for some of our more "static" reports. It was FULL of bugs and would allow us to add/remove/move fields, but there was almost no logic/sorting/filtering. This was all provided by our program's logic which could not be changed by the end-user. On top of that this solution was ONLY for TPS databases. We soon realized that the TPS database limited us in regards to the tools we could use. There was an ODBC driver for TPS but this is licensed per computer and is an extra $199. The ODBC would open us up to tools like MS-ACCESS, Crystal Reports, and other solutions but it was finicky and could be extremely slow. We finally made the switch to SQL Server with our software. Which meant that we could no provide our Crappy little built-in report designer which was built only for TPS files. Although Clarion's Compiler could be used this provided no designer to our end-users. Clarion Report Writer worked but was still very unfriendly and lacking features.
One of our software dealers suggested we take a serious look at Crystal Reports. We purchased the developer's kit and found it easy enough to use for basic reports and easy enough to call for printing but there was no run-time designer. They in fact used to provide one but it was long gone and although you could sometimes find someone willing to let you dig into their old dev kit and use the designer, this wasn't exactly in keeping with the license agreement. As a report designer, Crystal would let us design against one database. Provide decent filtering, sorting and logic and then allow us to save the report, drop it into ANY environment with the same database schema, provide connection information and easily run the report. This could also all be done using their Developer API. We quickly provided support for adding and printing crystal report in our application. However, we were STILL lacking a run-time designer.
Our requirements were simple and it seemed like (besides the designer) crystal reports had our needs pegged. We needed a report engine that would deploy as an API in our software, it would provide a facility to for us to dynamically add reports to our software, provide connection information, preview reports, and print them. We also needed a way to have our program give a set of data to the reporting engine (for those cases where our program would need to do EXTENSIVE prep-work and logic on the data. If all of this were provided, we would be willing to fore-go the run-time designer and either resell a designer at an added cost or have our user go buy a designer (like Crystal Reports), granted it could open existing reports from our application and allow our end-users to "customize" them. A super plus for us was the ability to customize how and where these reports were saved. We were now using a central SQL Server and it would be best if the reports could be stored INSIDE the SQL Database. This meant that if a USER at Workstation 1 made or customized a report that users at all the other Workstations would be able to see these report changes. Also this all had to be done and licensed as a royalty-free API that we would purchase once (or at least maintain a subscription to) and be allowed to distribute for free. We have demo and free versions of our software and if we had to pay a royalty it would KILL us.
Crystal was almost there but not quite. Small and compact API which was straight forward. Licensing was great. However there was no way to pump custom data to it. It didn't have the run-time designer. We couldn't customize where it stored reports. Plus as far as support and features go, Crystal has a TERRIBLE reputation in the reporting community. With all of this WE WERE SO SUPER CLOSE to rewriting major portions of our program to support only crystal reports. We could find a way around the features it was lacking but some MAJOR work would have to be done. Our invoice layout is actually 4 reports in one. Using logic in our program we pump the correct data into the layout depending on whether it is an INVOICE, ORDER, SERVICE ORDER or LAYAWAY. The layouts are all the same (with minor hiding and formatting) but the data comes from different places depending on the type of INVOICE that is being printed. Crystal had NO WAY of handling this and it was a major undertaking that would have to be solved. We kept pushing it off until a Software Dealer (the same one that suggested Crystal Reports) suggested we look at Synaptris Inc.
Synaptris had a great stand alone application for analyzing data and writing reports. There Flagship desktop product was $500 per computer. However that gave you everything for designing reports and doing "Advanced Data Analysis" which amounted to an SQL Query Editor on steroids with a great query builder, great aggregating, and charting on the fly. Their report engine was the same old thing. Provided almost exactly what Crystal did. Their basic report viewer was "$99 per computer". This was just to take a report that was already created and view it or print it. Their API was a COM Component (YUCK!!!). I will get into how much I hate COM in another rant. The API only allowed you to specify a report file and preview or print it. hmmmm... I asked them "How do I provide connection information? I want to design a report and they deploy it to my end-users or with my software." They were baffled. "Connection information is part of the report design. We will need to have our programmers customize the API for your needs. How many users do you have? How much do you deploy?" After Major back and forth explaining, it turns out they wanted each and every workstation that might run our point-of-sale to pay them $99 (which they would discount based on how much deployment we had). This included anyone currently using our software and upgrading to a version with their report engine in it. I fought with them tooth and nail on this. Told them that we need a licensing model like Crystal Reports had. I figured that would get them because they even said that Crystal Reports is their biggest competitor. They basically were looking to make $100,000 off of us initially. We even offered to deploy only their viewer and then offer the $500 designer as an upgrade. Nothing. It was simple to see that Synaptris Inc. had NEVER worked with developers which is where at least 75% of the reporting industry's users are at.
During this "negotiation" we went on an all out search for reporting solutions. After a ton of searching we found Stimulsoft (you guys are not easy to find). IT WAS EVERYTHING IN THE WORLD WE WANTED!!!! We pulled up our C# compiler and quickly made an example designer. We were able to provide predefined connection information to the designer from our software for the design process (this keeps users from wondering how to connect to the data). For our more complex reports we are able to pump XML data directly to the designer/engine for highly customized data and lightening quick processing. We can customize EVERYTHING about the designer and previewer. We are able to hook the load and save routines and provide saving to the SQL Server as an option. We are able to provide predefined variables depending on the TYPE of report a person is creating/customizing which allows our program to automatically fill in values which otherwise would require a prompt (date ranges, product categories, Etc). There is Barcode and Label support (which we were using yet another product (List and Label) to provide). There are charts. And the logic we can provide on top of the logic an end-user/report designer can provide make this the most powerful reporting tool we have EVER come across. In fact we will definitely be buying another license for our other developer. Each time I present this tool to our team and have them play with what I've created, we are all more and more impressed with it. I haven't even completely finished the integration with our Point-of-sale application or started moving our current reports into it but it is the best there is. From one developer to another you guys must do nothing except program because this API/Program is light years ahead of everyone else.
A little closer about those Synaptris guys. We went to them and said "Look at Stimulsoft's offering. This is EXACTLY what we are looking for!" and they tried to tell us that each of our users would be paying $800 for your solution and only $99 for theirs. They have NO CLUE what developers need. Stimulsoft is all about the developer. That's where they need to be and so far we have been more than impressed with their service and their product.
John Hamilton
POSitive Software Company