Expressions specify how to find or calculate a value when the report runs. Properties of a report item that can be configured using expressions are located in the Expressions Panel . To learn more about how to configure a property with an expression see the Expression Editor.
Expressions allow you to:
▪Configure report elements when you don't know in advance what an element's value will be.
•A simple example of this is a data field whose value is obtained when VertiGIS Studio Reporting queries the data source.
▪Compute complex values.
•For example, you could use an expression to perform mathematical operations on data fields and present the results in the report.
▪Build complex strings.
•For example, you could use an expression to build a phrase with embedded data values, or you could build the URL for an image that you want to include in a report.
▪Use conditional values in a report.
•For example, you could present different information depending on the value of a data field. The Iif() function is used to configure conditional values.
▪Filter a report's query.
•Expressions that filter queries are discussed in Filter Conditions.
Expressions in VertiGIS Studio Report Designer can be made up of one or many of the following components:
▪Data fields
▪Functions
▪Operators
▪Literals
▪Parameters
To see a complete list of the operators, literals, and functions that you can use in expressions, see Operators, Literals, and Functions.
Follow the syntax conventions below when you create expressions:
▪Enclose data field names in square brackets ([]), for example: [Products.ProductName]
▪Type a question mark (?) before query parameter names, for example: ?queryparameter
▪Add the Parameters prefix before report parameters names, for example: [Parameters.reportparameter]
▪Enclose string literals in single quotes ('), for example: 'USA'
The use of quotation marks ("), for example, "Quoted Text", results in an error.
▪To embed an apostrophe into a string literal, type two apostrophes, for example: 'It''s an example'
▪The Boolean literals are True and False.
▪Enclose date-time literals in hash marks (#), for example: [OrderDate] >= #1/1/2016#
▪Use a question mark (?) to represent a null reference (one that does not refer to any object), for example: [Region] != ?
▪Use round brackets () to control the order in which an expression is evaluated, for example: 2 * ([Quantity] - 1)
▪If an expression contains terms of different types, you can use dedicated functions to convert the types, for example: Max(ToDecimal([Quantity]),[UnitPrice])
▪Refer to Operators, Literals, and Functions for a complete list of supported operators, literals, and functions.
String expressions are expressions that evaluate to a string. A complex string expression combines (concatenates) a number of string literals, data fields, and functions using the concatenation operator, +.
String literals are enclosed in single quotes, for example, 'This is a string literal'. Note that you cannot use double quotes (") instead of single quotations. To embed an apostrophe into a string literal, type a two apostrophes, for example, 'It''s an example' appears in the report as: It's an example
Concatenating strings in an expression allows you to build complex strings that contain data. One common scenario is labelling data. For example, to label a record's object ID, you could use an expression like'Object ID: ' + [objectid]. This appears in the report as, for example: Object ID: 19245
In other situations, you may want to build phrases or complete sentences. For example, the expression 'Towns with a population of ' + [MaxPop] + ' or less are eligible to apply for a ' + [ProgramName] + '.' appears in the report as, for example: Towns with a population of 50000 or less are eligible to apply for a Small Town Improvement Grant.
You can configure multiple lines of text in a single string expression by using the NewLine() function. For example, suppose you want to configure a Label control to present data for a person's name on the first line and the person's address on subsequent lines, such as the following:
Jennifer Scott
465 Mallory Lane
Denver, CO
80022
To do this, you could configure an expression like this:
[Name] + NewLine() + [StreetAddress] + NewLine() + [City] + ', ' + [State] + NewLine() + [ZipCode]
As an alternative to the + concatenation operator, you can use the Concat() function to concatenate any number of strings. For example, to label data, you could use an expression like this: Concat('Object ID: ', [objectid])
See also...
You can use conditional values in a report by using the logical function, Iif(). The Iif() function takes three arguments: a Boolean expression, a value to use if the Boolean expression evaluates to True, and a value to use if the Boolean expression evaluates to False. The arguments are separated by commas: Iif(BoolenExpression, TruePart, FalsePart).
For example, to present the value of a Boolean data field in a report, you could use the expression Iif([BooleanField],True,False). More commonly, you use values that reflect what the field represents instead of True and False, for example, Iif([RoadClosed], 'Road Closed', 'Road Open'). The conditional values do not have to be literals—they can be expressions. For example, Iif([CropArea]<=10, 'Livestock: '+[HasLivestock]+' Produce: '+[HasProduce]+' Flowers: '+[HasFlowers], 'Not a market garden').
Expression |
Result Type |
Description |
[OBJECTID] |
Same as the type of the data field |
Evaluates to the value of the OBJECTID field for the current record, for example: 145632 |
'Object ID: ' + [OBJECTID] |
String |
Concatenates the "Object ID: " string with the value of the OBJECTID field for the current record, for example: Object ID: 145632 |
[Distance] + [DistanceUnits] |
String |
Concatenates the value of the current record's Distance field and the value of the current record's DistanceUnits field, for example: 26.3km |
[pop2018] - [pop2014] |
Numeric |
Calculates the difference between the values of the pop2018 field and pop2014 field, for example, if pop2018 is 966 and pop2014 is 711: 255 |
'Population Change: ' + ([pop2018] - [pop2014]) |
String |
Concatenates the "Population Change: " string with the difference between pop2018 and pop2014, for example: Population Change: 255 |
[STATENAME] == 'California' |
Boolean |
Evaluates to True if the value of the current record's STATENAME field is California. Otherwise, it evaluates to False. |
[MyLayer.OBJECTID] In(?FeatureIds) |
Boolean |
Evaluates to True if the value of the current record's OBJECTID field is one of the features currently selected by the user. Otherwise, it evaluates to False. An expression similar to this is used to present the current selection set in the report. See Use the Current Features as Report Inputs. |
Today() |
Date |
Evaluates to today's date, for example: 23 July, 2018 Today() is a function. For more information, see Expressions. |