Microsoft Dynamics 365 SSRS报表仅显示单行问题求助
Dynamics 365报表仅显示第一条数据的排查方案
一、DP类代码排查
- 验证数据源查询结果:直接运行DP类关联的Query对象,确认查询是否返回2条目标数据。检查Query的过滤条件、表连接关系(如Join/Exists子句)是否误过滤了第二条记录。
- 检查临时表数据插入逻辑:如果使用临时表存储报表数据,确保在
processReport方法中正确遍历所有查询结果并插入:
重点排查:是否存在提前跳出循环的[SysEntryPointAttribute] public void processReport() { MyTable myTable; QueryRun queryRun = new QueryRun(this.parmQuery()); MyReportTmpTable reportTmp; // 确保临时表初始化正确,避免数据覆盖 delete_from reportTmp; while (queryRun.next()) { myTable = queryRun.get(tablenum(MyTable)); // 逐条插入临时表,检查是否有遗漏 reportTmp.Field1 = myTable.Field1; reportTmp.Field2 = myTable.Field2; reportTmp.insert(); } // 调试用:输出临时表记录数,确认是否为2 info(strFmt('临时表记录数:%1', select count(RecId) from reportTmp)); }break/return语句,或临时表插入时的字段赋值错误导致数据重复覆盖。 - 确认RDP数据源传递:检查DP类是否将完整的临时表数据传递给报表,确保
parmReportContract().parmRdpTable()返回的集合包含2条记录。
二、报表设计(行分组)排查
- 检查行分组的分组依据:
- 如果行分组的
Group on字段设置为唯一标识(如RecId),每条数据应单独成组;若设置为重复值字段,需确认分组的聚合规则(如是否使用First/Last聚合函数,导致仅显示第一条记录)。 - 若不需要分组,直接删除行分组,使用Details行展示所有数据。
- 如果行分组的
- 验证表格数据源绑定:确保表格的数据源直接绑定到DP类返回的完整数据集,而非单一字段或筛选后的子集。
- 检查行可见性设置:确认Details行(或分组内的明细行)未被设置为隐藏,且分组的
Keep Together等分页设置未导致第二条数据被推至下一页(可预览报表所有页面排查)。
三、排查优先级
- 先通过DP类的调试信息确认是否输出2条数据,定位问题在数据层还是报表布局层。
- 若数据层正常,重点检查行分组的聚合规则和明细行的可见性;若数据层仅返回1条,回溯Query和循环逻辑。
内容的提问来源于stack exchange,提问作者clc988
相关产品推荐
相关产品推荐

