2009-07-07 520 views
2

我有一个报告,其参数为StartDateEndDate。我希望EndDate参数的时间部分默认为从下拉列表中选择的一天结束时间。Report Builder - 设置日期时间参数

例如,如果用户从下拉菜单中选择2008年5月15日,在框中显示的值应为“2008年5月15日23点59分59秒”而不是'5/15/2008 12:00:00'

使用事件模型和一行代码在.Net中执行此操作非常简单,但在Report Builder 2.0中,我需要做什么?

是否有我需要为此编写的代码,或者我是否错过了一些可以处理这个问题的时髦表达式?

谢谢。

AboutDev

+0

哦,并创建一个带时间值的表格,并且使用它不是一个选项!只是以为我会提到:-) – AboutDev 2009-07-07 19:07:17

回答

2

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

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

然后,您可以在您现在拥有@EndDate的报表查询中使用@EndDateEOD。

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

+0

我可以看到这是如何工作,如果你想它基于StartDate的基础上,但不幸的是,我不能让它基于EndDate。从事件角度考虑它可能会有所帮助。在EndDate日历控件的AfterSelect事件中,我想将EndDate控件的DateTime值设置为:Value = Value +“11:59:59”。 我希望能帮助解决困惑。感谢您尝试eksortso。 – AboutDev 2009-07-07 19:48:18

1

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

不是

...WHERE end_date = @end_date 

做这样的事情:

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

这将往前走日(+1),然后回到3毫秒,有一天录制的最后时刻由一个日期时间。

+0

谢谢你的反馈杰里米。但是,我无法更改数据集的值,因为时间可以由最终用户选择。例如,他们可能希望它是1PM而不是11:59 PM。我只需要在文本框中默认的时间到一天结束。我希望我有道理大声笑! – AboutDev 2009-07-07 19:20:16

4

我会建议在报表参数部分设置默认参数。你可以从报告>报告参数中找到它。

这允许您设置一个未查询的默认值。在那里,您可以输入一个表达式像

=使用DateAdd(Microsoft.VisualBasic.DateInterval.Second,-1,DATEADD( “d”,1,今日))

这应该给你的最后一个默认今天。

编辑:真的只对单个默认值有用。

0

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

希望得到这个帮助。