How to Set the Query Range on a SSRS Report

If the SSRS report is build with AOT query

SRSReportRun reportRun = new SRSReportRun(‘Report1.AutoDesign1’);

// Create variables for setting the range for the query.

Query query;

QueryBuildDataSource queryBuildDataSource;

QueryBuildRange queryBuildRange;

int i;

// Check if the query will return data.

if (reportRun.init())

{

// Find the Cust query.

query = reportRun.reportQuery(‘Cust’); // query name of the report

if (query != null)

{

// Get the Customers data source.

queryBuildDataSource = query.dataSourceName(‘Customers’);

if (queryBuildDataSource != null)

{

queryBuildRange = queryBuildDataSource.addRange(fieldName2Id(queryBuildDataSource.table(), ‘AccountNum’));

queryBuildRange.value(‘4000’);

}

}

// Save the report settings.

reportRun.saveSettings();

// Run the report.

reportRun.run();

}

If the report is build with Data contract

Here is an example which comes from the AOT – Classes – CustPamnManOutputReportController – preRunModifyContract method:

protected void preRunModifyContract()

{

Query reportQuery;

SrsReportRdlDataContract rdlContract;

rdlContract = this.parmReportContract().parmRdlContract(); // may be some changes require here if the report is running from some job.

if (rdlContract.getValue(#reportParameter))

{

custPaymManFile.reportDate(systemdateget());

custPaymManFile.status(PaymManRemittanceStatus::Sent);

}

this.processReport(custPaymManFile);

reportQuery = new Query(querystr(CustPaymManOutputReport));

SRSReportHelper::addParameterValueRangeToQuery(

reportQuery,

tablenum(TmpPaymManOutputReport),

fieldnum(TmpPaymManOutputReport, SessionId),

this.currentSessionId());

this.parmReportContract().parmQueryContracts().insert(queryKey, reportQuery);

}