Crystal Reports:通过参数向子报表传递计算数据的问题求解
Crystal Reports 经理业绩日报实现方案
问题1:筛选指定经理下辖的销售人员列表
按以下步骤配置即可实现需求逻辑:
- 首先在主报表中创建字符串类型参数
{?ManagerCode},用于接收输入的目标经理编号 - 打开主报表的「记录选择公式」面板,写入如下筛选逻辑:
{salesperson.salesperson_managercode} = {?ManagerCode} - 若主报表数据源使用SQL命令查询,可直接在SQL的WHERE子句中添加条件
WHERE salesperson_managercode = ?,将{?ManagerCode}参数绑定到该占位符即可,该方案性能远高于Crystal Reports端的后置筛选 - 如需去重的销售人员列表,可在字段专家中对
salesperson_id/销售人员姓名字段勾选「仅显示唯一值」,避免重复条目
问题2:批量传入子报表并汇总团队总业绩
不需要手动编写循环逻辑,用Crystal Reports自带的分组+子报表链接功能即可实现:
- 在主报表中按
{salesperson.salesperson_id}(销售人员唯一标识)创建分组,组头可放置销售人员姓名、工号等基础信息 - 将已开发完成的销售业绩子报表放入该分组的详情节中,右键子报表选择「更改子报表链接」,将主报表的
{salesperson.salesperson_id}字段绑定到子报表的销售人员参数,报表运行时会自动遍历所有匹配的销售人员,逐个传入参数加载子报表数据 - 团队总业绩汇总有两种实现方案:
- 共享变量方案:在子报表中创建共享变量公式,例如要汇总未结订单总额的公式为:
主报表的分组脚节创建同名共享变量公式接收值,最终在报表页脚对该变量做聚合汇总即可shared currencyVar team_total_order := sum({order.uncompleted_amount}) - 快捷方案:右键子报表选择「插入子报表汇总」,直接选择子报表中已有的汇总字段,选择「插入到报表页脚」,Crystal Reports会自动对所有子报表的对应字段求和生成团队总数据
- 共享变量方案:在子报表中创建共享变量公式,例如要汇总未结订单总额的公式为:
- 注意事项:需关闭子报表的「按需显示子报表」选项,否则会出现汇总值计算错误的问题
内容的提问来源于stack exchange,提问作者Yung_Grasshopper
相关产品推荐
相关产品推荐

