Table of Contents

Class ReportDataScope

Namespace
DocWright.Reporting.Expressions
Assembly
DocWright.Reporting.dll

The data an expression is evaluated against — one row, and the scopes that contain it — as a report processor presents it to the expression engine.

public abstract class ReportDataScope
Inheritance
ReportDataScope
Inherited Members

Remarks

Who implements this. The report processor (Phase 54c) implements it over its grouped instance tree; tests implement it over a list of rows. The engine only ever asks questions, and each member's default answer is "this scope has no such thing", which the engine reports with a diagnostic code rather than inventing a value.

Why an abstract class and not an interface. Members can be added to it in a later version without breaking an implementer; an interface on netstandard2.0 cannot grow.

Scope names. A scope name is a dataset, a data region or a group, as the report names it; null means the scope the expression is written in. Every method that takes a scope returns null when the name does not denote a scope containing this row — which the engine reports as DXP9107 — and an empty result when the scope exists and is empty.

Constructors

ReportDataScope()

Initializes the base class.

Properties

AggregateStringComparer

Gets the string comparison Min and Max use, or null for the default: the culture's comparison, ignoring case, accents, kana type and width.

Methods

GetDataSetRows(string)

Gets every row of a dataset, for Lookup, LookupSet and MultiLookup.

GetField(string)

Looks up a field of the current row.

GetLevel(string?)

Answers Level: the zero-based depth in a recursive hierarchy.

GetRowNumber(string?)

Gets the current row's one-based number within a scope, for RowNumber. Outside any detail row this is the number of rows in the scope, which is what the reference returns (measured).

GetRows(string?, bool)

Gets the rows an aggregate reads: every row of scopeName that contains this one, or — when recursive is true — of this instance and its descendants in a recursive hierarchy.

GetRowsThroughCurrent(string?)

Gets the rows of scopeName from its first row up to and including the current one, for RunningValue.

GetScopeInstances(string?, string?)

Gets the instances of the current scope — or of innerScopeName — that lie within outerScopeName, for a nested aggregate such as Max(Sum(Fields!Sales.Value), "Tablix1"): the inner Sum is evaluated once per instance returned here.

IsInScope(string)

Answers InScope.

TryGetCurrentItemValue(out object?)

Gets the value of the report item the expression belongs to, for Me.Value.

TryGetPreviousRow(string?, out ReportDataScope?)

Gets the row before the current one in a scope, for Previous.

TryGetReportItemValue(string, out object?)

Gets the value of a report item in scope, for ReportItems!Name.Value.

TryGetVariable(string, out object?)

Gets a variable in scope, for Variables!Name.Value.