【问题标题】:SSRS Single report parameter used to set dataset query parametersSSRS 单报表参数,用于设置数据集查询参数
【发布时间】:2014-04-22 23:34:13
【问题描述】:

我是一个 SSRS 菜鸟,希望能在报告参数方面提供一些帮助。

我有一个类似于以下的 SQL 查询:

SELECT [abc],[xyz],[etc]
FROM [database].[dbo].[db_view]
WHERE [Date] BETWEEN @StartDate AND @EndDate

通常这将导致创建两个报告参数,[开始日期] 和 [结束日期]。然而,当用户在之前的一段时间内多次运行报告时,默认日期选择器场景会变得乏味,并且通常会选择错误的开始日期和结束日期。

首选方法是为用户提供 [Year] 和 [Month] 等参数,并将它们默认为当前值,例如:Year:[2014] Month:[March],并使用这些选择来设置 SQL 查询相应的参数,即后一个选择将用于设置@StartDate='2014/03/01'和@EndDate='2014/03/31'

我不确定如何按上述方式设置参数;任何指导将不胜感激。

【问题讨论】:

  • 什么版本的 SQL Server?
  • 使用 SQL Server 2012

标签: sql reporting-services parameters


【解决方案1】:

在 SSRS 中,添加 2 个隐藏参数,开始日期和结束日期。将这些的默认值设置为表达式。使用可见年份/月份参数中的值构建日期字符串,并使用 CDATE() 将它们转换为日期类型。在您的 SQL 查询中使用这 2 个隐藏参数。

对于年/月参数,只需添加这些参数,导航到它们的“可用值”属性选项卡,然后在您的月和年集合中进行硬编码,或者连接数据集以向参数提供可用值.

【讨论】:

    【解决方案2】:

    不带参数表达式(需要 SQL Server 2012 数据源)

    1. 在 SSRS 中,确保创建单独的参数:@Year@Month@StartDate@EndDate
    2. 使用DATEFROMPARTS 在您的数据集中构建开始日期和结束日期

      SELECT [abc],[xyz],[etc]
      FROM [database].[dbo].[db_view]
      WHERE [Date] BETWEEN DATEFROMPARTS(@Year, @Month, @StartDate)
                   AND DATEFROMPARTS(@Year, @Month, @EndDate)

    【讨论】:

    • 感谢您的反馈,我最终做了以下事情:删除了 StartDate 和 EndDate 参数,添加了默认值的 Year 和 Month 参数并设置了可用值,在 DataSet 上配置了 StartDate 和 EndDate 参数以引用 Year 和使用 DateSerial 函数的月份。经过测试并按要求工作:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多