Archive for November, 2013

Limitations in the Crystal Reports .NET runtime

Friday 29 November 2013 @ 10:36 am

I am not sure how many of you will have use for this info, but I have one customer who ran into an unknown limitation in the Crystal Reports API (.NET). He was using FindItEZ to track changes in a very large and complex report. The report had one section divided into over 400 subsections and certain subsections weren’t being identified correctly. Instead they were repeating as “phantom” duplicates. So the team at FindItEZ did some testing and Ken Gnazdowsky reported what they considered a bug in the .NET API.

But, after some discussions with SAP they were told that the .NET API can only keep track of 104 subsections in any one of the 7 major sections:

Report Header/Report Footer
Group Header/Footer
Page Header/Page Footer

So if you go past 104 in any one section (past subsection label ‘cz’) then the API loses the Continue Reading »
Limitations in the Crystal Reports .NET runtime

Crystal Reports 2013

Thursday 21 November 2013 @ 10:32 pm

I have been asked a couple of times this week about Crystal Reports 2013, so I guess it is time to post something.  Personally, I have not upgraded since CR CR 2008 (v12).  When CR 2011 (v14) came out a couple of years ago, I downloaded the trial and found that it was virtually identical to what I had.  There were 3 new features that I mentioned in my blog, but none of these were worth the cost of the upgrade to me. SAP also made it clear that they do not plan to develop new features for the standalone version of CR. They are devoting their energies to the version of CR that is embedded into Business Objects Enterprise.

So when SAP released CR 2013 I wasn’t expecting many changes.  In fact I am not aware of any changes.  And since SAP is describing this as a ‘rebranding’ of the product as opposed to an upgrade, I don’t think I will spend much time looking for new features.  One clue is that CR 2013 is version 14.1 while CR 2011 was version 14.0.  If anyone finds any new features in CR 2013, please let me know.

Crystal Reports formula function libraries (2013 update)

Sunday 17 November 2013 @ 3:24 pm

It is time for my annual comparison of formula function libraries. If you aren’t familiar with User Function Libraries (or UFLs) they are DLL files that add new formula functions to your Crystal Reports formula editor. With these functions your formulas can do some pretty amazing things like:

1) Carry values from today’s report to tomorrow’s report
2) Carry values from one report to another.
3) Append lines of text to an external text file.
4) Automatically copy a value to the clipboard.
5) Check the user name of the user running the report.
6) See if a file or folder exists (on your network or on the internet).
7) Rename/copy/delete a file on your hard drive or network drive.
8) Launch an application or run a batch file.
9) Execute a SQL statement (Select/Insert/Delete).
10) Send an Email using information in the report.
11) Create a table of contents or an index for your report.
12) Calculate distances between zip codes or long./lat. coordinates.

If this sounds interesting you can read my complete comparison including a list of all the functions provided by each DLL. The five UFL providers are:

Bjarke Viksoe (U2lwin32)
Maginus Software (CRUFLMAG)
Millet Software (CUT Light)
Chelsea Tech (File Mgt, Text, Share and others)
CrystalKiwi (Export, Table of Contents)

The only vendor that has reported changes since last year is Millet Software. Ido Millet has added a handful of new functions to CUT Light. You will find these highlighted in the matrix. If you need help deploying one of these functions in a project let me know.

Adding an index based on a cross-tab

Friday 8 November 2013 @ 12:18 pm

Jamie Wiseman, one of the SAP bloggers, wrote up a clever way to create an index using a cross-tab and using the ‘Display String’ property. It uses some fairly complex formulas but I was surprised that he didn’t use any arrays. Instead he used a very long string of characters. By using the InStr() function to find the matching entry and page number he avoided the complexity of looping through arrays. Not simple, but simpler.

The second part of the post has to do with creating hyperlinks to take you to the index pages, but this only works if you are publishing this to CR Server or BOE. Still the index idea is pretty clever.

Recrystallize Pro