报表生成器 - 设置datetime参数

时间:2009-07-07 19:03:29

标签: reporting-services reportbuilder

我的报告包含参数 StartDate EndDate 。我希望 EndDate 参数的时间部分默认为从下拉列表中选择的当天结束。

例如,如果用户从下拉列表中选择 5/15/2008 ,则框中显示的值应为' 5/15/2008 23:59:59 'not' 5/15/2008 12:00:00 '

使用事件模型和一行代码在.Net中很容易做到这一点,但在Report Builder 2.0中,我需要做什么?

我是否需要为此编写代码,或者我是否遗漏了一些可以处理此问题的时髦表达?

感谢。

AboutDev

4 个答案:

答案 0 :(得分:4)

我建议在“报告参数”部分设置默认参数。您可以从报告>中获取此信息。报告参数。

这允许您设置非查询默认值。在那里你可以输入像

这样的表达式

= DateAdd(Microsoft.VisualBasic.DateInterval.Second,-1,dateadd(“d”,1,Today))

这应该会给你今天结束时的默认值。

修改:仅对单个默认值有用。

答案 1 :(得分:2)

自从我使用SSRS已经有一段时间了,所以请耐心等待。你必须做一些翻译,但这是我过去所做的。

定义EndDate参数时,请在参数列表中的EndDate之后创建名为EndDateEOD的附加参数。将此参数设为隐藏值,并将其设置为当天的最后一刻,类似于Jeremy计算它的方式。

然后你可以在你现在有@EndDate的报告查询中使用@EndDateEOD。

当选择StartDate时,您可以将EndDate默认设置为其值,以便EndDateEOD将自动设置为开始日期的结尾。

答案 2 :(得分:1)

使用数据集中DATEADD()表达式中的参数。

而不是

...WHERE end_date = @end_date

做这样的事情:

...WHERE end_date = DATEADD(ms, -3, @end_date + 1)

那将是一天(+1),然后返回3毫秒,到日期时间可记录的最后一天。

答案 3 :(得分:0)

您可以这样做:     = CDate(参数!StartDate.Value +“23:59:59”) Parameters!StartDate.Value的部分可以是任何日期,但不是EndDate.Value本身。例如: - 今天() - 从开始日期开始的月份的最后一天:     = CDate(DateSerial(年(参数!StartDate.Value),月(参数!StartDate.Value)+ 1,0)+“23:59:59”)

希望得到这个帮助。