Using Script functions on aggregate functions

Hi,

I need help on the following issue :

I have a data band with 3 elements such as : a GroupHeader, a MasterData and a GroupFooter.

The MasterData uses a dataset containing multiple entries. One of the fields is a duration in seconds. As this this duration is unreadable, I made a small function in the script (made in Pascalscript). This function takes the duration as a parameter and does a series of calculations to return a more readable string.

Using this function in a memo in the MasterData, the duration is converted on the fly and works as expected.

About the GroupFooter, it is used to display aggregated data of these multiple durations.

However, I cannot use this function in the GroupFooter as one of the memos contains the sum of the fields (duration) mentionned above. So I have something looking like this : [secondsToFormatedDuration([SUM(<groupOfData."duration", MasterData1)])]. As the SUM() function returns an Array Variant object, I am unable to convert it to an integer in order to use it as a parameter for the secondsToFormatedDuration() function. In the pascalscript code, nothing has succeeded to either convert it by using a cast, or using methods of the variant. Maybe this is not the way to do it? How can I still format the duration amount to a human readable format for the entries and the aggregate?


What am I missing on?

example of the script :

function secondsToFormatedDuration( sec : integer ) : String;
var
      h,m,s : integer;
      str : String;
begin
      h := sec div 3600;
      m := (sec mod 3600) div 60;
      s := sec mod 60;
      str := Format('%.2d:%.2d:%.2d', [h,m,s]);
      result := str;
end;

Main page structure :

The value that works : (third column of the MasterData)

[secondsToFormatedDuration(<getAllStateTopsBetweenDates."topdurationfield">)]

The value that doesnt work : (third column of the GroupFooter)

[secondsToFormatedDuration([SUM(<getAllStateTopsBetweenDates."topdurationfield">,MasterData1)])]

Comments

  • Found the issue, as I wrote above, for whatever reason the SUM function returns a Array of variant instead of a variant. Using the first element of the array (duration[0]) returns the integer.

Leave a Comment