DEar ALl,
I have added Dynamics Query range of parameters to SSRS reports using TmpSysQuery Logic.
Below is the code :
public void processReport()
{
Query q;
QueryRun qRun;
QueryBuildDataSource qbds;
InventDim inventDim;
ProdTable prodTable;
xxxProdOverviewReportDataTmp.setTmp();
q = this.parmQuery();
tmpSysQuery = xxxUtil::rangesToTable(q);
qRun = new QueryRun(q);
while(qRun.next())
{
xxxProdOverviewReportDataTmp.clear();
prodTable = qrun.get(tablenum(ProdTable));
inventDim = qrun.get(tablenum(InventDim));
xxxProdOverviewReportDataTmp.ItemId = prodTable.ItemId;
.....
xxxProdOverviewReportDataTmp.insert();
}
[SRSReportDataSetAttribute(tablestr(xxxTmpSysQuery))]
public xxTmpSysQuery getTmpSysQuery()
{
select tmpSysQuery;
return tmpSysQuery;
}
public static xxxTmpSysQuery rangesToTable(Query _query)
{
QueryBuildDataSource qbds;
QueryBuildRange queryBuildRange;
xxTmpSysQuery tmpSysQuery;
LabelType tableLabel;
int occurrence;
int dataSourceNo;
int i;
if (!_query)
{
return tmpSysQuery;
}
for (dataSourceNo = 1; dataSourceNo <= _query.dataSourceCount(); dataSourceNo++)
{
qbds = _query.dataSourceNo(dataSourceNo);
if (qbds.enabled())
{
occurrence = SysQuery::tableOccurrence(_query, qbds.table(), dataSourceNo);
tableLabel = tableId2pname(qbds.table()) + SysQuery::tableOccurrenceText(occurrence);
for (i = 1; i <= qbds.rangeCount(); i++)
{
queryBuildRange = qbds.range(i);
if (queryBuildRange.value() && queryBuildRange.status() != RangeStatus::Hidden)
{
tmpSysQuery.clear();
tmpSysQuery.DataSourceNo = qbds.uniqueId();
tmpSysQuery.TableLabel = tableLabel;
tmpSysQuery.FieldLabel = fieldId2pname(qbds.table(), queryBuildRange.field());
tmpSysQuery.RangeValue = queryBuildRange.value();
tmpSysQuery.insert();
}
}
}
}
return tmpSysQuery;
}
Now the Report output show data but not the query Range . ANy Idea?/
Pls see atatched sceenshot.
