You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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等分页设置未导致第二条数据被推至下一页(可预览报表所有页面排查)。

三、排查优先级

  1. 先通过DP类的调试信息确认是否输出2条数据,定位问题在数据层还是报表布局层。
  2. 若数据层正常,重点检查行分组的聚合规则和明细行的可见性;若数据层仅返回1条,回溯Query和循环逻辑。

内容的提问来源于stack exchange,提问作者clc988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:10:27