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.