Skip to main content

Parameter Strategy

Report Forge provides several mechanisms for making output templates dynamic. Choosing the wrong tool leads to templates that are hard to maintain or that don't behave as expected. This guide helps you pick the right tool for each use case.


The five tools

ToolWhere configuredDynamic in output?Saved with edition?
ParameterOutput DesignerYes — user selects at render timeNo
FilterOutput Designer (component level)No — fixed at design timeNo
SlicerOutput Designer (on canvas)Yes — user selects at render timeNo
Report variableOutput Designer (template level)No — evaluated at render time from edition dataNo
Calculated fieldOutput Designer (component level)No — evaluated at render timeNo

All five tools evaluate at output render time, not during data entry. None of them modify the edition's stored data.


Decision guide

Use a Parameter when:

  • The template should produce different outputs from the same edition depending on viewer choice (e.g. show data for one discipline, or all disciplines).
  • The selection changes the dataset seen by all components simultaneously.
  • The output is intended to be interactive in the report viewer.
  • You need a dropdown, date range, or text input that users operate themselves.

Examples:

  • Project selector (multi-project blueprint)
  • Discipline filter (show data for Civil only vs. all disciplines)
  • Date range (show risks opened in a selected period)
  • Output format variant (Executive vs. Detail view)

Use a Filter when:

  • A single component should always show a specific subset of data.
  • The subset is fixed by the design, not by the user.
  • You need to exclude rows from a table or chart without a user-facing control.

Examples:

  • A "Red Risks Only" table — always filters to RAG = Red.
  • A "Overdue Actions" component — always filters to Status ≠ "Complete" AND DueDate < Today.
  • A "Current Period" line in a chart — always shows the most recent row.

Use a Slicer when:

  • The user should be able to filter a specific component (not all components).
  • The selection is not shared across all components.
  • You want a visual filter control (chip selector, checkbox list) on the canvas.

Examples:

  • A risk register table with a Priority slicer (user filters by High/Medium/Low without affecting other components).
  • A lookahead chart with a Discipline slicer.

Use a Report variable when:

  • The same calculated value is referenced in multiple components.
  • You want to centralise a complex expression.
  • A literal value (client name, report title) needs to appear consistently across the template.

Examples:

  • Total actual cost referenced in KPI card, table footer, and narrative text.
  • Client name on the cover page, header, and footer.
  • A threshold label ("Behind programme" / "On programme") derived from a RAG field.

Use a Calculated field when:

  • A value is derived from edition data but only used in one component.
  • The derivation is simple enough to define inline.
  • No other component needs the same value.

Examples:

  • A budget variance column in one table: [ActualCost] - [Budget].
  • A completion rate KPI: [CompletedActions] / [TotalActions].
  • A day-count annotation in a chart series.

Parameters vs. slicers — detailed comparison

AspectParameterSlicer
ScopeApplies to all components that reference itApplies to the component it is attached to
LocationParameter bar at top of report viewerOn the canvas, adjacent to the component
Control typeDropdown, multi-select, date range, text inputChip selector, checkbox list
User can select "All"Yes (configurable)Yes (default)
CascadingSupported — one parameter can filter another's optionsNot supported
Export behaviourParameter selection is embedded in the exported file name and metadataSlicer state not preserved in static exports

Filters vs. parameters — common mistake

A common mistake is using parameters to replicate logic that should be a filter.

Wrong: Creating a parameter "Show Overdue Only" → Yes/No, and the template uses this parameter to show/hide rows.

Right: Create a component-level filter DueDate < TODAY() AND Status ≠ "Complete" on the specific table or chart. No user action required — overdue items always appear correctly.

Use parameters only when the user genuinely needs to choose. Every parameter adds friction to output generation — parameters that are always set the same way should be filters.


Naming conventions for parameters

ConventionExampleReason
PascalCase, descriptive nounSelectedDisciplineClear and scannable in the parameter bar
Avoid abbreviationsReportingPeriod not RptPrdUsers see parameter labels directly
Prefix multi-select with "Selected"SelectedProjects, SelectedStatusesSignals to users that multiple values can be chosen
Prefix date ranges with "From" / "To"FromDate, ToDateStandard date range convention
Prefix toggles with "Show" or "Include"ShowConfidential, IncludeClosedRisksSignals boolean choice

Naming conventions for variables

ConventionExample
PascalCase noun or noun phraseTotalActualCost, BudgetVariancePct
Computed aggregates start with aggregate typeSumActualCost, CountOpenRisks, AvgSPI
Labels end with "Label"ScheduleLabel, OverallRAGLabel
Thresholds end with "Threshold"RedThreshold, AmberThreshold

Parameter cascade pattern

Cascading parameters filter one parameter's options based on another's selection. Common in multi-project or multi-discipline templates.

Example: Project → Discipline cascade

  1. SelectedProject parameter — dropdown of all projects.
  2. SelectedDiscipline parameter — filtered to only show disciplines in the selected project.

Configuration:

  • SelectedDiscipline → set Filter by parameter = SelectedProject.
  • The discipline options dynamically update when the project selection changes.

See Cascading Parameters for the step-by-step setup.


Common parameter patterns

Report format toggle (Executive vs. Detail)

Parameter: ReportFormat → Select: "Executive", "Detail"

Use conditional page visibility:

  • Executive Summary page: visible when ReportFormat = "Executive".
  • Detailed Data pages: visible when ReportFormat = "Detail".
  • Cover page and table of contents: always visible.

Date range selector

Parameters: FromDate (Date), ToDate (Date)

Filter components: [PeriodDate] >= param.FromDate AND [PeriodDate] <= param.ToDate

Project scope selector (multi-project)

Parameter: SelectedProject → Dropdown of all projects in the workspace.

All data components filter on [ProjectID] = param.SelectedProject.

See Multi-Project Reporting for the full pattern.