我的报告包含参数 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
答案 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”)
希望得到这个帮助。