【问题标题】:Report Builder 3 Creating a current, 30, 60, date range parameter to generate reportsReport Builder 3 创建当前的 30、60 日期范围参数以生成报告
【发布时间】:2015-10-26 22:15:21
【问题描述】:

我是报表生成器的新手,我的任务是创建日期范围搜索参数。他们正在寻找当前、30 天和 60 天的值。整个报告正在运行,我只对其进行了一些更改。因此,在参数中,我创建了一个 dateRange 参数并将数据类型设置为日期/时间,并且下面没有选中任何框。在可用值属性中,我指定了 3 个值:

  1. 当前:=DateAdd("d", -1, Today())
  2. 30 天范围:=DateAdd("d", -30, Today())
  3. 60 天范围:=DateAdd("d", -60, Today())

默认值和高级属性保持不变。

我为什么要使用这些表达方式?我正在查看 StartDate 和 EndDate 值,而 enddate 值有=DateAdd("d", -1, Today()),所以我的逻辑是回到 30 天和 60 天,我需要在前面添加一个否定。我认为这是错误的想法。客户正在寻找参数以返回从该月的第一天开始的值,因此我需要确保使用 month.minValue 以使报告始终在该月的第一天开始。我希望所有这些都是有道理的。再次,我对报表生成器很陌生,所以请原谅我的无知。

吉姆

【问题讨论】:

  • =DateSerial(Year(Today()), Month(Today()), 1) 这个表达式将为您提供当前月份的第一个日期。详细说明您希望如何通过参数过滤数据以获得进一步支持。
  • 谢谢 Alejandro,我的任务是对报告进行更改,它正在 SharePoint 中使用。目前我们将参数设置为开始日期和结束日期,我想添加一个提供日期范围的新参数,我将下拉框设置为:
  • 好的,您希望报表默认从每月的第一个日期运行到当天的昨天,对吗?您的 30 天范围将产生 startdate 为:昨天当前日期 - 30 天,而 60 将产生 startdate 为:昨天当前日期 - 60 天在这两种情况下 enddate 将是昨天当天。如果是,请确认以帮助您解答。
  • 当前、30 天和 60 天。假设我想从数据源获取数据,并且我想要最近 3 个月的信息,结果将从第一个月的第一天开始,并在报告运行的当前日期结束。
  • 是的,你是对的:假设我想要一份 6 月至 9 月的报告,我需要让报告在每月的第一天开始,所以 6 月 1 日,它将在前一天结束报告正在运行。

标签: reporting-services parameters report range builder


【解决方案1】:

根据您的问题和反馈,这就是我得到的。

定义DateRange参数如下:

可用值:

=DateAdd("d", -1, Today())
=DateAdd("d", -30, Today())
=DateAdd("d", -60, Today())

若要使用当前=DateAdd("d", -1, Today()) 作为默认值,您必须将其放在DateRange 参数的默认值选项卡中。

现在为了处理结束日期,我创建了另一个名为 EndDate 的参数,将其默认值设置为当前:

=DateAdd("d", -1, Today())

现在在数据集查询中,您必须使用参数DateRange 来获取月份的第一个日期。检查这个例子。

select *
from mytable a
where a.DocDate between DATEADD(month, DATEDIFF(month, 0, @DateRange), 0)
and @EndDate

DATEADD(month, DATEDIFF(month, 0, @DateRange), 0) 将根据日期范围选择示例生成月份的第一个日期,使用 今天日期:

当前:01/10/2015(dd/MM/yyy 格式)

30 天范围:01/09/2015

60 天范围:01/08/2015

EndDate 参数会产生26/10/2015

如果有帮助请告诉我

【讨论】:

  • 谢谢@Alejandro,我相信这是我需要的,稍后会检查以确保。
  • 对于我的日期范围是我列出的值: =DateAdd("d", -1, Today()) =DateAdd("d", -30, Today()) =DateAdd( "d", -60, Today()) 用于获取正确的日期范围,还是有更好的方法来编写此参数?
  • 它将产生1天前、30天前或60天前的日期。然后这些值用于获取相应月份的第一个日期,例如:如果您今天选择 30 days,它将产生 26/09/2015,因此该月的第一个日期将是 01/09/2015 作为开始日期, endDate 将是 26/10/2015。
  • 很好,这就是我要找的@Alejandro。我只是确保我的日期范围的初始值是有效的。这有帮助。
猜你喜欢
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多