ICubeExecuteDataRights.Rights

Syntax

Rights(Coord: IMatrixCoord): CubeDataRights;

Parameters

Coord. Data point coordinate.

Description

The Rights property returns the actual access permission for a data point.

Example

Executing the example requires that the repository contains a time series database with the FC_A identifier.

Add links to the Cubes, Dimensions, MatFin, Matrix, and Metabase system assemblies.

Sub UserProc;
Var
    Mb: IMetabase;
    Cat: IMetabaseObject;
    Inst: IRubricatorInstance;
    Cub: ICubeInstance;
    Dest: ICubeInstanceDestination;
    Exe: ICubeInstanceDestinationExecutor;
    Sels: IDimSelectionSet;
    Sel: IDimSelection;
    Arr: Array[1Of Integer;
    Si, Sc: Integer;
    Mat: IMatrix;
    ExecuteResult: ICubeExecuteResult;
    It: IMatrixIterator;
    Coo: IMatrixCoord;
    Sto: ICubeInstanceStorage;
    Rights: ICubeExecuteDataRights;
Begin
    Mb := MetabaseClass.Active;
    // Get time series database
    Cat := Mb.ItemById("FC_A").Bind;
    Inst := Cat.Open(NullAs IRubricatorInstance;
    // Convert opened instance of TSDB to cube instance
    Cub := Inst As ICubeInstance;
    // Create a cube selection
    Dest := Cub.Destinations.DefaultDestination;
    Sels := Dest.CreateDimSelectionSet;
    Sc := Sels.Count - 1;
    For Si := 0 To Sc Do
        Sel := Sels.Item(Si);
        Sel.SelectAll;
    End For;
    // Create an object for cube matrix calculation
    Exe := Dest.CreateExecutor;
    (Exe As IRubricatorFactorIO).MultipleFactors := True;
    // Set indicator that should be calculated
    Arr[0] := 125616;
    (Exe As IRubricatorFactorExecutor).SetFactorKeys(Arr);
    // Determine access permissions for data that will be returned after calculation - read and change data
    (Sels As ICubeExecuteSetup).RequiredDataRights := CubeDataRights.ReadWrite;
    Exe.PrepareExecute(Sels);
    // Get matrix with data
    Mat := Exe.Matrix;
    // Calculate cube by the specified matrix
    ExecuteResult := CubeClass.ExecuteResult(Mat);
    Rights := ExecuteResult.DataRights;
    If Rights <> Null Then
        Exe.PerformExecute;
        Mat.ValueFlag := 1;
        // Create an object that is a matrix coordinate
        Coo := Rights.CoordMatrix.CreateCoord;
        // Create an iterator for navigation by matrix elements
        It := Mat.CreateIterator;
        // Populate matrix with random data
        It.Move(IteratorDirection.First);
        While It.Valid Do
            It.ValueFlag := 0;
            If Rights.Rights(Coo) = CubeDataRights.ReadWrite Then
                It.ValueFlag := 1;
                It.Value := Math.RandBetweenI(05);
            End If;
            It.Move(IteratorDirection.Next);
        End While;
        // Create an object to save data to cube
        Sto := Dest.CreateStorage;
        (Sto As IRubricatorFactorIO).MultipleFactors := True;
        // Save matrix with data to cube
        Sto.SaveMatrix(Mat, 1);
    End If;
End Sub UserProc;

After executing the example data of time series with the 125616 key, to which the user has read and write permissions, is obtained. Then the data is changed and saved.

See also:

ICubeExecuteDataRights