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

x
?
Solved

Passing shared variable from subreport back to main

Posted on 2013-11-17
10
Medium Priority
?
813 Views
Last Modified: 2013-11-19
I have a main report running several sub reports.  I would like the value of a sum field (actually a sum of a formula field) calculated in the sub report to be passed back to the main for use in another formula in the main.

In main I have a formula field called subtotal_percap

WhilePrintingRecords;
Shared NumberVar subtotal_percap;
 
In the sub I have the identically named formula field,

WhilePrintingRecords;
Shared NumberVar subtotal_percap;
subtotal_percap := 99.99;

I have tried a few things, including this last line - 99.99, just to see if the 99.99 can get passed back to main, and it doesn't.   I'd actually prefer to have the sum field passed back to main.    The sum field I'd like to use is

Sum ({@sum_by_status})


Based on what I saw in other postings here on EE, it looks like I'm doing this right, but @subtotal_percap  on the main doesn't show 99.99, it just shows 0.00.

What am I doing wrong?  And, what would be the correct syntax to capture the
Sum ({@sum_by_status}) in the shared variable for passing?
 

thanks

dave
0
Comment
Question by:fhcdaver
  • 5
  • 4
10 Comments
 
LVL 101

Accepted Solution

by:
mlmcc earned 1600 total points
ID: 39655216
The subreport is the last thing evaluated in a section so if the subreport is inthe same section with the formula in the main report, the main report formula is evaluated then the subreport is called.  

Try this

in the Main report add a formula to the report header.

WhilePrintingRecords;
Shared NumberVar subtotal_percap;
""

In the subreport use your formula
WhilePrintingRecords;
Shared NumberVar subtotal_percap;
subtotal_percap := 99.99;

or the one you really want
WhilePrintingRecords;
Shared NumberVar subtotal_percap;
subtotal_percap := Sum ({@sum_by_status});


in the main report in a section after the subreport use your formula
WhilePrintingRecords;
Shared NumberVar subtotal_percap;
subtotal_percap

If you need to dislay the value in the same section then
1.  Have the subreport display it
2.  Insert a section below the subreport section and disply it there
3.  Insert a section below the subeport and move everything from the main report section other than the subreport to the new section

mlmcc
0
 

Author Comment

by:fhcdaver
ID: 39655259
OK I will try that.  
In the report header, then, I would have a formula field called "@dummy" or something equivalent. Then in the main, in a section following the sub, I'd reference another formula field, maybe named "@the_real_thing".  Both formula fields can reference the same shared variable?  


additonally, to elaborate a bit:
The report has several detail sections (detail a, detail b, etc).   This sub report is in detail b.
You're suggesting that I put @the_real_thing perhaps in detail c?
0
 
LVL 101

Expert Comment

by:mlmcc
ID: 39655315
That is correct if you want it displayed in the detail section

mlmcc
0
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.

 

Author Comment

by:fhcdaver
ID: 39656777
Hi,

almost there.   I can see the 99.99 in a subsequent detail section.

When I use this in my subreport

WhilePrintingRecords;
Shared NumberVar subtotal_percap;
subtotal_percap := Sum ({@sum_by_status});

crystal complains and says "a number is required here. "
0
 
LVL 101

Expert Comment

by:mlmcc
ID: 39657587
What is the formula @sum_by_status - by its name it should be a number but it could be anything

mlmcc
0
 

Author Comment

by:fhcdaver
ID: 39657764
It is a report footer sum of a currency field.
0
 
LVL 101

Expert Comment

by:mlmcc
ID: 39657883
Crystal will not do any automatic type conversion.  I know to use a Currency value looks like a number but it is a different data type

Try this formula

WhilePrintingRecords;
Shared CurrencyVar  subtotal_percap;
subtotal_percap := Sum ({@sum_by_status});

Open in new window


Note the change in type to CurrencyVar

mlmcc
0
 
LVL 35

Assisted Solution

by:James0628
James0628 earned 400 total points
ID: 39659038
If you change the variable type to currency, you'll need to change it in every formula that uses that variable, in the main report and the subreport.

 Unless you really need the summary to be the currency data type, it might be easier to just convert the currency summary to a number:

WhilePrintingRecords;
Shared NumberVar subtotal_percap;
subtotal_percap := ToNumber (Sum ({@sum_by_status}))


 James
0
 

Author Comment

by:fhcdaver
ID: 39660709
Thanks mlmcc and James.  you both hit  it.    

What I did was in the sub report I added the ToNumber function as James suggested.    So it became a number when it was passed back "up" to the main report.  

(p.s.:  mlmcc, I see your byline everywhere  here in EE when to comes to Crystal.  Very cool. )
0
 

Author Closing Comment

by:fhcdaver
ID: 39660717
Shared effort, shared solution.   thanks to you both.
0

Featured Post

Vote for the Most Valuable Expert

It’s time to recognize experts that go above and beyond with helpful solutions and engagement on site. Choose from the top experts in the Hall of Fame or on the right rail of your favorite topic page. Look for the blue “Nominate” button on their profile to vote.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Crystal Reports: 5 Tests for Top Performance It is complete, your masterpiece report.  Not only does it meet your customer’s expectations, it blows them out the water, all they want is beautifully summarised and displayed in a myriad of ways. …
There have always been a lot of questions related to when Crystal Reports evaluates report components (such as formulas, summaries, cross-tabs, charts, to name a few examples). Crystal Reports uses a two-pass reporting process to provide greater …
Integration Management Part 2
When cloud platforms entered the scene, users and companies jumped on board to take advantage of the many benefits, like the ability to work and connect with company information from various locations. What many didn't foresee was the increased risk…
Suggested Courses
Course of the Month7 days, 19 hours left to enroll

824 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question