I'm pulling data from two classes via subreports to do the calculation for my table and chart. I'll give you the current year setup...
Top level report:
{@currentYear} - if {table.DateEntered} >= date(year(currentdate),01,01) then
1
else
0
{@CYA) - shared stringvar currentYA := currentYA & Sum ({@currentYear}, {@month}) & "^"
1st subreport:
{@sub1_currentYear) - if {@dateYear} >= date(year(currentdate),01,01) then
{table2.Raw} + {table2.Over}
else
0
{@sub2_CYA} - shared stringvar sub1_YrC := sub1_YrC & Sum ({@sub1_currentYear}, {table2.Month}) & "^"
2nd subreport (shows table):
{@CALC_currentYear} - whileprintingrecords;
shared stringvar currentYA;
local stringvar temp1 := Left(currentYA, len(currentYA)-1);
toNumber(split(temp1,"^")[groupnumber]);
{@CALC_currentYear_sub1} - whileprintingrecords;
shared stringvar sub1_YrC;
local stringvar temp1 := Left(sub1_YrC, len(sub1_YrC)-1);
toNumber(split(temp1,"^")[groupnumber]);
{@CALC_currentYear_calculation} - if {@CALC_currentYear_sub1} = 0 or {@CALC_currentYear} = 0 then 0 else
{@CALC_currentYear_sub1} / {@CALC_currentYear}
{@CALC_currentYear_export} - shared stringvar Per_Unit_CYA := Per_Unit_CYA & {@CALC_currentYear_calculation} & "^"
3rd subreport (shows chart):
{@CHART_CYA_Per_Unit} - whileprintingrecords;
shared stringvar Per_Unit_CYA;
local stringvar temp1 := Left(Per_Unit_CYA, len(Per_Unit_CYA)-1);
tonumber(split(temp1,"^")[groupnumber]);
To surpress the incomplete month from the table and chart subreports, I'm using the following in my record selection - local datevar endDate;
IF month(currentdate) in [1,2,3] then
endDate := date(year(currentdate)-1,12,31)
else
if month(currentdate) in [4,5,6] then
endDate := date(year(currentdate),3,31)
else
if month(currentdate) in [7,8,9] then
endDate := date(year(currentdate),6,30)
else
if month(currentdate) in [10,11,12] then
endDate := date(year(currentdate),9,30);
{table2.DateEntered} >= Date (Year(currentdate)-3, 01, 01) and {table2.DateEntered} <= endDate