我有一个包含两个日期参数“StartDate”和“EndDate”的报告。
我想创建多个订阅报告,涵盖不同的时间段,如上一个日历月,上周,上周末等。
我能想到的最直接的方法是,如果StartDate和EndDate参数可以设置为每个订阅的不同表达式。但是我似乎无法从订阅页面获得表达式。这可能吗?
答案 0 :(得分:0)
我处理此类情况的方法是在报表中添加一个新参数,以便您选择要运行的报表期间。此值将反过来用于确定用于开始日期和结束日期的日期。
以下步骤概述了如何执行此操作。
在名为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);
}
的报告中添加新参数。
将以下标签(值)对添加到可用值(指定值)列表中。
将其中一个设为默认值,这无关紧要。
将此新参数向上移动到参数列表中,使其高于({1}}和ReportPeriod
参数之前(之前)。他们将根据所选择的StartDate
得出他们的价值观,因此它必须先于他们。
将EndDate
参数的默认值表达式设置为:
ReportPeriod
将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)))
您需要知道,在手动运行报告时更改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中的数据驱动订阅中也不可用。用户只能选择固定日期。
也许这篇文章有帮助: