Archive for September, 2018



Updated comparison of Crystal Reports viewers (2018)

Tuesday 25 September 2018 @ 9:57 pm

You use Crystal Reports to create, change and run reports. But what if you have users who just need to refresh/view/print/export? Do they need copies of Crystal Reports? Do you need to configure an expensive web server?

The most cost effective method for letting a user run reports is to install a third-party client-based viewer. They are offered by nine different vendors.  Don’t get sidetracked by the official SAP “viewer” because that tool won’t refresh reports.  Every viewer in my list allows you to refresh reports.

Every September I update the features of these viewers. The comparison page provides a brief introduction to each product including what sets it apart. There is also a detailed feature matrix (xls) that shows some of the specifics for comparison, like prices. I have even included a glossary of features in case you aren’t familiar with the terminology.

There are 10 active products in this year’s review and 4 “ghost” products that are mentioned as warnings.  A ghost product has a web site but it hasn’t changed in years and no one responds to requests for information.

The active vendors are:

Crystal Corral by Groff Automation
rptView by Pursuit Technology
CR Dispatch by APB Reports
cView by Chelsea Technologies
ViewerFX by Origin Software
CrystalKiwi Viewer by CrystalKiwi
Logicity Pro by SaberLogic
Report Runner Viewer by Jeff-Net
RTag Report Viewer by RTag
DataLink Viewer by Millet SW

If you have feedback to provide on any of these products, I would love to know what you think.




Numbers that touch operator words

Friday 21 September 2018 @ 2:36 pm

I was shown an unusual formula today. It looked something like this:

if {Customer.Customer ID} = 14then 30else 0

Note the space missing between the numbers and the words THEN and ELSE. These two words didn’t turn blue so I figured they weren’t being recognized and would generate an error. Surprisingly, the formula saved without error and the number 30 showed up in the correct places. The reserved words were still being recognized correctly, even without the spaces.

I did some testing and found that any formula where a number is usually followed by a space and then an operator word will work the same without the space. I tested this in some older versions of Crystal and it worked the same at least as far back as Crystal v8.5 (2001).

The only reserved words I can think of that can follow a number are these operators: AND, OR, IN, TO, THEN, ELSE, MOD and DO.  These all behave the same way.  I can’t think of any functions that can directly follow a number. A space is still required if the number follows these words.

So if you ever find a formula like this and wonder how Crystal is handling the error, now you know.




Selection based on two different records in the same group

Sunday 16 September 2018 @ 8:38 am

I was visiting Tek-Tips.com today and found an interesting question to answer. A user was having trouble counting sales orders that had items with a certain comment. He wanted to group and count the occurrences by the item ordered. It sounded simple, but the item number was in an “item” record while the comment was on a separate “comment” record. When he filtered by the comment there would be no item numbers and if he grouped by item number the comments would be in a different group. He needed to get the two records into one record.

To solve a problem like this you need to add the sales order table to the report two separate times to create what is called a “self-referencing join”. The second time you add the table, Crystal will give the table a slightly different name (an alias) usually by adding _1 to the end of the table name. Then you treat the two instances as if they were two separate tables.  In this case you could think of the first table as the “item” instance and the second as the “comment” instance.  You link them based on the Sales Order and then add two filters, something like this:

{SalesOrder.LineType} = "Item" and
{SalesOrder_1.NComment} = "Your specific comment"

Note that the two rules above reference one field from each of the two table instances, bringing the two separate records together as one. From there you can group by item number (from the first table) and count the number of records within each group.  Here is a link to the tek-tips question which has a screen shot of the data.

Update 10/3/2018:

Doug Weiner at Beacon Legal Software reminded me to mention that you can always rename (change the alias) of any table used in a report.  Just go to the database expert and click on the table name, then right-click to get ‘rename’ or hit F2 on the keyboard.  You will be allowed to type any alias you want for that table.  This is especially helpful when you use the same table twice, so you can assign names that help you remember which instance is which.  These names are just for the report and don’t affect anything in the database.




Service Pack 3 for Crystal Reports 2016

Friday 7 September 2018 @ 11:39 am

I don’t usually rush to apply service packs (i.e. ‘if it ain’t broke…’). Usually the fixed items don’t apply to what I do. So when SAP notified me about SP3 for CR 2016 I was ready to ignore it for a while. But I read through the list of fixes anyway, just in case, and the second to last item was something useful. It corrects a scrolling bug in the formula editor so we can now use the mouse wheel to scroll up and down in long formulas. I decided to do the update right away since I write lots of long formulas.

But the update was a hassle. It starts with 5 minutes of extracting files and then immediately pops up a “Fatal” error:

“Fatal Error: At least one port in the range 4520-4539 must be opened for the installation to proceed. …”

So why would a service pack for a locally installed app require access to ports? After a few searches I found that this is a red herring error message. It also occurs on some full Crystal Reports installs. The keys to getting past this error on a full install are to:

1) Run the setup from the Root folder
2) Use “Run as an administrator”.

But the service pack is a self extracting compressed exe. Placing the exe in C:\ and running it as administrator didn’t solve the problem for me. What worked for me in both Win 10 and Win 8.1 was to:

1) Use an Unzip utility (e.g. 7zip) to extract the compressed files/folders into a new folder.
2) Put this new folder in C:\.
3) Run the Setup.exe in this folder as an administrator.

Even then there was another snag.  The install couldn’t finish because of a “suppressed reboot”:

“A reboot request was suppressed on the local machine.
Reboot the machine in order to proceed with the installation”

But it wasn’t clear how to do this. My only options were “retry” and “cancel”.  So I canceled, did a manual reboot and then ran the setup.exe a second time.  That allowed the SP to install and now I can scroll through my formulas.  It was just much more work than I expected.

Update 10/2/2018:

One of my readers just pointed out their own blog post about installing CR 2016 and having the same exact issues.   Had I seen that post when writing this one my post would have been a link to his.





Recrystallize Pro