Show contents 

Dimensions > Dimensions Assembly Interfaces > IStandardDimBlock > IStandardDimBlock.Binding

IStandardDimBlock.Binding

Syntax

Binding(Attribute: IStandardDimAttribute): IExpression;

Parameters

Attribute. Attribute of the table dictionary.

Description

The Binding property returns an object containing formula that determines correspondence between block attributes and data source field.

Example

Executing the example requires that the repository contains a table dictionary with the TAB_DIM identifier. The dictionary list of attributes contains one additional attribute with the codes of parents. The repository also contains a table with the Tablica_1 identifier. The table has four fields: Id, Name, Ord and Parent_Id.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Dataset: IDatasetModel;
    DatasetFields: IDatasetModelFields;
    Dim: IStandardDimension;
    DimBlocks: IStandardDimBlocks;
    DimBlock: IStandardDimRecursiveBlock;
    BlockAttr: IStandardDimAttributes;
    PrimIndex: IStandardDimIndex;
    s: String;
Begin
    s := "Table_1";
    MB := MetabaseClass.Active;
    MObj := MB.ItemById("TAB_DIM").Edit;
    Dataset := MB.ItemById(s).Bind As IDatasetModel;
    DatasetFields := Dataset.Fields;
    Dim := MObj As IStandardDimension;
    DimBlocks := Dim.Blocks;
    BlockAttr := Dim.Attributes;
    //New recursive block
    DimBlock := DimBlocks.Add(DimBlockType.Recursive) As IStandardDimRecursiveBlock;
    PrimIndex := DimBlock.Indexes.PrimaryIndex;
    PrimIndex.Attributes.Add(Dim.Attributes.Id);
    DimBlock.Dataset := Dataset;
    //Binding of attributes
    DimBlock.Binding(BlockAttr.Id).AsString := s + "." + DatasetFields.FindById("Id").Id;
    DimBlock.Binding(BlockAttr.Name).AsString := s + "." + DatasetFields.FindById("Name").Id;
    DimBlock.Binding(BlockAttr.Order).AsString := s + "." + DatasetFields.FindById("Ord").Id;
    DimBlock.Binding(BlockAttr.Item(BlockAttr.Count - 1)).AsString := s + "." + DatasetFields.FindById("Parent_Id").Id;
    //Upper level
    DimBlock.StartWith.AsString := s + "." + Dataset.Fields.FindById("Parent_Id").Id + "=0";
    //Set up link by recursion index
    DimBlock.ConnectByIndex := PrimIndex;
    DimBlock.ConnectBy(PrimIndex.Attributes.Item(0)).AsString := s + "." + DatasetFields.FindById("Parent_Id").Id;
    MObj.Save;
End Sub UserProc;

After executing the example a new recursive block is created in the dictionary. Block attributes are linked to the fields of data source, as well as the block recursion is adjusted. When a dictionary is created, elements of the upper level are elements with the Parent_Id value, equal to 0.

See also:

IStandardDimBlock