Interesting, I was modifying some RDP based report, I found that parameter was passed to report through custom table, As report will run form button, and based on current selected record. So former developer did that on pressing button, selected value inserted some custom table. When report run, query on table and fetch required value form custom table and whole report logic run on that value. That approach works fine, single user environment. Problem I found to send parameter to report through x++ code. I found SrsReportRunController works wonder here.
Suppose we are running some report for customer, And Report Name is customer Report and we have to pass current customer account on form as parameter. If you report is based on Report data provider than following code snippet works for you.
SrsReportRunController controller = new SrsReportRunController();
CustomerReprtDC rdpContract = new CustomerReprtDC ();
SRSPrintDestinationSettings settings;
super();
controller.parmReportName(ssrsReportStr(CustomerReport,CustomerCopy));
controller.parmShowDialog(false);
rdpContract.parmCustAccount(CustTable.AccountNum);
controller.parmReportContract().parmRdpContract(rdpContract);
controller.startOperation();