Multilookup Function
Returns the set of first-match values for the specified set of names from a dataset that contains name/value pairs.
Use Multilookup to retrieve a set of values from a dataset for name-value pairs where each pair has a 1-to-1 relationship. MultiLookup is the equivalent of calling Lookup for a set of names or keys. For example, for a multivalue parameter that is based on primary key identifiers, you can use Multilookup in an expression in a text box in a table to retrieve associated values from a dataset that is not bound to the parameter or to the table.
Multilookup does the following:
Evaluates the source expression in the current scope and generates an array of variant objects.
For each object in the array, calls Lookup Function and adds the result to the return array.
Returns the set of results.
To retrieve a single value from a dataset with name-value pairs for a specified name where there is a 1-to-1 relationship, use Lookup Function. To retrieve multiple values from a dataset with name-value pairs for a name where there is a 1-to-many relationship, use LookupSet Function.
The following restrictions apply:
Multilookup is evaluated after all filter expressions are applied
Only one level of look-up is supported. A source, destination, or result expression cannot include a reference to a lookup function.
Source and destination expressions must evaluate to the same data type.
Source, destination, and result expressions cannot include references to report or group variables.
Multilookup cannot be used as an expression for the following report items:
Dynamic connection strings for a data source.
Calculated fields in a dataset.
Query parameters in a dataset.
Filters in a dataset.
Report parameters.
The Report.Language property.
Assume a dataset called "Category" contains the field CategoryList, which is a field that contains a comma-separated list of category identifers, for example, "2, 4, 2, 1".
The dataset CategoryNames contains the category identifier and category name, as shown in the following table.
ID | Name |
|---|---|
1 | Accessories |
2 | Bikes |
3 | Clothing |
4 | Components |
To look up the names that correspond to the list of identifiers, use Multilookup. You must first split the list into a string array, call Multilookup to retrieve the category names, and concatenate the results into a string.
The following expression, when placed in a text box in a data region bound to the Category dataset, displays "Bikes, Components, Bikes, Accessories":
=Join(MultiLookup(Split(Fields!CategoryList.Value,","), Fields!CategoryID.Value,Fields!CategoryName.Value,"Category")), ", ")
Assume a dataset ProductColors contains a color identifier field ColorID and a color value field Color, as shown in the following table.
ColorID | Color |
|---|---|
1 | Red |
2 | Blue |
3 | Green |
Assume the multivalue parameter MyColors is not bound to a dataset for its available values. The default values for the parameter are set to 2 and 3. The following expression, when placed in a text box in a table, concatenates the multiple selected values for the parameter into a comma-separated list and displays "Blue, Green".
=Join(MultiLookup(Parameters!MyColors.Value,Fields!ColorID.Value,Fields!Color.Value,"ProductColors"),", ")