ISearchSourceDataResult.CreateDimSelectionSet

Fore Syntax

CreateDimSelectionSet: IDimSelectionSet;

Fore.NET Syntax

CreateDimSelectionSet: Prognoz.Platform.Interop.BISearch.IDimSelectionSet;

Description

The CreateDimSelectionSet method creates selection which forms data slice by found dimension selection.

Fore Example

Executing the example requires a form with a button named Button1, the UiErAnalyzer component named UiErAnalyzer1 and any visual components for which UiErAnalyzer1 is set as data source. Add links to the BISearch, Cubes, Dimensions, Express, Fore, Metabase system assemblies.

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
    MB: IMetabase;
    SharedParams: ISharedParams;
    SearchEngine: ISolrSearchEngineService;
    Schema: ISolrSearchEngineSchema;
    SearchExecutor: ISearchExecutor;
    SearchContext: ISolrSourceDataSearchContext;
    Results: ISolrSearchResults;
    Result: ISearchSourceDataResult;
    Source: ISourceMetadata;
    CrInfo: IMetabaseObjectCreateInfo;
    Cube: ICubeInstance;
    Expr: IEaxAnalyzer;
    SelSet: IDimSelectionSet;
Begin
    MB := MetabaseClass.Active;
    //Parameters of search and indexing set for repository
    SharedParams := MB.SpecialObject(MetabaseSpecialObject.SharedParams).Bind As ISharedParams;
    SearchEngine := SharedParams.SearchEngine As ISolrSearchEngineService;
    Schema := SearchEngine.SearchEngineSchema As ISolrSearchEngineSchema;
    //Search parameters
    SearchExecutor := Schema.SearchExecutor(SearchEngineTargetType.SourceData);
    SearchContext := SearchExecutor.CreateContext As ISolrSourceDataSearchContext;
    SearchContext.Locale := LocaleCodeID.Russian;
    SearchContext.Text := "Russia";
    //Search
    Results := SearchExecutor.Search(SearchContext) As ISolrSearchResults;
    //Source information view for the first search result
    Result := Results.Item(0As ISearchSourceDataResult;
    Source := Result.SourceMetadata;
    Debug.WriteLine("Slice name: " + Result.Name);
    Debug.WriteLine("Source: " + Source.SourceName + '(' + Source.SourceId + ')');
    //Slice view
    If Source.SourceClassId = MetabaseObjectClass.KE_CLASS_STDCUBE Then
        CrInfo := MB.CreateCreateInfo;
        CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_EXPRESSREPORT;
        Expr := MB.CreateObject(CrInfo).Edit As IEaxAnalyzer;
        Cube := MB.Item(Source.SourceKey).Open(NullAs ICubeInstance;
        Expr.OpenCubeDestination(Cube, Source.DestinationKey, EaxOpenCubeOptions.None);
        //Get slice selection
        SelSet := Result.CreateDimSelectionSet;
        //Set selection in express-report
        SelSet.CopyTo(Expr.Pivot.Selection, TrueTrue);
        //Connection to the UiErAnalyzer component
        UiErAnalyzer1.ErAnalyzer := Expr;
        UiErAnalyzer1.Active := True;
    End If;
End Sub Button1OnClick;

On clicking the button the specified values will be searched by indexed information about dimension elements. The information about data source will be received from the first found result. If the standard cube is the source, the following actions will be performed:

After it the express report will be connected to the form components to view data of the found slice.

Fore.NET Example

The requirements and result of the Fore.NET example execution match with those in the Fore example. Use Fore.NET analogs instead of Fore components. Except assemblies determined in the Fore Example, connect also the ForeSystem assembly.

Imports Prognoz.Platform.Interop.BISearch;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.KeFore;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Pivot;

Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
    MB: IMetabase;
    SharedParams: ISharedParams;
    SearchEngine: ISolrSearchEngineService;
    Schema: ISolrSearchEngineSchema;
    SearchExecutor: ISearchExecutor;
    SearchContext: ISolrSourceDataSearchContext;
    Results: ISolrSearchResults;
    Result: ISearchSourceDataResult;
    Source: ISourceMetadata;
    CrInfo: IMetabaseObjectCreateInfo;
    Cube: ICubeInstance;
    Expr: EaxAnalyzer;
    SelSet: IDimSelectionSet;
Begin
    MB := Self.Metabase;
    //Parameters of search and indexing set for repository
    SharedParams := MB.SpecialObject[MetabaseSpecialObject.msoSharedParams].Bind() As ISharedParams;
    SearchEngine := SharedParams.SearchEngine As ISolrSearchEngineService;
    Schema := SearchEngine.SearchEngineSchema As ISolrSearchEngineSchema;
    //Search parameters
    SearchExecutor := Schema.SearchExecutor[SearchEngineTargetType.settSourceData];
    SearchContext := SearchExecutor.CreateContext() As ISolrSourceDataSearchContext;
    SearchContext.Locale := LocaleCodeID.lcidRussian;
    SearchContext.Text := "Russia";
    //Search
    Results := SearchExecutor.Search(SearchContext) As ISolrSearchResults;
    //Source information view for the first search result
    Result := Results.Item[0As ISearchSourceDataResult;
    Source := Result.SourceMetadata;
    System.Diagnostics.Debug.WriteLine("Slice name: " + Result.Name);
    System.Diagnostics.Debug.WriteLine("Source: " + Source.SourceName + '(' + Source.SourceId + ')');
    //Slice view
    If Source.SourceClassId = (MetabaseObjectClass.KE_CLASS_STDCUBE As uinteger) Then
        CrInfo := MB.CreateCreateInfo();
        CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_EXPRESSREPORT As integer;
        Expr := MB.CreateObject(CrInfo).Edit() As EaxAnalyzer;
        Cube := MB.Item[Source.SourceKey].Open(NullAs ICubeInstance;
        Expr.OpenCubeDestination(Cube, Source.DestinationKey, EaxOpenCubeOptions.eocoNone);
        //Get slice selection
        SelSet := Result.CreateDimSelectionSet();
        //Set selection in express-report
        SelSet.CopyTo(Expr.Pivot.Selection, TrueTrue);
        //Connect to the UiErAnalyzerNet component
        UiErAnalyzerNet1.AnalyzerUi.ErAnalyzer := Expr;
        UiErAnalyzerNet1.Active := True;
    End If;
End Sub;

See also:

ISearchSourceDataResult