Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 397
  • Last Modified:

Crystal giving error when running report with complicated formula

I am trying to run a Crystal report that totals the number of records that don't have data in a specific field/table.  Because I'm looking for data lines that may not exist, I created a formula as a running total.  Earlier in the report I set the various NullValue variables to "Y".  If, after the details section, they are still "Y", then I know it didn't find a line with the data, so I increment the number of records by one.

The problem is I'm getting an error when I run the report, and, unlike other errors I've seen, this one isn't telling me what the error is, just that there's an error (see screenshot).  I tried creating a new formula to only call the below formula if the {table_add_detail.field_value} isn't null, but it seems to be calling the formula anyway.

Any ideas on what the error is, and how to fix it?
whileprintingrecords;
stringvar RDNullValue;
stringvar NullValueH;
stringvar NullValueP;
stringvar MDNullValueH;
stringvar MDNullValueP;
numbervar HRunning;
numbervar HNumRecs;
numbervar PRunning;
numbervar PNumRecs;
 
if isdate({table_add_detail.field_value}) then
(
if {table_add_detail.field_name}="REC DISPOS" and
cdate({table_add_detail.field_value})<={?DateRange} then
RDNullValue:="N"
);
if isdate({table_add_detail.field_value}) then
(
if {table_add_detail.field_name}="DT REQ SEC" and
cdate({table_add_detail.field_value})<={?DateRange} then
(if {table_add_detail_lob.field_value}="Commercial" then
NullValueH:="N" else
if {table_add_detail_lob.field_value}in["BT", "BC", "BP", "Blue Opt", "HCH", "P65", "FEP"] then
NullValueP:="N"
);
);
if {table_add_detail_lob.field_value}="Commercial" then
(HNumRecs:=HNumRecs+1;
HRunning:=HRunning+DateDiff("d", cdate({cme_detail.document_id}), {cme_detail.response_date}));
if {table_add_detail_lob.field_value}in["BT", "BC", "BP", "Blue Opt", "HCH", "P65", "FEP"] then
(PNumRecs:=PNumRecs+1;
PRunning:=PRunning+DateDiff("d", cdate({cme_detail.document_id}), {cme_detail.response_date}));
 
if isdate({table_add_detail.field_value}) then
(
if {table_add_detail.field_name}="DATE TO MD" and
cdate({table_add_detail.field_value})<={?DateRange} then
(if {table_add_detail_lob.field_value}="Commercial" then
MDNullValueH:="N" else
if {table_add_detail_lob.field_value}in["BT", "BC", "BP", "Blue Opt", "HCH", "P65", "FEP"] then
MDNullValueP:="N"
);
);

Open in new window

Crystal1.jpg
0
VistarTechnologies
Asked:
VistarTechnologies
  • 4
  • 3
  • 2
1 Solution
 
mlmccCommented:
How are you calling the formula?

Is the error when you run the report?

mlmcc
0
 
VistarTechnologiesAuthor Commented:
I am calling the formula with the below formula, located in the Details section:

whileprintingrecords;
if isnull({table_add_detail.field_value}) then
"A" else {@RunningTotal};

The error is when I run the report.  It spends some time, loads records, but gives the error before it prints anything.
0
 
mlmccCommented:
A formula must return a single data type.  Try

whileprintingrecords;
if isnull({table_add_detail.field_value}) then
0 else {@RunningTotal};

mlmcc
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
VistarTechnologiesAuthor Commented:
When I updated the formula as suggested, it gave me an error "A number is required here" and highlighted {@RunningTotal}, so I couldn't change it.  I then tried changing the RunningTotal formula to end with 0 so it would always return a number, which then allowed me to update the formula as suggested... however, running the report produced the same error.
0
 
mlmccCommented:
Sorry, your formula name confused me.  The character is correct.

Does the report work from the Crystal designer?

mlmcc
0
 
VistarTechnologiesAuthor Commented:
I'm not exactly sure what the Crystal designer is... is that somewhere in Crystal Reports?
0
 
James0628Commented:
Are you sure that {@RunningTotal} isn't being used anywhere else in the report?  If you want to make sure, when you look at the list of formulas in the field explorer in CR, does your version put check marks by the formulas that are being used?  If so, try removing the reference to {@RunningTotal} from the formula that calls it and see if there is still a check mark beside {@RunningTotal}.  If there is, it's being used somewhere else.

 If all else fails, you could add IsNull tests before the IsDate at the start of each if statement in {@RunningTotal}.  Something like:

if not IsNull ({table_add_detail.field_value}) and isdate({table_add_detail.field_value}) then


 I'd also suggest adding an IsNull test for {table_add_detail_lob.field_value}:

if not IsNull ({table_add_detail_lob.field_value}) and
 {table_add_detail_lob.field_value}="Commercial" then


 Or ...
 CR 10 has an option to replace incoming nulls with default values (an empty string for string fields and 0 for numeric fields).  If your version of CR has that option, and if you don't actually need the null values for some reason, you could try that option to just eliminate the nulls from the equation.  In CR 10, the option is under File > Report Options - "Convert Database NULL Values to Default".

 James
0
 
VistarTechnologiesAuthor Commented:
Replacing incoming nulls with default value solved issue.
0
 
James0628Commented:
Glad I could help.

 James
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 4
  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now