crystal reports viewers, crystal reports schedulers, view crystal reports, report analyzers, burst reporting, report scheduler
 
view crystal reports, rpt viewer, crystal reports viewers, crystal reports schedulers, report analyzers, burst reporting, report scheduler
desktop viewer, crystal reports viewers, crystal reports schedulers, report analyzers, burst reporting, report scheduler

Crystal Reports Tools: Improve Performance While Saving Time and Money

  Resources  
Best sellers:
cView
Report Analyzer
cViewSERVER
ReCrystallize
 


Articles:
Administration
Advanced
Basic
Crystal eNL
Database
Financial
Problems Solved

Books:
CR Books

Database Books
Developer Books

 
Tools:
Analyzers
Bestsellers

CR Schedulers
CR UFLs
CR Viewers
DataBase Tools
Graphics
International
Mail UFLs
ReCrystallizePro


Add'l:

About us

Contact Us
cViewSUITE Ppt
Support

 

CrystalReports
on Steroids

Crystal Reports: Tracking Reports

 

How to track how many reports have been running and when

The question on Tech Tips asked how to keep track of when reports had been running and how many. While some viewers and schedulers do keep an audit trail of this, that approach assumes everyone uses the same delivery mechanism. We have a simple solution for this problem.

You need a mechanism to save some data every time the report is refreshed. We would recommend you use a formula with our Share User Function Library could maintain a share file for each report.

For instance, each time the report is run, data is passed to a simple XML file which you can view later.

A sample formula would look like:

WhilePrintingRecords;

ShareTagLoad ("c:\Test\CR10\Audit.xml");

Local numbervar Rcount :=Val(ShareTagFetchValueByTag ("UserCount")) + 1;

ShareTagStore ("UserCount", totext(RCount,0,"",""));

ShareTagStore ("MostRecentRun",

ToText(CurrentDateTime,"dd-MMM-yyyy HH:mm"));

ShareTagSave ("c:\Test\CR10\Audit.xml");

A variation on this could keep track of how many people had been running the report each day:

WhilePrintingRecords;

ShareTagLoad ("c:\Test\CR10\Audit.xml");

Local NumberVar Rcount :=Val(ShareTagFetchValueByTag;

"UserCount-" + ToText(CurrentDateTime,"dd-MMM-yyyy"))) + 1;

ShareTagStore ("UserCount-" +

ToText(CurrentDateTime,"dd-MMM-yyyy"), totext(RCount,0,"",""));

ShareTagSave ("c:\Test\CR10\Audit.xml");

An extension to this would be if you had access to the UserID, you could report on who is running the reports, although that is often not available. If you download our ShareUFL trial, once you install it, you can try our sample report.

 

This article is copyrighted by Crystalkeen, Mindconnection, and Chelsea Technologies Ltd. It may be freely copied and distributed as long as the original copyright is displayed and no modifications are made to this material. Extracts are permitted. The names Crystal Reports and Seagate Info are trademarks owned by Business Objects.

 

About the Share UFL

The Share User Function Library is a Crystal Reports User Function Library that lets you save and retrieve data between reports. This allows you to perform some otherwise impossible tasks with Crystal Reports and improve overall report performance.

 

How often have you wanted to take a value from one report and use it in a second report? Now you can.

  • Use the ShareTagSave function in one report to save the data in a "Share File".
  • Then in another report use the ShareTagFetch to use that value in your new report.

A couple of neat tricks:

  1. The Share UFL can vastly improve Crystal Reports performance. For example, when using a subreport in the details section to calculate a summary from a large transaction table for the product in that section, the Share UFL can let you run the subreport only once instead of several thousand times.
  2. When you need to carry a balance forward from one Crystal Report to another, the Share UFL enables you to do that.

And, there are many more ways to use the Share UFL to put your Crystal Reports system on steroids.

Share data values between Crystal Reports with Share UFL

We have received requests in the past asking how to use value from one report in a second report. The usual answer is to repeat the database processing in a subreport inside the second report. This is highly inefficient of course, and hits major limitations if there are values needed from more than one report in a later report.

Another solution to this is to calculate the totals in some summary tables, and use them there. That's fine if SQL functions will do what you want, but the values could be more complex than some simple SQL functions.

In the past, we made this possible via using our Disk Output Library and Text Lookup User Function Library: write the values to a disk file using the DiskLinesEntry function, and retrieve it with the TextLookupCell function.

We decided to combine these into an easy-to-use User Function Library that you can access under "Functions" in your Formula Explorer. The result is the Share UFL. To use this powerful tool, you create a Share file and a tag for the value you want to save with the ShareTagStore function:

WhilePrintingRecords; ShareTagStore(c:\Reports\Data\Finance.xml,
Balance, ToText(Sum({Table.Amount}));

Retrieve the value in another report with:

WhilePrintingRecords;
ShareTagFetch(c:\Reports\Data\Finance.xml,Balance)

You can use multiple Share files in one report, and in the full version up to 1000 different tags for the values you want to save.