• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 862
  • Last Modified:

Passing shared variable from subreport back to main

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
fhcdaver
Asked:
fhcdaver
  • 5
  • 4
2 Solutions
 
mlmccCommented:
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
 
fhcdaverpresidentAuthor Commented:
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
 
mlmccCommented:
That is correct if you want it displayed in the detail section

mlmcc
0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
fhcdaverpresidentAuthor Commented:
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
 
mlmccCommented:
What is the formula @sum_by_status - by its name it should be a number but it could be anything

mlmcc
0
 
fhcdaverpresidentAuthor Commented:
It is a report footer sum of a currency field.
0
 
mlmccCommented:
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
 
James0628Commented:
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
 
fhcdaverpresidentAuthor Commented:
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
 
fhcdaverpresidentAuthor Commented:
Shared effort, shared solution.   thanks to you both.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

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