In this post, We will see how to create multi select parameter on SSRS report dialog.
Step 1: Assumption : We have already regular table created or You can create new table based on your requirement. I will take an example of CustTable and CustTrans.
Step 2 : Create a temporary table DemoMultiLookupTmp
Add a new field as below
Field Name: AccountNum
Type: String
EDT: CustAccount
Step 3 : Create a new Query DemoMultiLookupQuery
Add data source CustTable and put required fields including AccountNum
Step 4 : Create a contract class DemoMultiLookupContract
[ DataContractAttribute, SysOperationContractProcessingAttribute(classStr(DemoMultiLookupUIBuilder)) ]
public class DemoMultiLookupContract
{
List accountNum;
}
[
DataMemberAttribute('AccountNum'),
AifCollectionTypeAttribute('AccountNum', Types::String),
SysOperationLabelAttribute(literalstr("Account Num"))
]
public List parmAccountNum(List _accountNum = accountNum)
{
accountNum = _accountNum;
return accountNum;
}
Step 5 : Create a UI Builder class DemoMultiLookupUIBuilder
class DemoMultiLookupUIBuilder extends SysOperationAutomaticUIBuilder
{
DialogField accNum;
}
-------------------------------------------------------------------------------------------------------------
public void lookup(FormStringControl _control)
{
Query query = newQuery(queryStr(DemoMultiLookupQuery));
container cnt;
SysLookupMultiSelectGrid::lookup(query, _control, _control, cnt);
}
-------------------------------------------------------------------------------------------------------------
public void postBuild()
{
DialogField dialogEntity;
super();
dialogEntity= this.bindInfo().getDialogField(this.dataContractObject(),
methodStr(DemoMultiLookupUIBuilder, parmAccountNum));
dialogEntity.registerOverrideMethod(methodStr(FormStringControl, lookup),
methodStr(DemoMultiLookupUIBuilder,lookup), this);
if (dialogEntity)
{
dialogEntity.lookupButton(2);
}
}
Step 6 : Create a UI Builder class RDP class DemoMultiLookupDP
[SRSReportParameterAttribute(classstr(DemoMultiLookupContract))]
public class DemoMultiLookupDP extends SRSReportDataProviderBase
{
DemoMultiLookupTmp tmp;
CustTable custTable;
List accountNum;
}
-------------------------------------------------------------------------------------------------------------
[SRSReportDataSetAttribute(tablestr(DemoMultiLookupTmp))]
publicTest_MultiParmTable getMultiTmp()
{
select * from tmp;
return tmp;
}
---------------------------------------------------------------------------------------------------------------
[SysEntryPointAttribute]
public void processReport()
{
DemoMultiLookupContract contract = this.parmDataContract() as DemoMultiLookupContract;
accountNum = contract.parmAccountNum();
if(accountNum)
{
tmp.clear();
tmp.AccountNum = custTable.AccountNum ;
tmp.CustName = custTable.name();
tmp.insert();
}
}
Step 6 : Create a new SSRS report
1. Open Visual Studio and create new reporting project and name Test_ DemoMultiLookupProject
2. Create new Report and rename to DemoMultiLookupReport
3. Create new dataset and map to RDP
4. Create new design and drag n drop dataset to design
Step 7 : Create a new Menu item
1. Create new menu item of object type : SSRS
2. Change property of Object and Report design to Report name & design name respectively
Step 7 : Test report
Open Menu item to test the report and select the multiple records.


So, In this way we can select multiple values in the lookup.
Leave a Reply