ITableSpecs

Defines the public contract for the TableSpecs class. Exposes read-only properties that describe a single analysis table row from the setup ListObject: type, identifiers, validation flags, navigation to sibling specs, and dictionary-based category lookups.

CoreProperties

TableScope #

Analysis table scope for this specification row

Signature:

Public Property Get TableScope() As AnalysisTableScope: End Property

Returns the AnalysisTableScope enum value that categorises this table as global summary, univariate, bivariate, time series, spatial, or spatio-temporal. The type determines which cross-table layout and formula logic apply at build time.

Returns: AnalysisTableScope. The table scope category.


Dictionary #

Linelist dictionary bound to this specification

Signature:

Public Property Get Dictionary() As ILLdictionary: End Property

Returns the dictionary instance that holds the variable definitions and category lists used by the analysis table. The dictionary is shared across all specs in the same linelist build.

Returns: ILLdictionary. The linelist dictionary.


TableId #

Unique identifier for this analysis table

Signature:

Public Property Get TableId() As String: End Property

Returns a string identifier built from a type prefix and the row offset within the setup ListObject. Used as a key for tracking, named range creation, and graph association.

Returns: String. The unique table identifier.


TableSectionId #

Identifier of the first table in this section

Signature:

Public Property Get TableSectionId() As String: End Property

Returns the TableId of the leading table in the current section group. Used to associate sibling tables for section-level operations like header placement and row alignment.

Returns: String. The section leader table identifier.


IsNewSection #

Whether this table begins a new section group

Signature:

Public Property Get IsNewSection() As Boolean: End Property

Returns True when this specification row marks the start of a new analysis section. The Analysis class uses this flag to decide when to insert section headers on the output worksheet.

Returns: Boolean. True when this table starts a new section.


ValidTable #

Whether this table has a valid configuration

Signature:

Public Property Get ValidTable() As Boolean: End Property

Returns True when the specification row contains all required fields for its AnalysisTableScope. Invalid specs are skipped during the build process so they do not produce broken output tables.

Returns: Boolean. True when the table configuration is complete.


ValidationProperties

HasTotal #

Whether totals are needed for computation

Signature:

Public Property Get HasTotal() As Boolean: End Property

Flags controlling optional table features. Returns True when the table requires a total row or column, either because the user explicitly set total to "yes" or because a percentage mode ("row" or "column") on a time series table implies totals. This flag drives cross-table formula generation.

Returns: Boolean. True when total computation is needed.


TotalRequested #

Whether total was explicitly requested by the user

Signature:

Public Property Get TotalRequested() As Boolean: End Property

Returns True only when the setup row has total set to "yes". Unlike HasTotal, this flag ignores implied totals from percentage mode. Used to decide whether the total column is visible in time series output.

Returns: Boolean. True when total was explicitly requested.


HasMissing #

Whether missing-data rows or columns are included

Signature:

Public Property Get HasMissing() As Boolean: End Property

Returns True when the table should include a row or column for missing values. Determined by the "missing" field in the setup row.

Returns: Boolean. True when missing data is included.


HasGraph #

Whether a graph should be created for this table

Signature:

Public Property Get HasGraph() As Boolean: End Property

Returns True when the specification row requests a graph to accompany the analysis table. The AnaTabIds class uses this flag to register graph series and formatting.

Returns: Boolean. True when a graph is requested.


HasPercentage #

Whether percentage display is enabled

Signature:

Public Property Get HasPercentage() As Boolean: End Property

Returns True when the table should show percentage values. The mode (row or column) is read from the setup row and influences how cross-table formulas are built.

Returns: Boolean. True when percentage is enabled.


SpatialTableScopes #

Spatial analysis sub-type

Signature:

Public Property Get SpatialTableScopes() As String: End Property

Returns "hf" for health-facility-based spatial tables or "geo" for administrative-boundary-based spatial tables. The sub-type is inferred from the variable name prefix. Returns an empty string for non-spatial table scopes.

Returns: String. The spatial sub-type ("hf" or "geo").


DataAccess

Value #

Retrieve a value from the specification row by column name

Signature:

Public Function Value(ByVal colName As String) As String: End Function

Value retrieval and category lookups. Looks up the named column in the setup ListObject header and returns the string value at the intersection of this specification row and that column. Returns an empty string when the column is not found.

Parameters:

  • colName: String. Column header name in the setup ListObject.

Returns: String. The cell value as a string.


RowCategories #

Row variable categories from the dictionary

Signature:

Public Property Get RowCategories(ByRef lData As Object) As BetterArray: End Property

Returns a BetterArray containing the category labels for the row variable defined in this specification. When lData is a LinelistSpecs instance, the categories are resolved from its dictionary and choices. When lData is any other type (or Nothing), returns an empty BetterArray.

Parameters:

  • lData: Object. A LinelistSpecs instance providing category lookups, or any other Object (categories will be empty).

Returns: BetterArray. The row category list.


ColumnCategories #

Column variable categories from the dictionary

Signature:

Public Property Get ColumnCategories(ByRef lData As Object) As BetterArray: End Property

Returns a BetterArray containing the category labels for the column variable defined in this specification. When lData is a LinelistSpecs instance, the categories are resolved from its dictionary and choices. When lData is any other type (or Nothing), returns an empty BetterArray. Returns an empty array for univariate or global summary types.

Parameters:

  • lData: Object. A LinelistSpecs instance providing category lookups, or any other Object (categories will be empty).

Returns: BetterArray. The column category list.