【问题标题】:SSRS parameters based on selection?SSRS参数基于选择?
【发布时间】:2018-01-03 11:15:00
【问题描述】:

希望有人能帮忙解决这个问题?

我正在基于包含以下子句的存储过程构建报告

其中accountingperiod = @Accountingperiod 或@Startdate 和@Enddate 之间的createddate

@Accountingperiod 将采用以下格式“2017 年 10 月” @Start 和 @Enddates 只是通用日期格式。

我基本上希望我的报告能够加载,并且可以选择用户是要使用@Accountingperiod 参数还是日期参数来过滤报告(因为两者都会返回完全不同的数据)。一旦用户选择了要使用的参数,参数(例如,@accountingperiod)将可供选择。

如何做到这一点?抱歉,如果这是一个愚蠢的问题,我对 SSRS 很陌生!

谢谢

【问题讨论】:

    标签: sql reporting-services ssrs-2012


    【解决方案1】:

    有几种方法可以做到这一点。最简单的方法是在存储过程中执行此操作并仅测试是否已设置会计期间,如果已设置,则使用,如果不使用日期范围,但对用户而言可能不直观,因为他们可以选择会计期间和日期范围,而没有意识到日期范围将被忽略。

    最优雅的解决方案是根据会计期间设置开始和结束日期,并在会计期间列表中添加另一个条目,称为“日期范围”或“任何”等。

    这假设您可以查找或计算每个会计期间的开始日期和结束日期。在这个例子中为了简单起见,我们假设您有一个表格(比如myAccPeriodTable),其中包含期间和日期范围,如下所示..

    AccPeriodID AccPeriod StartDate  EndDate
          1     2017-Q1   2017-01-01 2017-03-31
          2     2017=Q2   2017-04-01 2017-06-30
          3     2017=Q3   2017-07-01 2017-09-30
    etc...
    

    使用以下查询创建一个数据集(我们称之为dsAccPeriods

    SELECT AccPeriodID, AccPeriod FROM myAccPeriodTable 
    UNION SELECT -1, 'Use Date range'
    ORDER BY StartDate
    

    您的会计期间参数(假设这称为@AccPeriodID)Available Values 将来自查询并指向dsAccPeriods

    Value 将是 AccPeriodID 字段,Label 字段将是 AccPeriod

    现在再创建两个数据集,例如 dsDefaultStartDatedsDefaultEndDate,分别使用以下查询。

    SELECT ISNULL(StartDate, 1999-01-01) AS StartDate From myAccPeriodTable WHERE AccPeriodID = @AccPeriodID
    

    SELECT ISNULL(EndDate, 2020-12-31) AS EndDate From myAccPeriodTable WHERE AccPeriodID = @AccPeriodID
    

    对于您的 'StartDate' 参数(假设它称为 @StartDate),Default Value 将简单地指向 dsDefaultStartDate 数据集,并通过 @EndDate 指向 dsDefaultEndDate 执行相同的操作。

    现在,当用户选择开始日期时,应使用正确的日期填充两个数据参数,以便您的存储过程可以简单地根据 @StartDate 和 @EndDate 参数进行过滤。如果用户选择use Date Range 选项,则默认日期将设置为您在dsDefaultStartDatedsDefaultEndDate 数据集中指定的任何日期。

    当然,用户有可能选择一个真实的会计期间,然后更改日期范围。您可以采取一些措施来避免这种情况,但一步一步来!

    我没有测试任何东西就写了这个答案,所以可能会有一些错误,但希望它能为你指明正确的方向。如果您有任何问题,请发表评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多