无年份、季度字段时如何为SSRS Fetchxml创建年季度参数
Dynamics365 FetchXML 实现SSRS年/季度筛选参数方案
不需要在源实体新增独立的年份、季度字段,通过SSRS参数配置+FetchXML原生日期运算符即可实现,操作步骤如下:
1. 新建两个筛选参数
打开SSRS报表设计器的参数面板,新增以下两个参数:
ReportYear:数据类型选整数,参数提示设置为「选择年份」,可根据需求决定是否开启多值选择ReportQuarter:数据类型选整数,参数提示设置为「选择季度」
2. 配置参数可选值
年份参数配置
两种方案选其一即可:
- 静态值:手动添加常用年份选项,适合年份范围固定的场景
- 动态拉取:新建独立FetchXML数据集,自动读取系统中已存在案例的所有不重复年份,不需要手动维护,FetchXML代码如下:
<fetch distinct="true"> <entity name="incident"> <attribute name="case_received_date" groupby="true" dategrouping="year" alias="year_num"/> </entity> </fetch>
将数据集返回的year_num字段绑定为ReportYear的可用值即可。
季度参数配置
直接手动添加固定静态选项即可,不需要查询数据源:
- 参数值填
1,选项标签填「第一季度(1-3月)」 - 参数值填
2,选项标签填「第二季度(4-6月)」 - 参数值填
3,选项标签填「第三季度(7-9月)」 - 参数值填
4,选项标签填「第四季度(10-12月)」
3. 主数据集关联筛选参数
打开你原有拉取报表数据的主FetchXML数据集,在筛选节点中新增两个日期匹配条件,直接通过case_received_date字段匹配传入的年、季度参数,不需要额外做日期拆分计算,示例代码:
<fetch> <entity name="incident"> <!-- 保留你原有需要查询的字段、关联实体配置即可 --> <filter type="and"> <!-- 匹配选中的年份 --> <condition attribute="case_received_date" operator="eq-year" value="@ReportYear"/> <!-- 匹配选中的季度 --> <condition attribute="case_received_date" operator="eq-quarter" value="@ReportQuarter"/> </filter> </entity> </fetch>
注意:eq-year、eq-quarter是FetchXML原生支持的日期运算符,会自动适配Dynamics365的用户时区设置,不会出现日期偏移、季度计算错误的问题。
可选优化配置
- 如果需要报表打开默认展示当前年、当前季度数据,给两个参数设置默认值即可:
ReportYear默认值填表达式=Year(Today()),ReportQuarter默认值填表达式=DatePart(DateInterval.Quarter, Today()) - 如果需要支持多年、多季度批量选择,开启参数的「允许多个值」选项,同时将FetchXML里的运算符从
eq-year/eq-quarter替换为in,SSRS会自动适配多值参数传参格式 - 如果筛选无结果,优先检查
case_received_date字段的逻辑名称是否正确,Dynamics365实体字段需使用全小写加下划线的架构名,不能直接用显示名。
内容的提问来源于stack exchange,提问作者user19505324
相关产品推荐
相关产品推荐

