Question
“How do I make a calculation based on a total (such as a percentage) inside a report using a look ahead value?”
Solution
Retrieve the look ahead value using the DBCalc.GetLookAheadValue routine and convert it to a numerical type. Then use this value in a new calculation elsewhere in the report.
Download: CalcUsingLookAheadValue.zip
CalcUsingLookAheadValuesRAP.zip
Sample Delphi code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function TForm1.GetLookAheadTotal: Variant; var lsTotal: String; begin {retrieve the look ahead total and convert from Text to Float value. note: the lookahead values are cached as Strings. The content of the string is exactly what is rendered to the page. Therefore it is a formatted value } lsTotal := ppDBCalc1.GetLookAheadValue(ppDBCalc1.GetLookAheadKey); lsTotal := StringReplace(lsTotal, CurrencyString, '', [rfReplaceAll]); lsTotal := StringReplace(lsTotal, ThousandSeparator, '', [rfReplaceAll]); Result := StrToFloat(lsTotal); end; procedure TForm1.ppVariable1Calc(Sender: TObject; var Value: Variant); begin {use look ahead total to calc the percentage for this order} if ppReport1.SecondPass then Value := (ppDBPipeline1['ItemsTotal'] / GetLookAheadTotal) * 100; end; |