Skip to main content
All docs
V26.1
  • Built-in Expression Functions

    • 16 minutes to read

    An expression function is a named operation designed to process data fields, parameters, constants, and other expression elements. Each expression function returns a single calculated value.

    Functions are organized into the following categories:

    Function Call Syntax

    To call a function, specify its name followed by a comma-separated list of arguments in parentheses:

    FunctionName(<argument1>, <argument2>, ...)
    

    An argument can be any expression element: a field, parameter, constant, operator, or another function call. Function calls can be nested. For example, the following expression returns the trimmed, uppercase value of the CompanyName field:

    Upper(Trim([CompanyName]))
    

    Function names are case-insensitive. The case sensitivity of arguments depends entirely on the underlying data source. For example, Microsoft SQL Server Express treats uppercase and lowercase characters identically unless explicitly configured otherwise.

    Refer to the following help topic for general syntax rules and a complete list of expression elements: Expression Syntax.

    Math Functions

    Note

    Part of the results in the following table are rounded to four decimal places for readability. Corresponding functions do not round their return values.

    Function Description Example Result
    Abs(Value) Returns the absolute (non-negative) value of a numeric expression. Abs(-5) 5
    Acos(Value) Returns the angle (in radians) that corresponds to the specified cosine value. Acos(0) 1.5708
    Asin(Value) Returns the angle (in radians) that corresponds to the specified sine value. Asin(1) 1.5708
    Atn(Value) Returns the angle (in radians) that corresponds to the specified tangent value. Atn(1) 0.7854
    Atn2(Value1, Value2) Returns the angle (in radians) that corresponds to the tangent specified as a point in Cartesian coordinates (Value1 as Y and Value2 as X). Atn2(1, 1) 0.7854
    BigMul(Value1, Value2) Returns the full (non-truncated) product of two integer values. BigMul(50000, 50000) 2500000000
    Ceiling(Value) Rounds a value up to the nearest integer. Ceiling(4.2) 5
    Cos(Value) Returns the cosine of an angle specified in radians. Cos(0) 1
    Cosh(Value) Returns the hyperbolic cosine of an angle specified in radians. Cosh(0) 1
    Exp(Value) Returns e (the base of natural logarithms) raised to the specified power. Exp(1) 2.7183
    Floor(Value) Rounds a value down to the nearest integer. Floor(4.8) 4
    Log(Value) Returns the natural logarithm of a value. Log(20) 2.9957
    Log(Value, Base) Returns the logarithm of a value to the specified Base. Log(8, 2) 3
    Log10(Value) Returns the base-10 logarithm of a value. Log10(1000) 3
    Max(Value1, Value2) Returns the larger of two numeric values. Max(3, 7) 7
    Min(Value1, Value2) Returns the smaller of two numeric values. Min(3, 7) 3
    Power(Value, Power) Raises Value to the specified power. Power(2, 10) 1024
    Rnd() Returns a random number within the range between 0 and 1. Rnd() 0.4321
    Round(Value) Rounds a value to the nearest integer. Round(4.567) 5
    Round(Value, Precision) Rounds a value to the specified number of decimal places. Round(4.567, 2) 4.57
    Sign(Value) Returns 1 if the value is positive, -1 if it is negative, or 0 if it is zero. Sign(-8) -1
    Sin(Value) Returns the sine of an angle specified in radians. Sin(0) 0
    Sinh(Value) Returns the hyperbolic sine of an angle specified in radians. Sinh(0) 0
    Sqr(Value) Returns the square root of a value. Sqr(16) 4
    Tan(Value) Returns the tangent of an angle specified in radians. Tan(0) 0
    Tanh(Value) Returns the hyperbolic tangent of an angle specified in radians. Tanh(0) 0
    ToDecimal(Value) Converts a numeric expression to a decimal value. ToDecimal(12.5) 12.5
    ToDouble(Value) Converts a numeric expression to a double-precision value. ToDouble(12.5) 12.5
    ToFloat(Value) Converts a numeric expression to a floating-point value. ToFloat(12.5) 12.5
    ToInt(Value) Converts a numeric expression to an integer value. ToInt(12) 12
    ToLong(Value) Converts a numeric expression to a long integer value. ToLong(12) 12

    String Functions

    All character positions and indexes in the following table are zero-based. CharIndex searches use the current culture and return -1 if no match is found.

    Function Description Example Result
    Ascii(String) Returns the ASCII code of the first character in a string, or null if the string is empty. Ascii('A') 65
    Char(Number) Converts character code to the corresponding Unicode character. Char(65) 'A'
    CharIndex(SubString, String) Returns the zero-based index of the first SubString occurrence within String. CharIndex('World', 'Hello World') 6
    CharIndex(SubString, String, Start) Returns the zero-based index of the first SubString occurrence within String, starting from a position specified as Start. CharIndex('o', 'Hello World', 5) 7
    CharIndex(SubString, String, Start, Length) Returns the zero-based index of the first SubString occurrence within String, examining Length characters starting at position Start. CharIndex('o', 'Hello World', 5, 3) 7
    Concat(String1, ..., StringN) Concatenates all specified strings. Alternatively, you can concatenate strings using the + operator. Concat('Hello', ' ', 'World') 'Hello World'
    Contains(String, SubString) Returns True if SubString occurs anywhere within String. Contains('Hello World', 'World') True
    EndsWith(String, SubString) Returns True if String ends with SubString. EndsWith('Hello World', 'World') True
    FormatString(Format, Value1, ..., ValueN) Returns a string where each placeholder ({0}, {1}, etc.) in Format is replaced by the corresponding Value. FormatString('{0:$0.00}', 45.6) '$45.60'
    Insert(String1, Start, String2) Returns a copy of String1 with String2 inserted at position Start. Insert('Hello World', 5, ',') 'Hello, World'
    Join(String) Returns a string that includes all character from the source string separated by commas. Join('ABC') A,B,C
    Join(String, Separator) Returns a string that includes all characters from the source string separated by the specified Separator. Join('ABC', ';') A;B;C
    Len(Value) Returns the number of characters in a string. Len('Hello') 5
    Lower(String) Converts a string to lowercase using the invariant culture. Lower('HELLO') 'hello'
    NewLine() Returns the newline character sequence used by the current environment. [CategoryName] + NewLine() + [Description] Puts Description on its own line, below CategoryName.
    PadLeft(String, Length) Pads the specified string on the left with a space character until it reaches the specified total length. PadLeft('7', 3) ' 7'
    PadLeft(String, Length, Char) Pads the specified string on the left with Char until it reaches the specified total length. PadLeft('7', 3, '0') '007'
    PadRight(String, Length) Pads the specified string on the right with a space character until it reaches the specified total length. PadRight('7', 3) '7 '
    PadRight(String, Length, Char) Pads the specified string on the right with Char until it reaches the specified total length. PadRight('7', 3, '0') '700'
    Remove(String, Start) Returns a copy of String with all characters from position Start through the end removed. Remove('Hello World', 5) 'Hello'
    Remove(String, Start, Length) Returns a copy of String with Length characters removed, starting at position Start. Remove('Hello World', 5, 1) 'HelloWorld'
    Replace(String1, SubString, String2) Returns a copy of String1 with every occurrence of SubString replaced by String2. Replace('Hello World', 'World', 'There') 'Hello There'
    Reverse(String) Reverses the character order of a string. Reverse('Hello') 'olleH'
    StartsWith(String, SubString) Returns True if String starts with SubString. StartsWith('Hello World', 'Hello') True
    Substring(String, Start) Returns the portion of String from position Start through the end of the string. Substring('Hello World', 6) 'World'
    Substring(String, Start, Length) Returns String Length characters, starting at position Start. Substring('Hello World', 0, 5) 'Hello'
    ToStr(Value) Converts the specified value to a string. ToStr(42) '42'
    Trim(String) Removes leading and trailing white-space characters from a string. Trim(' Hello ') 'Hello'
    Upper(String) Converts a string to uppercase using the invariant culture. Upper('hello') 'HELLO'

    Date and Time Functions

    Current Date and Time

    Function Description Example Result
    Now() Returns the current date and time. Now() 2026-09-28 14:30:00
    Today() Returns the current date with the time set to 00:00:00. Today() 2026-09-28 00:00:00
    UtcNow() Returns the current date and time in Coordinated Universal Time (UTC). UtcNow() For example, 2026-09-28 11:30:00 in the UTC+3 time zone.

    Relative Date and Time Values

    Function Description Example Result
    LocalDateTimeDayAfterTomorrow() Returns the start (00:00:00) of the day after tomorrow. LocalDateTimeDayAfterTomorrow() 2026-09-30 00:00:00
    LocalDateTimeLastMonth() Returns the first day (00:00:00) of the previous month. LocalDateTimeLastMonth() 2026-08-01 00:00:00
    LocalDateTimeLastWeek() Returns the start (00:00:00) of the previous week. LocalDateTimeLastWeek() 2026-09-20 00:00:00
    LocalDateTimeLastYear() Returns the first day (00:00:00) of the previous year. LocalDateTimeLastYear() 2025-01-01 00:00:00
    LocalDateTimeNextMonth() Returns the first day (00:00:00) of the next month. LocalDateTimeNextMonth() 2026-10-01 00:00:00
    LocalDateTimeNextWeek() Returns the start (00:00:00) of the next week. LocalDateTimeNextWeek() 2026-10-04 00:00:00
    LocalDateTimeNextYear() Returns the first day (00:00:00) of the next year. LocalDateTimeNextYear() 2027-01-01 00:00:00
    LocalDateTimeThisMonth() Returns the first day (00:00:00) of the current month. LocalDateTimeThisMonth() 2026-09-01 00:00:00
    LocalDateTimeThisWeek() Returns the start (00:00:00) of the current week. LocalDateTimeThisWeek() 2026-09-27 00:00:00
    LocalDateTimeThisYear() Returns the first day (00:00:00) of the current year. LocalDateTimeThisYear() 2026-01-01 00:00:00
    LocalDateTimeToday() Returns the start (00:00:00) of the current day. LocalDateTimeToday() 2026-09-28 00:00:00
    LocalDateTimeTomorrow() Returns the start (00:00:00) of the next day. LocalDateTimeTomorrow() 2026-09-29 00:00:00
    LocalDateTimeTwoMonthsAway() Returns the first day (00:00:00) of the month after next. LocalDateTimeTwoMonthsAway() 2026-11-01 00:00:00
    LocalDateTimeTwoWeeksAway() Returns the start (00:00:00) of the week after next. LocalDateTimeTwoWeeksAway() 2026-10-11 00:00:00
    LocalDateTimeTwoYearsAway() Returns the first day (00:00:00) of the year after next. LocalDateTimeTwoYearsAway() 2028-01-01 00:00:00
    LocalDateTimeYearBeforeToday() Returns the date (00:00:00) exactly one year before today. LocalDateTimeYearBeforeToday() 2025-09-28 00:00:00
    LocalDateTimeYesterday() Returns the start (00:00:00) of the previous day. LocalDateTimeYesterday() 2026-09-27 00:00:00

    Date and Time Arithmetic

    Function Description Example Result
    AddDays(Date, Count) Adds the specified number of days to a date. Count can include a fractional part. Negative values subtract days. AddDays(#2026-01-15#, 20) 2026-02-04 00:00:00
    AddHours(Time, Count) Adds the specified number of hours to a date/time value. Count can include a fractional part. Negative values subtract hours. AddHours(#2026-01-15 10:00:00#, 5) 2026-01-15 15:00:00
    AddMilliSeconds(Time, Count) Adds the specified number of milliseconds to a date/time value. Count can include a fractional part. Negative values subtract milliseconds. AddMilliSeconds(#2026-01-15 10:00:00.000#, 500) 2026-01-15 10:00:00.500
    AddMinutes(Time, Count) Adds the specified number of minutes to a date/time value. Count can include a fractional part. Negative values subtract minutes. AddMinutes(#2026-01-15 10:00:00#, 90) 2026-01-15 11:30:00
    AddMonths(Date, Count) Adds the specified integer number of months to a date. Negative Count values subtract months. AddMonths(#2026-01-15#, 2) 2026-03-15 00:00:00
    AddSeconds(Time, Count) Adds the specified number of seconds to a date/time value. Count can include a fractional part. Negative values subtract seconds. AddSeconds(#2026-01-15 10:00:00#, 90) 2026-01-15 10:01:30
    AddTicks(DateTime, Count) Adds the specified integer number of ticks (100-nanosecond intervals) to a date/time value. Negative Count values subtract ticks. AddTicks(#2026-01-15 10:00:00#, 10000000) 2026-01-15 10:00:01
    AddTimeSpan(DateTime, TimeSpan) Adds the specified time span to a date/time value. TimeSpan can be positive or negative. AddTimeSpan([StartDate], [Duration]) A date/time value offset by [Duration].
    AddYears(Date, Count) Adds the specified integer number of years to a date. Negative Count values subtract years. AddYears(#2026-01-15#, 3) 2029-01-15 00:00:00

    Differences between Dates

    Function Description Example Result
    DateDiffDay(StartDate, EndDate) Returns the number of day boundaries crossed between two dates. DateDiffDay(#2026-01-01#, #2026-03-15#) 73
    DateDiffHour(StartTime, EndTime) Returns the number of hour boundaries crossed between two date/time values. DateDiffHour(#2026-01-01 08:00:00#, #2026-01-01 17:30:00#) 9
    DateDiffMilliSecond(StartTime, EndTime) Returns the number of millisecond boundaries crossed between two date/time values. DateDiffMilliSecond(#2026-01-01 08:00:00.000#, #2026-01-01 08:00:00.250#) 250
    DateDiffMinute(StartTime, EndTime) Returns the number of minute boundaries crossed between two date/time values. DateDiffMinute(#2026-01-01 08:00:00#, #2026-01-01 08:05:30#) 5
    DateDiffMonth(StartDate, EndDate) Returns the number of month boundaries crossed between two dates. DateDiffMonth(#2026-01-01#, #2026-03-15#) 2
    DateDiffSecond(StartTime, EndTime) Returns the number of second boundaries crossed between two date/time values. DateDiffSecond(#2026-01-01 08:00:00#, #2026-01-01 08:00:05#) 5
    DateDiffTick(StartTime, EndTime) Returns the number of tick boundaries crossed between two date/time values. DateDiffTick(#2026-01-01 08:00:00#, #2026-01-01 08:00:01#) 10000000
    DateDiffYear(StartDate, EndDate) Returns the number of year boundaries crossed between two dates. DateDiffYear(#2025-06-01#, #2026-03-15#) 1

    Date and Time Components

    Function Description Example Result
    GetDate(Date) Returns the date part of a date/time value; the time part is set to 00:00:00. GetDate(#2026-03-15 14:45:30#) 2026-03-15 00:00:00
    GetDay(Date) Returns the day of the month of a date (1–31). GetDay(#2026-03-15#) 15
    GetDayOfWeek(Date) Returns the day of the week as an integer from 0 (Sunday) to 6 (Saturday). GetDayOfWeek(#2026-03-15#) 0
    GetDayOfYear(Date) Returns the day of the year (1–366). GetDayOfYear(#2026-03-15#) 74
    GetHour(Time) Returns the hour component of a date/time value (0–23). GetHour(#2026-03-15 14:45:30#) 14
    GetMilliSecond(Time) Returns the millisecond component of a date/time value (0–999). GetMilliSecond(#2026-03-15 14:45:30.250#) 250
    GetMinute(Time) Returns the minute component of a date/time value (0–59). GetMinute(#2026-03-15 14:45:30#) 45
    GetMonth(Date) Returns the month of a date (1–12). GetMonth(#2026-03-15#) 3
    GetSecond(Time) Returns the second component of a date/time value (0–59). GetSecond(#2026-03-15 14:45:30#) 30
    GetTimeOfDay(Date) Returns the number of 100-nanosecond ticks since midnight as a 64-bit integer. GetTimeOfDay(#2026-03-15 14:45:30#) 531300000000
    GetYear(Date) Returns the year of a date. GetYear(#2026-03-15#) 2026

    Constructing Date and Time Values

    Function Description Example Result
    DateTimeFromParts(Year, Month, Day[, Hour[, Minute[, Second]]]) Constructs a date/time value from individual components. Omitted time components are interpreted as 0. DateTimeFromParts(2026, 3, 15) 2026-03-15 00:00:00
    TimeOnlyFromParts(Hour, Minute[, Second[, Millisecond]]) Constructs a time-of-day value from individual components. Omitted components are interpreted as 0. TimeOnlyFromParts(14, 45) 14:45:00

    Period Checks

    Function Description Example Result
    InDateRange(Date, FromDate, ToDate) Returns True if Date is between FromDate and ToDate, including both boundaries. The comparison includes the time of day. If ToDate is #2026-12-31#, the range ends at midnight at the start of December 31 and excludes later times that day. InDateRange(#2026-03-15#, #2026-01-01#, #2026-12-31#) True
    IsApril(Date) Returns True if the specified date falls within April. IsApril(#2026-04-10#) True
    IsAugust(Date) Returns True if the specified date falls within August. IsAugust(#2026-08-01#) True
    IsDecember(Date) Returns True if the specified date falls within December. IsDecember(#2026-12-25#) True
    IsFebruary(Date) Returns True if the specified date falls within February. IsFebruary(#2026-02-14#) True
    IsJanuary(Date) Returns True if the specified date falls within January. IsJanuary(#2026-01-01#) True
    IsJuly(Date) Returns True if the specified date falls within July. IsJuly(#2026-07-04#) True
    IsJune(Date) Returns True if the specified date falls within June. IsJune(#2026-06-01#) True
    IsLastMonth(Date) Returns True if the specified date falls within the previous month. IsLastMonth(#2026-08-15#) True
    IsLastYear(Date) Returns True if the specified date falls within the previous year. IsLastYear(#2025-05-01#) True
    IsMarch(Date) Returns True if the specified date falls within March. IsMarch(#2026-03-01#) True
    IsMay(Date) Returns True if the specified date falls within May. IsMay(#2026-05-01#) True
    IsNextMonth(Date) Returns True if the specified date falls within the next month. IsNextMonth(#2026-10-01#) True
    IsNextYear(Date) Returns True if the specified date falls within the next year. IsNextYear(#2027-01-01#) True
    IsNovember(Date) Returns True if the specified date falls within November. IsNovember(#2026-11-01#) True
    IsOctober(Date) Returns True if the specified date falls within October. IsOctober(#2026-10-01#) True
    IsSameDay(Date1, Date2) Returns True if both date/time values fall on the same calendar day. IsSameDay(#2026-03-15 08:00:00#, #2026-03-15 20:00:00#) True
    IsSeptember(Date) Returns True if the specified date falls within September. IsSeptember(#2026-09-01#) True
    IsThisMonth(Date) Returns True if the specified date falls within the current month. IsThisMonth(#2026-09-15#) True
    IsThisWeek(Date) Returns True if the specified date falls within the current week. IsThisWeek(#2026-09-28#) True
    IsThisYear(Date) Returns True if the specified date falls within the current year. IsThisYear(#2026-01-01#) True
    IsYearToDate(Date) Returns True if the specified date falls between the first day of the current year and today, inclusive. IsYearToDate(#2026-05-01#) True

    Time-of-Day Checks

    Function Description Example Result
    AfterMidday(Time) Returns True if the specified time is after 12:00 PM. AfterMidday(#14:00:00#) True
    BeforeMidday(Time) Returns True if the specified time is before 12:00 PM. BeforeMidday(#09:00:00#) True
    IsAfternoon(Time) Returns True if the specified time falls between 12:00 PM and 6:00 PM. IsAfternoon(#15:00:00#) True
    IsEvening(Time) Returns True if the specified time falls between 6:00 PM and 9:00 PM. IsEvening(#19:00:00#) True
    IsFreeTime(Time) Returns True if the specified time falls within free time, as configured for the report locale. IsFreeTime([StartTime]) Depends on the free-time hours configured for the report locale.
    IsLastHour(Time) Returns True if the specified time falls within the previous hour. IsLastHour(#2026-09-28 13:45:00#) True
    IsLunchTime(Time) Returns True if the specified time falls within lunchtime, as configured for the report locale. IsLunchTime([StartTime]) Depends on the lunchtime hours configured for the report locale.
    IsMorning(Time) Returns True if the specified time falls between 6:00 AM and 12:00 PM. IsMorning(#08:00:00#) True
    IsNextHour(Time) Returns True if the specified time falls within the next hour. IsNextHour(#2026-09-28 15:15:00#) True
    IsNight(Time) Returns True if the specified time falls between 9:00 PM and 9:00 AM. IsNight(#23:00:00#) True
    IsSameHour(Time1, Time2) Returns True if both values fall within the same hour of the same day. IsSameHour(#2026-09-28 14:15:00#, #2026-09-28 14:45:00#) True
    IsSameTime(Time1, Time2) Returns True if both values fall within the same date, hour, and minute. IsSameTime(#2026-09-28 14:30:15#, #2026-09-28 14:30:45#) True
    IsThisHour(Time) Returns True if the specified time falls within the current hour. IsThisHour(#2026-09-28 14:05:00#) True
    IsWorkTime(Time) Returns True if the specified time falls within work hours, as configured for the report locale. IsWorkTime([StartTime]) Depends on the work hours configured for the report locale.

    Time Zone Conversion

    Function Description Example Result
    LocalTimeToUtc(DateTime) Converts a local date/time value to UTC. LocalTimeToUtc(#2026-09-28 14:30:00#) For example, 2026-09-28 11:30:00 for the UTC+3 time zone.
    UtcToLocalTime(DateTime) Converts a UTC date/time value to the local time zone. UtcToLocalTime(#2026-09-28 11:30:00#) For example, 2026-09-28 14:30:00 for the UTC+3 time zone.

    Logical Functions

    Function Description Example Result
    Iif(Condition1, Value1, ..., ConditionN, ValueN, DefaultValue) Evaluates each condition in order and returns the value that corresponds to the first condition that is True. If none of the conditions are True, returns DefaultValue. Iif([Amount] > 1000, 'High', [Amount] > 100, 'Medium', 'Low') 'Medium' if [Amount] is 500.
    InRange(Value, FromValue, ToValue) Returns True if Value falls between FromValue and ToValue, inclusive. InRange(75, 1, 100) True
    IsNull(Value) Returns True if Value is a null reference. See also the ? null reference constant in the Constants section. IsNull([MiddleName]) True if [MiddleName] is null.
    IsNull(Value, DefaultValue) Returns DefaultValue if Value is a null reference; otherwise, returns Value. IsNull([MiddleName], 'N/A') 'N/A' if [MiddleName] is null.
    IsNullOrEmpty(String) Returns True if String is a null reference or an empty string. IsNullOrEmpty('') True

    Aggregate Functions

    Aggregate functions calculate a single value from a collection of report records. Call them as methods on the collection, optionally filtered by a [Condition]:

    [][[CategoryID] == 5].Sum([UnitPrice] * [UnitsInStock])
    
    Function Description Example
    [Collection].Avg(Expression) Returns the average of Expression across the collection. [].Avg([UnitPrice])
    [Collection].Count() Returns the number of objects in the collection. [Products].Count()
    [Collection].Exists() Returns True if the collection contains at least one object. [Products].Exists()
    [Collection].Join(Expression) Concatenates the Expression value of every object in the collection into a single string, separated by a comma. [Products].Join([ProductName])
    [Collection].Join(Expression, Separator) Concatenates the Expression value of every object in the collection into a single string, separated by the specified Separator. [Products].Join([ProductName], '; ')
    [Collection].Max(Expression) Returns the largest value of Expression across the collection. [Products].Max([UnitPrice])
    [Collection].Min(Expression) Returns the smallest value of Expression across the collection. [Products].Min([UnitPrice])
    [Collection].Single() Returns the single object in the collection. Raises an error if the collection does not contain exactly one object. [Orders].Single()
    [Collection].Sum(Expression) Returns the sum of Expression across the collection. [Products].Sum([UnitPrice])

    Reporting Functions

    Function Description Example
    Argb(Alpha, Red, Green, Blue) Returns a string that specifies a color using alpha, red, green, and blue channel values. Argb(1, 200, 30, 200)
    ConvertDataToEPC(BeneficiaryName, IBAN, BIC, TransferAmount, CreditorReference, RemittanceInformation[, TransferPurpose[, Message]]) Combines the specified payment details into the data string used to generate an EPC QR code (a standard payment QR code recognized by European banking apps). The last two arguments are optional. ConvertDataToEPC('Red Cross', 'BE72000000001616', 'BPOTBEB1', '20.0', '', 'Urgency fund')
    CurrentRowIndexInGroup() Returns the current row’s index within its group. In a nested group hierarchy, returns the index at the deepest level. CurrentRowIndexInGroup()
    GetDisplayText(?Parameter) Returns display text for a parameter’s value if the parameter uses a static or dynamic lookup list; otherwise, returns the parameter’s value as a string. GetDisplayText(?CountryParameter)
    GroupIndex(Level) Returns the index of the parent group row at the specified nesting level. GroupIndex(1)
    NextRowColumnValue(ColumnName) Returns the value of the specified column from the next row in the data source. NextRowColumnValue('UnitPrice')
    PrevRowColumnValue(ColumnName) Returns the value of the specified column from the previous row in the data source. PrevRowColumnValue('UnitPrice')
    Rgb(Red, Green, Blue) Returns a string that specifies a color using red, green, and blue channel values. Rgb(30, 200, 150)