IEaxDrillSettingsValues.Add

Syntax

Add(Value: Variant): Integer;

Parameters

Value. Value of detailing substitution.

Description

The Add method adds a value of detailing substitution to the collection.

Comments

The method returns the key of the value of detailing substitution added to the collection.

Numbering of collection elements starts from zero. If elements were removed from the collection using the IEaxDrillSettingsValues.RemoveAt method, the new element will be added with the least free key. To get an array of existing keys, use the IEaxDrillSettingsValues.Keys property.

Example

Executing the example requires that the repository contains a regular report with the REG_VALUES identifier. A data source is a cube with a calendar dimension. The report contains one sheet, on which an analytical data area is created.

Add links to the Dimensions, Express, Metabase, Pivot, Report, and Tab system assemblies.

Sub UserProc;
Var
    MB: IMetabase;
    Rep: IPrxReport;
    PivSlice: IEaxDataAreaPivotSlice;
    Pivot: IPivot;
    HeadSets: IDataAreaHeaderSettingsBase;
    Grid: IEaxGrid;
    DimSettings: IEaxGridDimensionSettings;
    PivotDims: IPivotDimension;
    DimModel: IDimensionModel;
    DimIndex: IDimIndex;
    Attributes: IDimAttributesInstance;
    Attribute: IDimAttribute;
    Drill: IEaxDrillSettings;
    ElementKey: Integer;
Begin
    // Get repository
    MB := MetabaseClass.Active;
    // Get regular report
    Rep := MB.ItemById("REG_VALUES").Edit As IPrxReport;
    // Get data slice as a data area of report table
    PivSlice := Rep.DataArea.Slices.Item(0As IEaxDataAreaPivotSlice;
    // Get data table
    Pivot := PivSlice.Pivot;
    // Get the Calendar dimension
    PivotDims := Pivot.Dimensions.Item(1);
    // Get dimension structure
    DimModel := PivotDims.DimInstance.Dimension;
    // Get structure of the specified dimension index
    DimIndex := DimModel.Indexes.Item(0);
    // Get collection of dimension attributes
    Attributes := PivotDims.DimInstance.Attributes;
    // Get structure of the specified attribute
    Attribute := Attributes.Item(0).Attribute;
    // Get analytical data area header settings
    HeadSets := PivotDims As IDataAreaHeaderSettingsBase;


    // Enable territory info settings for the specified view
    Grid := (PivSlice As IEaxDataAreaSlice).Views.Item(0As IEaxGrid;
    Grid.ViewSettings.HyperlinkAsText := False;
    DimSettings := Grid.ViewSettings.GetViewSettings(HeadSets) As IEaxGridDimensionSettings;
    If Not DimSettings.IsDrilled Then
        DimSettings.Drilled := TriState.OnOption;
    End If;


    // Get territory info settings
    Drill := DimSettings.Drill;
    // Specify sheet
    Drill.SheetKey := Rep.Sheets.Item(0).Key;
    // Specify dimension
    Drill.Dimension := PivotDims;
    // Set method for changing selection - replacement
    Drill.Mode := EaxDataDrillMode.Replace;
    // Set index for element search
    Drill.DimensionIndex := DimIndex;
    // Set attribute of search in index
    Drill.DimensionAttribute := Attribute;
    Drill.DimensionAttributes := "BLOCK_TYPE";
    // The specified website will open on hyperlink click
    // The link will open in a new browser tab
    Drill.ActionType := TabHyperlinkActionType.OpenURL;


    // Clear the collection from possible stored values
    Drill.Values.Clear;


    // Add a substitution value to the collection and temporarily save its key 
    ElementKey := Drill.Values.Add("first element of collection");
    // Display this collection element in the console
    Debug.WriteLine("Key of added element: " + ElementKey.ToString);
    Debug.WriteLine("Value of added element: " + Drill.Values.GetAt(ElementKey));
    Debug.WriteLine("");


    // Add another substitution value but do save key
    Drill.Values.Add("second element in collection");
    // Get new element key
    ElementKey := Drill.Values.Keys[Drill.Values.Count - 1];
    // Display this collection element in the console
    Debug.WriteLine("Key of added element: " + ElementKey.ToString);
    Debug.WriteLine("Value of added element: " + Drill.Values.GetAt(ElementKey));
    Debug.WriteLine("");


    // Add the third value of substitution but right before displaying it in the console
    Debug.WriteLine("Key of added element: " + Drill.Values.Add("Substitution No. 3").ToString);
    Debug.WriteLine("Value of added element: " + Drill.Values.GetAt(Drill.Values.Keys[Drill.Values.Count - 1]));
    Debug.WriteLine("");


    // Display the list of keys in the console
    Debug.WriteLine("List of keys:");
    For Each ElementKey In Drill.Values.Keys Do
        Debug.WriteLine(ElementKey);
    End For;
    Debug.WriteLine("");


    // Delete the second collection element
    Debug.WriteLine("Indicates whether existing element was removed successfully: " + Drill.Values.RemoveAt(1).ToString);
    // Try to delete its again
    Debug.WriteLine("Indicates whether absent element was removed successfully: " + Drill.Values.RemoveAt(1).ToString);
    // Display the list of keys after element deletion in the console
    Debug.WriteLine("List of keys after removal of element with the 1 key:");
    For Each ElementKey In Drill.Values.Keys Do
        Debug.WriteLine(ElementKey);
    End For;
    Debug.WriteLine("");


    // Add a new element and find its key
    ElementKey := Drill.Values.Add("Fourth (in the order of adding)");
    // Display this collection element in the console
    Debug.WriteLine("Key of added element: " + ElementKey.ToString);
    Debug.WriteLine("Value of added element: " + Drill.Values.GetAt(ElementKey));
    Debug.WriteLine("");
    // Display the list of keys after adding element
    Debug.WriteLine("List of keys after adding an element:");
    For Each ElementKey In Drill.Values.Keys Do
        Debug.WriteLine(ElementKey);
    End For;
    Debug.WriteLine("");


    // Change value of the first element
    Drill.Values.SetAt(0"Edited substitution");
    // Display it in the console
    Debug.WriteLine("New value of the first element: " + Drill.Values.GetAt(0));
    Debug.WriteLine("");


    Debug.WriteLine("List of collection elements:");
    Debug.WriteLine(Drill.Values.GetAt(0));
    Debug.WriteLine(Drill.Values.GetAt(1));
    Debug.WriteLine(Drill.Values.GetAt(2));


    // Specify required keys of collection elements as substitutions.
    // The search query opens in the browser with values of collection elements,
    // which keys are specified in substitution
    Drill.Action := "http://www.google.com/search?q=&[2] and &[0]";
    Drill.Target := TabHyperlinkTarget.Top;


    // Refresh report and save changes
    Rep.Recalc;
    (Rep As IMetabaseObject).Save;
End Sub UserProc;

After executing the example:

See also:

IEaxDrillSettingsValues