【问题标题】:SSRS: Two cascading date parameters do not refreshSSRS:两个级联日期参数不刷新
【发布时间】:2016-12-09 12:30:38
【问题描述】:

我有一个 SSRS 2014 报告,其中包含三个参数:@Period(文本)、@FromDate(日期)和@ToDate(日期)。他们首先从“期间”下拉列表(1 月、2 月、3 月等)中选择一个值来协同工作。根据您选择的时间段,@FromDate 和 @ToDate 参数会相应更改以反映您的选择。这很好用,但是当您在已经选择一个新期间后选择一个新期间时会出现问题,因为日期参数不会刷新。

我一直在寻找一些建议和解决方法,但我还没有找到一个处理两个相关日期参数的方法。有什么建议吗?

【问题讨论】:

  • 您是否使用父 (@Period) 参数来填充默认值或可用值?注意 UI 不会改变,但 @FromDate@ToDate 参数在运行时设置正确。
  • @alejandrozuleta Period 参数仅由可用值填充,而 FromDate 和 ToDate 仅由默认值填充。
  • 在这种情况下,您可以将两个日期参数都设置为 Internal,因此您的参数将仅从周期参数而非 UI 填充。但是,如果您必须让用户选择日期,您将必须创建两个额外的参数为 Internal 并使用表达式填充它们以确定是使用来自 @Period 参数的默认值还是来自可见日期参数的值。

标签: sql-server reporting-services parameters report


【解决方案1】:

日期参数一旦生成就无法更改。它没有级联功能,根据微软的说法,这是设计使然(这是他们希望它的行为方式):

Follow this link please

【讨论】:

    【解决方案2】:

    如前所述,级联查询中没有可用值/默认值的参数不会刷新其默认值。

    解决方法:创建一个单行数据集,用于计算 DateFrom 和 DateTo 日期,每个日期在单独的列中并取决于您的 @Period 参数,并将数据集分配给可用的 两者的默认值你的参数。缺点:您将无法在运行报表时编辑值,因为字段是由数据集填充的。

    【讨论】:

      【解决方案3】:

      这是按预期工作的,如果您更改它们所依赖的参数,Microsoft 不希望刷新级联日期参数。不过还是可以绕过去的。

      这两个数据参数需要两个数据集,这两个数据参数返回一行,所需数据取决于@Period 参数,例如

      DECLARE @Dates as TABLE ([Period] INT, [Date] SMALLDATETIME) 
      
      INSERT INTO @Dates VALUES
      (1,DATEADD(s, 86340, DATEADD(dd,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))) ) 
      ,(2,DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),DATEADD(MINUTE,- 1,DATEADD(DAY,0,DATEADD(day,DATEDIFF(day,0,GETDATE())+1,0)))) )
      ,(3,DATEADD(MINUTE,- 1,DATEADD(DAY,0,DATEADD(day,DATEDIFF(day,0,GETDATE()),0)))) 
      
      SELECT 
          [Period]
          ,[Date]
      FROM
          @Dates
      WHERE 
          [Period] = @Period
      

      设置@Period参数too match的可用值,并将数据参数的默认值设置为它们的matching datasets

      现在,当您更改 @Period 参数时,它会强制重新运行日期数据集,并且您的日期参数将默认为新结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多