anchor.diff:      FFieldName : string;
       FDataType : TFieldType;
       FOperationKind : TmGroupByOperationKind;
  +    FFormula : String;
     public
       constructor Create;
   
       property FieldName : string read FFieldName write FFieldName;
       property DataType : TFieldType read FDataType write FDataType;
       property OperationKind : TmGroupByOperationKind read FOperationKind write FOperationKind;
  +    property Formula: String read FFormula write FFormula;
     end;
   
     { TmGroupByDefs }
  
positive.code:     FIndex.GetValueList(Self.GetIndexKeyValue(tmpValue, FVerticalGroupByDefs.Get(newCurrentGroupByDefIndex))).Add(pointer(aCurrentRecNo)); //@tmpRecNoShell);
    end;
  end;
  
  procedure TmVirtualDatasetPivoter.Calculate;
  var
    i, recCount : Cardinal;
  begin
    FGarbage.Clear;
    recCount := FVirtualDataset.DatasetDataProvider.GetRecordCount;
    if FVerticalGroupByDefs.Count > 0 then
    begin
      for i := 0 to recCount - 1 do
        CalculateSubIndex(FIndex, i, 0);
    end;
  end;
  
  { TmCalculationDefs }
  
negative.code:   FFieldName:= '';
    FDataType:= ftFloat;
    FCalculationKind:= ckSum;
    FFormula:= '';
  end;
  
  end.
  