Category / Section
Does Bold Reports Fully Support SSRS Expressions?
Published:
Updated:
Bold Reports is built on the same RDL (Report Definition Language) foundation as SQL Server Reporting Services (SSRS). This shared architecture ensures a seamless migration experience for users transitioning from SSRS to Bold Reports. One of the key advantages is that expressions used in SSRS do not need to be rewritten or converted when importing reports into Bold Reports.
No Need to Rewrite SSRS Expressions
Since both SSRS and Bold Reports interpret RDL files natively, any property or expression defined in SSRS is fully compatible with Bold Reports. This includes:
- Built-in functions (
=Sum(...),=IIf(...), etc.) - Global variables (
=Globals!PageNumber,=User!UserID, etc.) - Custom code blocks
- Field references and parameters
This compatibility eliminates the need for manual rewriting or validation of expressions during migration.
✅SSRS Expressions Supported in Bold Reports
| Purpose | SSRS (VB. NET Syntax) | Bold Reports (VB. NET Syntax) |
|---|---|---|
| Concatenate | Fields!FirstName.Value & " " & Fields!LastName.Value |
✅ |
| Substring | Mid(Fields!Field.Value, 2, 5) |
✅ |
| Left | Left(Fields!Field.Value, 4) |
✅ |
| Right | Right(Fields!Field.Value, 4) |
✅ |
| Length | Len(Fields!Field.Value) |
✅ |
| Replace | Replace(Fields!Field.Value, "old", "new") |
✅ |
| Uppercase | UCase(Fields!Field.Value) |
✅ |
| Lowercase | LCase(Fields!Field.Value) |
✅ |
| Trim | Trim(Fields!Field.Value) |
✅ |
| Current Date | Today() |
✅ |
| Current DateTime | Now() |
✅ |
| Date Part (Year) | Year(Fields!DateField.Value) |
✅ |
| Date Part (Month) | Month(Fields!DateField.Value) |
✅ |
| Date Part (Day) | Day(Fields!DateField.Value) |
✅ |
| Add Days | DateAdd("d", 5, Fields!DateField.Value) |
✅ |
| Format Date | Format(Fields!DateField.Value, "MM/dd/yyyy") |
✅ |
| Time Only | Format(Fields!YourDateTimeField.Value, "hh:mm tt") |
✅ |
| Absolute | Abs(Fields!Field.Value) |
✅ |
| Round | Round(Fields!Field.Value, 2) |
✅ |
| Ceiling | Ceiling(Fields!Field.Value) |
✅ |
| Floor | Floor(Fields!Field.Value) |
✅ |
| Remainder | Fields!Field1.Value Mod Fields!Field2.Value |
✅ |
| If / Else | IIF(Fields!Field.Value > 10, "High", "Low") |
✅ |
| Nested If | Switch(Fields!x.Value > 10, "A", Fields!x.Value > 5, "B", True, "C") |
✅ |
| Null Handling | IIF(IsNothing(Fields!Field.Value), 0, Fields!Field.Value) |
✅ |
| Sum | Sum(Fields!Field.Value) |
✅ |
| Average | Avg(Fields!Field.Value) |
✅ |
| Minimum | Min(Fields!Field.Value) |
✅ |
| Maximum | Max(Fields!Field.Value) |
✅ |
| Count | Count(Fields!Field.Value) |
✅ |
| Page Number | Globals!PageNumber |
✅ |
| Total Pages | Globals!TotalPages |
✅ |
| Report Name | Globals!ReportName |
✅ |
| User Name | User!UserID |
✅ |
| Date Difference | DateDiff("d", Fields!date1.Value, Fields!date2.Value) |
✅ |
| Find Position | InStr(Fields!string.Value, "substring") |
✅ |
| Proper Case | StrConv(Fields!YourField.Value, vbProperCase) |
✅ |
| Reverse String | StrReverse(Fields!YourField.Value) |
✅ |
| Is Numeric | IsNumeric(Fields!YourField.Value) |
✅ |
| Number to String | CStr(Fields!integer.Value) |
✅ |
| String to Number | CInt(Fields!string.Value) |
✅ |
| String to Date | CDate(Fields!string.Value) |
✅ |
| Sign of Number | Sign(Fields!number.Value) |
✅ |
| Round Down | Int(Fields!number.Value) |
✅ |
| Round Up | Ceiling(Fields!number.Value) |
✅ |
| Truncate String | Left(String, No.Of.Char) and Mid(String, No.Of.Char) |
✅ |
| Truncate Number | Fix(Fields!number.Value) |
✅ |
| Fix | Fix(Fields!number.Value) |
✅ |
| Sin | Sin(Fields!number.Value) |
✅ |
| Cos | Cos(Fields!number.Value) |
✅ |
| Tan | Tan(Fields!number.Value) |
✅ |
| Standard Deviation | StDev(Fields!YourField.Value) |
✅ |
| Population Std Dev | StDevP(Fields!YourField.Value) |
✅ |
| Variance | Var(Fields!YourField.Value) |
✅ |
| Population Variance | VarP(Fields!YourField.Value) |
✅ |
| Distinct Count | CountDistinct(Fields!YourField.Value) |
✅ |
| Weighted Average | SUM(FIELD1 * FIELD2) / SUM(FIELD2) |
✅ |
| % of Sum | Fields!field1.Value / Sum(Fields!field2.Value) |
✅ |
| % of Average | Fields!field1.Value / Avg(Fields!field2.Value) |
✅ |
| % of Minimum | Fields!field1.Value / Min(Fields!field2.Value) |
✅ |
| % of Maximum | Fields!field1.Value / Max(Fields!field2.Value) |
✅ |
| % of Count | Fields!field1.Value / Count(Fields!field2.Value) |
✅ |
| % of Distinct Count | Fields!field1.Value / CountDistinct(Fields!field2.Value) |
✅ |
| Replace (Alt) | Replace(Fields!inputString.Value, "findString", "replaceString") |
✅ |
| IsDate | IsDate(Fields!YourField.Value) |
✅ |
| IsDateTime | IsDate(Fields!YourField.Value) |
✅ |
| WeekDay | Weekday(Fields!YourDate.Value) |
✅ |
| DayOfWeek | Weekday(Fields!YourDate.Value) |
✅ |
| Month Name | MonthName(Month(Fields!YourDate.Value)) |
✅ |
| Week Day Name | WeekdayName(Weekday(Fields!YourDate.Value)) |
✅ |
| Print Date | Globals!ExecutionTime.ToShortDateString() |
✅ |
| Print Time | Globals!ExecutionTime.ToShortTimeString() |
✅ |
| Selection Locale | User!Language |
✅ |
| Pi | Math.PI |
✅ |
| Square Root | Sqrt(Fields!number.Value) |
✅ |
| Exponentiation | Exp(Fields!number.Value) |
✅ |
| Natural Log | Log(Fields!number.Value) |
✅ |
| String Compare | StrComp("string1", "string2", Compare) |
✅ |
| Execution Time | Globals!ExecutionTime |
✅ |
| Report Title | ReportItems!TextboxTitle.Value |
✅ |
See Also
- 37 Essential SSRS Expressions: Cheat Sheet for Report Designers
- How to migrate SSRS reports to the Bold Reports® Report Server