IDimSelection.Hierarchy

Syntax

Hierarchy: IDimHierarchyInstance;

Description

The Hierarchy property determines data of alternative hierarchy of dictionary elements.

Example

Executing the example requires that the repository contains dictionaries with the TB_BASE and TB_ALT identifiers. The TB_BASE dictionary is used as a basic dictionary, while the TB_ALT dictionary is to be used as an alternative hierarchy dictionary. Also there should be form with button with the Button1 identifier, the DimensionTree component with the DimensionTree1 identifier and the UiDimension component, that is data source for the DimensionTree1 component. The UiDimension component should use the TB_BASE dictionary as its data source. This example is executed on clicking the button.

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
    Var
    Mb: IMetabase;
    OriginalModelObj: IMetabaseObject;
    OriginalModel: IDimensionModel;
    AlternateModel: IDimensionModel;
    Hierarchies: IDimHierarchies;
    Alt_Hierarchy: IDimHierarchy;
    i: Integer;
    Origin_Attributes: IDimAttributes;
    Alt_Attributes: IDimAttributes;
    Origin_Attr: IDimAttribute;
    Alt_Attr: IDimAttribute;
    dimInstance: IDimInstance;
    Hs_Instance: IDimHierarchiesInstance;
    H_Inst: IDimHierarchyInstance;
    dimSel: IDimSelection;
Begin
    Mb := MetabaseClass.Active;
    OriginalModelObj := Mb.ItemById("TB_BASE").Edit;
    OriginalModel := OriginalModelObj As IDimensionModel;
    AlternateModel := Mb.ItemById("TB_ALT").Bind As IDimensionModel;
    Hierarchies := OriginalModel.Hierarchies;
    Hierarchies.Clear;
    // Determine index, containing keys of elements for alternative hierarchy
    Hierarchies.OriginalIndex := OriginalModel.Indexes.PrimaryIndex;
    // Add source alternative hierarchy
    Alt_Hierarchy := Hierarchies.Add(AlternateModel);
    // Determine index containing keys for comparing elements of main and alternative dictionary
    Alt_Hierarchy.SourceIndex := AlternateModel.Indexes.PrimaryIndex;
    Origin_Attributes := OriginalModel.Attributes;
    Alt_Attributes := AlternateModel.Attributes;
    // Link attributes of original dimension with attributes from source of alternative hierarchy
    For i := 0 To Origin_Attributes.Count - 1 Do
        Origin_Attr := Origin_Attributes.Item(i);
        Alt_Attr := Alt_Attributes.Item(i);
        Alt_Hierarchy.SourceAttribute(Origin_Attr) := Alt_Attr;
    End For;
    OriginalModelObj.Save;
    // Change main hierarchy for alternative
    dimInstance := OriginalModelObj.Open(NullAs IDimInstance;
    Hs_Instance := dimInstance.Hierarchies;
    If Hs_Instance.Count > 0 Then
        H_Inst := Hs_Instance.Item(0);
        dimSel := DimensionTree1.Selection;
        dimSel.Hierarchy := H_Inst;
    End If;
End Sub Button1OnClick;

After executing the example alternative hierarchy is added and set for the basic dictionary.

See also:

IDimSelection