IMatrixQueryFilter.AllowNull

Синтаксис

AllowNull: Boolean;

Описание

Свойство AllowNull определяет, допускаются ли пустые значения в результирующей матрице.

Комментарии

Допустимые значения:

Пример

Для выполнения примера предполагается наличие куба с идентификатором CUBE.

Добавьте ссылки на системные сборки: Cubes, Dimensions, Matrix, Metabase.

Sub UserProc;
Var
    Mb: IMetabase;
    CubeDest: ICubeInstanceDestination;
    Executor: ICubeInstanceDestinationExecutor;
    Sels, FilterSel: IDimSelectionSet;
    Sel: IDimSelection;
    Factory: IMatrixFactory;
    Matrix: IMatrix;
    Query: IMatrixQuery;
    Filter: IMatrixQueryFilter;
Begin
    Mb := MetabaseClass.Active;
    // Открытие куба
    CubeDest := (Mb.ItemById("CUBE").Open(NullAs ICubeInstance).Destinations.DefaultDestination;
    Executor := CubeDest.CreateExecutor;
    // Создание отметки
    Sels := CubeDest.CreateDimSelectionSet;
    For Each Sel In Sels Do
        Sel.SelectAll;
    End For;
    // Получение матрицы с данными куба
    Executor.PrepareExecute(Sels);
    Executor.PerformExecuteO(CubeInstanceDestinationExecutorOptions.Cached);
    Matrix := Executor.Matrix;
    // Создание запроса
    Factory := New MatrixFactory.Create As IMatrixFactory;
    Query := Factory.CreateQuery(Matrix);
    Filter := Query.Filter;
    // Добавление отметки для фильтрации данных
    FilterSel := CubeDest.CreateDimSelectionSet;
    FilterSel.Item(0).SelectElement(0False);
    FilterSel.Item(1).SelectElement(0False);
    // Отметка для фильтрации
    Filter.Selection := FilterSel;
    Filter.AllowNull := True;
    // Выполнение фильтрации с AllowNull=True и просмотр результирующей отметки
    Debug.WriteLine("Filter.AllowNull=True");
    Query.Execute;
    ShowResult(Query.Result);
    // Выполнение фильтрации с AllowNull=False и просмотр результирующей отметки
    Debug.WriteLine("Filter.AllowNull=False");
    Filter.AllowNull := False;
    Query.Execute;
    ShowResult(Query.Result);
End Sub UserProc;

Sub ShowResult(Result: IMatrixQueryResult);
Var
    SelFactory: IDimSelectionSetFactory;
    ResSels: IDimSelectionSet;
    Sel: IDimSelection;
Begin
    SelFactory := New DimSelectionSetFactory.Create;
    ResSels := SelFactory.CreateDimSelectionSet;
    Result.GetSelectionSet(ResSels);
    For Each Sel In ResSels Do
        Debug.WriteLine("Измерение: " + (Sel.Dimension.Dimension As IMetabaseObject).Id +
            ".Отмечено элементов: " + Sel.SelectedCount.ToString + " из " + Sel.Dimension.Elements.Count.ToString);
    End For;
End Sub ShowResult;

При выполнении примера будет открыт куб и получена его матрица с данными по полной отметке. Будет создан запрос, получающий информацию о данных из матрицы, в запросе определён фильтр, отбирающий данные по определённой отметке. Запрос будет выполнен два раза - без фильтрации и с фильтрацией пустых значений. После выполнения запросов будут получены отметки, соответствующие матрицам с отфильтрованными данными. Информация об отметках будет выведена в консоль среды разработки.

См. также:

IMatrixQueryFilter