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
| Tool | Where configured | Dynamic in output? | Saved with edition? |
|---|---|---|---|
| Parameter | Output Designer | Yes — user selects at render time | No |
| Filter | Output Designer (component level) | No — fixed at design time | No |
| Slicer | Output Designer (on canvas) | Yes — user selects at render time | No |
| Report variable | Output Designer (template level) | No — evaluated at render time from edition data | No |
| Calculated field | Output Designer (component level) | No — evaluated at render time | No |
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
| Aspect | Parameter | Slicer |
|---|---|---|
| Scope | Applies to all components that reference it | Applies to the component it is attached to |
| Location | Parameter bar at top of report viewer | On the canvas, adjacent to the component |
| Control type | Dropdown, multi-select, date range, text input | Chip selector, checkbox list |
| User can select "All" | Yes (configurable) | Yes (default) |
| Cascading | Supported — one parameter can filter another's options | Not supported |
| Export behaviour | Parameter selection is embedded in the exported file name and metadata | Slicer 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
| Convention | Example | Reason |
|---|---|---|
| PascalCase, descriptive noun | SelectedDiscipline | Clear and scannable in the parameter bar |
| Avoid abbreviations | ReportingPeriod not RptPrd | Users see parameter labels directly |
| Prefix multi-select with "Selected" | SelectedProjects, SelectedStatuses | Signals to users that multiple values can be chosen |
| Prefix date ranges with "From" / "To" | FromDate, ToDate | Standard date range convention |
| Prefix toggles with "Show" or "Include" | ShowConfidential, IncludeClosedRisks | Signals boolean choice |
Naming conventions for variables
| Convention | Example |
|---|---|
| PascalCase noun or noun phrase | TotalActualCost, BudgetVariancePct |
| Computed aggregates start with aggregate type | SumActualCost, 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
SelectedProjectparameter — dropdown of all projects.SelectedDisciplineparameter — 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.
Related
- Parameters and Calculated Fields — configuration reference for parameters and calculated fields
- Cascading Parameters — setting up dependent parameter lists
- Report Variables — defining and using template-level variables
- Conditional Visibility Patterns — page and component visibility based on parameters