Dynamics SSRS预过滤报表执行时未选中当前Account的问题求助
问题根因
你遇到的返回全部记录的问题不是JOIN关联查询导致,核心原因有两个:
- 手动创建的
CRM_FilteredAccount参数覆盖了Dynamics自动注入的带选中记录过滤条件的参数值,查询时一直使用你设置的默认值Select * from FilteredAccount,没有对Account做过滤 - 使用动态SQL拼接查询语句的方式,会导致Dynamics无法识别查询中
CRMAF_前缀的Filtered视图,不会自动注入选中记录的过滤条件
解决步骤
- 第一步:删除手动配置的
CRM_FilteredAccount相关参数
删除报表参数列表中的CRM_FilteredAccount参数,同时删除数据集中对应的查询参数配置,Dynamics会自动识别CRMAF前缀生成对应的过滤逻辑,无需手动创建参数。 - 第二步:替换动态SQL为静态查询语句
直接使用带CRMAF_前缀的FilteredAccount编写静态查询,Dynamics可自动识别该前缀并注入当前选中记录的过滤条件,修改后的查询语句如下:
SELECT CRMAF_org.bsv_targetgroupattribute1, pos.bsv_address_multiline, pos.bsv_memberlist_memberlistcode, pos.owneridname, mbl_bsv_memberlist.bsv_memberlistcode, pos.bsv_count_german, pos.bsv_count_french, pos.bsv_count_italian, pos.bsv_count_rr, pos.bsv_count_english FROM Filteredbsv_memberlist as mbl_bsv_memberlist LEFT JOIN Filteredbsv_memberrelation as pos ON pos.bsv_memberlist = mbl_bsv_memberlist.bsv_memberlistid LEFT JOIN FilteredAccount as CRMAF_org ON CRMAF_org.accountid = pos.bsv_organization
- 第三步:校验Dynamics端报表注册配置
进入Dynamics的报表管理界面,确认该报表绑定实体为Account,运行权限设置为支持「选定的记录」运行,确保从Account表单/列表选中记录运行时,上下文可正确传递到报表。
特殊场景兼容(必须使用动态SQL的情况)
如果你的业务逻辑必须使用动态SQL实现,可改用Dynamics上下文参数传递选中记录ID的方案:
- 创建隐藏的字符串类型参数
CRM_AccountId,无需设置默认值,Dynamics会自动将当前选中的Account GUID注入该参数 - 调整动态SQL,在查询中添加Account过滤条件:
declare @sql as nVarchar(max) set @sql = ' SELECT CRMAF_org.bsv_targetgroupattribute1, pos.bsv_address_multiline, pos.bsv_memberlist_memberlistcode, pos.owneridname, mbl_bsv_memberlist.bsv_memberlistcode, pos.bsv_count_german, pos.bsv_count_french, pos.bsv_count_italian, pos.bsv_count_rr, pos.bsv_count_english FROM Filteredbsv_memberlist as mbl_bsv_memberlist LEFT JOIN Filteredbsv_memberrelation as pos ON pos.bsv_memberlist = mbl_bsv_memberlist.bsv_memberlistid LEFT JOIN FilteredAccount as CRMAF_org ON CRMAF_org.accountid = pos.bsv_organization WHERE CRMAF_org.accountid = ''' + @CRM_AccountId + '''' exec(@sql)
排查验证方法
你可以临时在报表中添加一个文本框,设置值为=Parameters!CRM_FilteredAccount.Value,运行报表时查看该参数的实际值,如果始终显示Select * from FilteredAccount,即可确认是手动创建参数导致系统注入的过滤条件未生效。
内容的提问来源于stack exchange,提问作者Paul Richardson
相关产品推荐
相关产品推荐

