Reporting services 不能在报表参数表达式中使用字段

Reporting services 不能在报表参数表达式中使用字段,reporting-services,reportingservices-2005,Reporting Services,Reportingservices 2005,我必须根据报告参数设置报告的开始日期。时间戳是在数据库查询中计算的 我的表情是这样的: =开关( 参数!report_type.Value=1,第一个(字段!daily_start.Value,“时间戳”) ,参数!report_type.Value=2,第一个(字段!weekly_start.Value,“时间戳”) ,参数!report_type.Value=3,第一个(字段!monthly_start.Value,“时间戳”) ) 很遗憾,我收到了错误消息: 报表参数“time_from

我必须根据报告参数设置报告的开始日期。时间戳是在数据库查询中计算的

我的表情是这样的:

=开关(
参数!report_type.Value=1,第一个(字段!daily_start.Value,“时间戳”)
,参数!report_type.Value=2,第一个(字段!weekly_start.Value,“时间戳”)
,参数!report_type.Value=3,第一个(字段!monthly_start.Value,“时间戳”)
)
很遗憾,我收到了错误消息:

报表参数“time_from”使用的值表达式引用了一个字段。不能在报表参数表达式中使用字段

我知道,这是不允许的,因为SSR无法确定调用数据集的顺序。但我认为这并不危险

所有时间戳都是通过查询接收的,不带参数。在生成报告之前,用户选择参数
报告类型


有人能给我一个解决方法的提示吗?

这里是解决方法-使用SQL获取值

创建名为StartDates的新数据集:

SELECT CASE 
    WHEN @report_type = 1 THEN daily_start
    WHEN @report_type = 2 THEN weekly_start 
    WHEN @report_type = 3 THEN monthly_start
END AS StartDate
FROM MyTable
您已经有了来自参数的
@report\u type
@time\u。使用
@time\u from
参数,使用StartDates数据集和值字段StartDate将其默认值设置为
从查询中获取值

现在,您可能认为这足以让它工作-您正在引用此查询作为默认值,并且当您更改
@report\u type
参数时,其他参数将刷新,但是
@time\u中来自
参数的第一个日期从未更改。这是因为刷新发生在可用值查询上,而不是默认值查询上


因此,您还需要将可用值查询连接到StartDates查询。现在,您的查询将在更改
@report\u type
时触发,默认值将设置为您选择的适当日期。

我从查询切换到存储过程,并收到此错误。我尝试过的事情:

  • 确保我对数据库有足够的权限(您需要EXEC权限或DBO才能运行存储过程)
  • 删除现有参数(然后使用刷新字段刷新/取回正确命名的参数)
  • 如果已指定,请删除存储过程周围的方括号

有时,表达式可能会变得有点冗长。我创建了一个报告代码函数,然后将其用作参数值

例如,我创建了一个名为“CalculateDateSet”的代码函数,然后将Report参数设置为以下表达式:


“=Code.CalculateDateSet(Parameters!Month.Value,Parameters!Year.Value”

您是否可以将固定隐藏参数用于每日开始、每周开始、每月而不是字段?如果我只能在fetchxml中执行此操作,该怎么办?请您详细说明一下您建议的解决方法?