如何将 SSRS 中的列可见性表达式与当前年份和当前月份联系起来?

问题描述

我有一份 SSRS 报告,其中包含所有 12 个月的列和一个名为“年”的列。我已经有一个条件集,它采用报告运行日期的当前月份并仅显示过去的月份。例如,对于 march =IIF(Month(today())

现在我也必须将其与 Year 列联系起来。条件是 - 如果 Year 列有当前年份之前的年份,则上述条件不适用。所以,如果我今天运行 2020 年的数据,所有 12 个月的列都应该出现。如果我运行的是 2021 年的数据,我应该只会看到一月的列。有人可以帮我解决这个问题吗?是的,“年”列中只会有一年。数据永远不会超过一年。 谢谢。

编辑 1:

如果报告针对 2020 年运行,则报告中的数据应如下所示。

enter image description here

如果在 2021 年运行,则只应显示 YEAR 和 JANUARY 列。从今年 2 月开始,YEAR、JANUARY 和 FEBRUARY 应该会出现。

解决方法

由于您的数据集未标准化,因此您必须像现在一样在每列上设置列可见性。

尝试使用以下表达式。 (以三月为例)

import React,{ useEffect } from "react";
import { useDispatch,useStore } from "react-redux";
import { connect } from "react-redux";
import * as actions from "../store/actions/patientSide";

export function ActivityTemplates() {
  const dispatch = useDispatch();
  const store = useStore();
  const ref = React.createRef();

  useEffect(() => {
    // Update the document title using the browser API
    dispatch(actions.getTodaysActivityTemplates());
  },[]);
  
  const activities = store.getState().patientSide.todays_activities;

  const listedStuff = activities.map((activity) => (
    <div>
      {activity.activity_name}
      <label for="value"> Value: </label>
      <input
        type="number"
        id="value"
        defaultValue={activity.value}
        min="0"
        max="10"
      ></input>
    </div>
  ));
  
  const saveActivities = () => {
    var inputs = ref;

    console.log(inputs);
    // Insert code to run the call to the backend
  };

  return (
    <div>
      <h1> Activity Templates</h1>
      <form id="form" onSubmit={saveActivities()} ref={ref}>
        {listedStuff}
        <input type="submit" name="save" />
      </form>
    </div>
  );
}

export default ActivityTemplates;

注意: =(Month(today()) < 3 AND MAX(Fields!Year.Value,"DataSet1") = YEAR(Today()) 引用是数据集的名称。它区分大小写,必须用引号括起来,如上所示。

不需要 "DataSet1" 表达式,因为如果满足任一条件,上述表达式将返回 true。


替代方案

如果您的数据已标准化(您可以编辑数据集查询)并且看起来像这样...

IIF()

然后您可以简单地使用矩阵而不是表格,并按月对列进行分组。无需为任何内容设置可见性,因为数据根本不存在,因此在没有数据的月份不会呈现任何列。