Reporting services 报表生成器-设置日期时间参数

Reporting services 报表生成器-设置日期时间参数,reporting-services,reportbuilder,Reporting Services,Reportbuilder,我有一个报告,其中包含参数StartDate和EndDate。我希望EndDate参数的时间部分在从下拉列表中选择时默认为当天结束 例如,如果用户从下拉列表中选择5/15/2008,则框中显示的值应为“5/15/2008 23:59:59”,而不是“5/15/2008 12:00:00” 在.Net中使用事件模型和一行代码很容易做到这一点,但在ReportBuilder2.0中,我需要做什么 我是否需要为此编写代码,或者我是否错过了一些可以处理此问题的时髦表达式? 谢谢 AboutDev在数据集

我有一个报告,其中包含参数StartDateEndDate。我希望EndDate参数的时间部分在从下拉列表中选择时默认为当天结束

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

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

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

谢谢


AboutDev

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

而不是

...WHERE end_date = @end_date
这样做:

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

这将向前推进一天(即
+1
),然后返回3毫秒,到一天中可由日期时间记录的最后一刻。

我已经有一段时间没有使用SSR了,请耐心等待。你得做点翻译,但这是我过去做的

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

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


选择StartDate后,可以将EndDate默认值设置为其值,这样EndDateEOD将自动设置为开始日期的末尾。

我建议在“报告参数”部分设置默认参数。您可以通过“报告>报告参数”访问此项

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

=DateAdd(Microsoft.VisualBasic.DateInterval.Second,-1,DateAdd(“d”,1,今天))

这将为您提供今天结束时的默认设置


编辑:仅对单个默认值有用。

您可以执行以下操作: =CDate(参数!StartDate.Value+“23:59:59”) 参数部分!StartDate.Value可以是任何日期,但不能是EndDate.Value本身。如: -今日() -自开始日期起的当月最后一天: =CDate(日期序列(年(参数!StartDate.Value),月(参数!StartDate.Value)+1,0)+“23:59:59”)


希望这有帮助。

噢,创建一个带有时间值的表,使用它不是一个选项!我只是想提一下:-)谢谢你的反馈,杰里米。但是,我无法更改数据集上的值,因为时间可以由最终用户选择。例如,他们可能希望时间是下午1点,而不是11:59。我只需要在文本框中设置默认值到一天结束的时间。我希望我说的有道理,哈哈!如果你想让它以开始日期为基础,我可以看到它是如何工作的,但不幸的是,我不能让它以结束日期为基础。从事件的角度考虑可能会有所帮助。在EndDate日历控件的AfterSelect事件中,我想将EndDate控件的DateTime值设置为:value=value+“11:59:59”。我希望这有助于澄清混乱。谢谢你试过eksortso。@AboutDev,我刚刚修改了我的答案,以便更仔细地反映你在寻找什么。希望能有帮助。再次感谢埃克索索。如果用户选择“5/15/2009 07:00:00”作为开始,并希望选择“5/30/2009 18:00:00”作为结束,该怎么办。在所描述的案例中,在查询中使用@EndDateEOD将使用“5/30/2009 11:59:59”作为结束,这是行不通的。我认为实现此功能的唯一方法是事件,但据我所知,报表生成器2.0中不存在这些事件。再次感谢您的尝试。我目前没有时间提供完整的答案。但这里没有必要举办活动。如果您以适当的顺序排列参数(隐藏或不隐藏),并在报表查询中使用适当的参数,您可能会得到想要的结果。我敢肯定,如果将结束日期与结束时间分开,计算并应用结束时间的默认值,并将两者结合起来以获得最终的@EndDT参数,您就可以得到您想要的结果。但是我现在不能提供更多的帮助。