在SQL Server 2014中创建SSRS报表订阅时,是否可以将订阅参数的值设置为表达式?

时间:2017-02-26 15:24:31

标签: sql-server reporting-services parameters sql-server-2014 subscription

我有一个包含两个日期参数“StartDate”和“EndDate”的报告。

我想创建多个订阅报告,涵盖不同的时间段,如上一个日历月,上周,上周末等。

我能想到的最直接的方法是,如果StartDate和EndDate参数可以设置为每个订阅的不同表达式。但是我似乎无法从订阅页面获得表达式。这可能吗?

2 个答案:

答案 0 :(得分:0)

我处理此类情况的方法是在报表中添加一个新参数,以便您选择要运行的报表期间。此值将反过来用于确定用于开始日期和结束日期的日期。

以下步骤概述了如何执行此操作。

  1. 在名为try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) { Person[] humans = new Person[2]; humans[0] = new (Person) ois.readObject(); humans[1] = new (Person) ois.readObject(); } catch (IOException ex) { Logger.getLogger(JavaApplication1.class.getName()).log(Level.SEVERE, null, ex); } 的报告中添加新参数。

    将以下标签(值)对添加到可用值(指定值)列表中。

    • 每日(D)
    • 每周(W)
    • 每月(M)
  2. 将其中一个设为默认值,这无关紧要。

    将此新参数向上移动到参数列表中,使其高于({1}}和ReportPeriod参数之前(之前)。他们将根据所选择的StartDate得出他们的价值观,因此它必须先于他们。

    1. EndDate参数的默认值表达式设置为:

      ReportPeriod
    2. StartDate参数的默认值表达式设置为:

      =Switch(Parameters!ReportPeriod.Value = "D", Today.AddDays(-1),
          Parameters!ReportPeriod.Value = "W", DateAdd(DateInterval.WeekOfYear, -1, DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, Today, 0, 0)-1), Today)),
              Parameters!ReportPeriod.Value = "M", DateAdd(DateInterval.Month, -1, DateAdd(DateInterval.Day, -(DatePart(DateInterval.Day, Today, 0, 0)-1), Today)))
      
    3. 您需要知道,在手动运行报告时更改EndDate不会更新您眼前的=Switch(Parameters!ReportPeriod.Value = "D", Today, Parameters!ReportPeriod.Value = "W", DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, Today, 0, 0)), Today), Parameters!ReportPeriod.Value = "M", DateAdd(DateInterval.Day, -(DatePart(DateInterval.Day, Today, 0, 0)), Today)) ReportPeriod参数。但是,更改默认StartDate 影响值。 更重要的是,您在创建报告订阅时选择的EndDate也会影响日期值。因此,为此报告创建报告订阅,每个ReportPeriod一个,将为您提供所需的结果。

      随意添加更多ReportPeriod个可用值,例如“季度”或“每年”,并根据需要调整表达式。

      希望这会对你有所帮助。

答案 1 :(得分:0)

您可以在SSRS设计环境中编写表达式来设置日期的默认值。这同样会在其订阅中反映为"报告默认值"。 使用"覆盖报告默认值"自定义日期功能。即使在截至2012年的SSRS中的数据驱动订阅中也不可用。用户只能选择固定日期。

也许这篇文章有帮助:

https://www.sqlservercentral.com/Forums/1104266/Creating-a-dynamic-date-parameter-in-a-SQL-Reporting-Services-2005-subscription