【问题标题】:Report Builder - Set datetime parameter报表生成器 - 设置日期时间参数
【发布时间】:2009-07-07 19:03:29
【问题描述】:

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

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

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

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

谢谢。

关于开发

【问题讨论】:

  • 哦,创建一个带有时间值的表并使用它不是一个选项!只是想我会提到:-)

标签: reporting-services reportbuilder


【解决方案1】:

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

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

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

这应该给你一个今天结束的默认值。

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

【讨论】:

    【解决方案2】:

    我已经有一段时间没有使用 SSRS,所以请耐心等待。你需要做一点翻译,但这是我过去所做的。

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

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

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

    【讨论】:

    • 如果您希望它基于 StartDate,我可以看到它是如何工作的,但不幸的是,我无法让它基于 EndDate。从事件的角度考虑它可能会有所帮助。在 EndDate Calendar 控件的 AfterSelect 事件中,我想将 EndDate 控件的 DateTime 值设置为:Value = Value + "11:59:59"。我希望这有助于消除混乱。感谢您尝试 eksortso。
    • @AboutDev,我只是更改了我的答案以更准确地反映您正在寻找的内容。希望对您有所帮助。
    • 再次感谢 eksortso。如果用户选择 '5/15/2009 07:00:00' 作为开始并希望选择 '5/30/2009 18:00:00' 作为结束会怎样。在所描述的情况下,在查询中使用 @EndDateEOD 将使用 '5/30/2009 11:59:59' 作为结尾,这是行不通的。我认为让这个工作的唯一方法是事件,但据我所知,它们在 Report Builder 2.0 中不存在。再次感谢您的尝试。
    • 我目前没有时间提供完整的答案。但是这里不需要事件。如果您以适当的顺序对参数进行排序,无论是否隐藏,并在报表查询中使用适当的参数,您可能会得到您想要的。我很肯定,如果您将结束日期与结束时间分开,计算并应用结束时间的默认值,然后将两者结合以获得最终的 @EndDT 参数,那么您可以准确地得到您正在寻找的内容。但我现在不能再提供任何帮助了。
    【解决方案3】:

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

    而不是

    ...WHERE end_date = @end_date
    

    做这样的事情:

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

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

    【讨论】:

    • 感谢杰里米的反馈。但是,我无法更改数据集中的值,因为最终用户可以选择时间。例如,他们可能希望它是下午 1 点而不是晚上 11:59。我只需要时间在文本框中默认到一天结束。我希望我说得通,哈哈!
    【解决方案4】:

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

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多