Visual studio Visual Studio 2017-基于月份的条件列可见性

Visual studio Visual Studio 2017-基于月份的条件列可见性,visual-studio,reporting-services,Visual Studio,Reporting Services,我有一份报告,其中有第1-31列(第1天称为第1列,第30天称为第30列…),其中填充了每月每一天的生产值。这是一份月度报告,因此输入月份和年份,并按天显示数据。很简单,数据来自使用透视的SQL存储过程 如果每个月有31天,这将不是一个问题…但当然,我们有30天的月份,用户希望在只有30天的月份中隐藏第31天。我的视觉学习能力充其量也很弱,但我之前的开发人员做到了这一点: =IIF(InStr("2,4,6,9,11", Parameters!Month.Value) > 0,True,F

我有一份报告,其中有第1-31列(第1天称为第1列,第30天称为第30列…),其中填充了每月每一天的生产值。这是一份月度报告,因此输入月份和年份,并按天显示数据。很简单,数据来自使用透视的SQL存储过程

如果每个月有31天,这将不是一个问题…但当然,我们有30天的月份,用户希望在只有30天的月份中隐藏第31天。我的视觉学习能力充其量也很弱,但我之前的开发人员做到了这一点:

=IIF(InStr("2,4,6,9,11", Parameters!Month.Value) > 0,True,False)
这适用于除1月以外的所有情况…主要是因为我知道它没有解析逗号之间的值,只查看该数字是否在列表中…因为1在11中,1月31日在不应该的时候被删除

  • 我应该用什么来代替仪器

  • 还有比这更好的方法吗?我觉得这很讨厌


  • 奖励积分-除了闰年,你知道如何隐藏2月的第29列吗?

    最好的长期解决方案是有一个日期表。有很多脚本可以生成一个,比如

    然后,SP或dataset查询将日期表用作主表,并保留与实际数据的联接。差不多

    SELECT a.* 
        FROM myDateTable d 
            LEFT JOIN myActualTable a on d.date = a.date
        WHERE a.date BETWEEN @myStartDate AND @myEndDate
    
    。。你明白了

    然后在SSRS中使用矩阵控件并为日期添加列组。通过这种方式,您不需要对可见性做任何事情,因为首先不会生成列

    这样做的好处是,它还有助于将来的查询/报告等


    编辑我刚注意到您说SP会旋转数据。不要以数据为轴心,让SSR来处理,这要容易得多。

    最好的长期解决方案是有一个日期表。有很多脚本可以生成一个,比如

    然后,SP或dataset查询将日期表用作主表,并保留与实际数据的联接。差不多

    SELECT a.* 
        FROM myDateTable d 
            LEFT JOIN myActualTable a on d.date = a.date
        WHERE a.date BETWEEN @myStartDate AND @myEndDate
    
    。。你明白了

    然后在SSRS中使用矩阵控件并为日期添加列组。通过这种方式,您不需要对可见性做任何事情,因为首先不会生成列

    这样做的好处是,它还有助于将来的查询/报告等

    编辑我刚注意到您说SP会旋转数据。不要以数据为中心,让SSR来处理,这会容易得多