Database access is done through Rave's advanced Data Connection System. Rave can print any data that is accessible to your Delphi or C++Builder application and can even be used to print non-database data such as memory arrays or record structure files using the TRPCustomConnection component. You create a data connection by hooking a data connection component, such as TRPDataSetConnection, to a TTable component (TQuery, TClientDataSet and 3rd party dataset descendants are also supported) and giving it a unique connection name. Then, in your report project, you create a data view with that same connection name and you're all set. Now when you execute a visually created report, it goes through the data connection component and accesses your data from your application. One very unique feature of Rave's data connection system is it's ability to run reports from data connections that are not even in the same application. So if you are creating an accounting system with separate General Ledger, Payroll, A/R and A/P executables, you could create reports that access and join data from each module.
Another important aspect of Rave's data connection system is it's efficiency in the way it accesses your data. Many advanced reporting options such as Rave's KeepBodyTogether or Orphan control properties require quite a bit of backpedalling when the data won't fit on the current page. Most other reporting tools use database features such as bookmarks to backtrack through the table and end up reading the same data from the database again and again. Rave uses an advanced buffering system so that as far as your database is concerned, Rave only reads from the first record to the last in one continuous motion. This is especially useful if you happen to be reading data from a source that doesn't have bookmark support such as memory arrays or record structure files. Rave's buffering system also solves a rare but dangerous problem that haunts other reporting systems. If a change is posted to the data that the report is backtracking through, the report may not be able to resolve the differences or even worse may print incomplete or incorrect data. Fortunately this is not a problem with Rave.
|Prev - End User Functionality||Back to Feature List||Next - Ranting and Raving with Rave|