LookupSet based on two fields combined instead of one

Georges Sabbagh picture Georges Sabbagh · Nov 19, 2012 · Viewed 12.5k times · Source

I have two datasets: Dataset1 (primary) and Dataset2. My report dataset is Dataset1.

I want to access Gross premium Amount from Dataset2 and put it in the report. The report is working just fine if the parameter for "market name" is a single value parameter.

When I set the parameter properties to "Allow Multiple Values", my report is displaying wrong Totals for "Production" Field. The problem is because the lookupset function is based on Currency_Type.

What I should do is search for each Market Name and for each currency type, then search for the appropriate Gross Premium in second dataset and return the value.

Dataset1:

Market Name      Currency Type     Receivable

Dataset2:

Company Name2    Currency Type1    Gross Premium Amount

The results should be like this:

Market Name      Currency Type     Receivable             Gross Premium Amount

I used this code if to search for one value:

=code.SumLookup(LookupSet(Fields!Currency_Type.Value, Fields!Currency_Type1.Value,Fields!Gross_Premium_Amount.Value, "DataSet2"))

What should I do if I want the lookupset based on Market Name and Currency Type combined?

Answer

Jamie F picture Jamie F · Nov 20, 2012

Can you join the datasets in your query? That would be a lot easier, if it's possible. Otherwise you need to have some way to break apart your multi-value parameter, such as a including it as an element in your first dataset. (Maybe even a cross join if appropriate.)

But to directly answer your question

What should I do if I want the lookupset based on Market Name and Currency Type combined?

[Note that this doesn't have much to do with how to lookup a multi-value parameter.]

I have solved this problem by creating a key from the two pieces of information in my queries themselves, such as with string concatenation, but you can also do the same in your LookupSet function:

=LookupSet(Fields!Currency_Type.Value +"-" + Fields!MarketName.Value, Fields!Currency_Type1.Value + "-" + Fields!Market_Name.Value, Fields!Gross_Premium_Amount.Value, "DataSet2"))

This will only work if MarketName is a value in your first dataset.