【问题标题】:subscription contains parameter values that are not valid订阅包含无效的参数值
【发布时间】:2016-06-01 20:40:52
【问题描述】:

我有一份包含开始日期和结束日期参数的报告,专门用于订阅,应该服务于 2 种类型的订阅: 1、上一财周一个 -->开始日期为上一财周的第一天,结束日期为上一财周的最后一天。 2、前一天一个 -->开始日期是前一天,结束日期也是前一天。

数据集日期字段: 这是可用日期参数和默认值的数据集查询结果。 当我为前一天创建订阅时,它仅在当天运行...在当天午夜之后,开始日期和结束日期参数值为空白,并且订阅失败并显示状态消息“订阅包含无效的参数值”值。 为上一个会计周创建的订阅有效期为一周,直到上一个会计周开始和结束日期的值发生更改。

【问题讨论】:

    标签: reporting-services ssrs-2008-r2


    【解决方案1】:

    您正在使用数据集作为日期参数的默认值和值,这可能不是最好的方法。

    我处理希望允许最终用户订阅的报告的方式是,根据订阅是每天、每周还是每月,默认日期值会有所不同,这是有一个额外的参数来实现这一点可能的。

    我添加到报告中的参数是一个我称之为期间(或报告期间)的参数,它必须是报告中的第一个参数,或者至少列在日期参数之前。此参数下拉列表中的唯一值是 Daily、Weekly 和 Monthly(如果适用)。这些可以是你需要的任何东西。在报告中的参数中手动输入这些作为值选项,因为它们不会经常更改。根据最终用户在创建订阅时为此参数选择的内容,默认日期值会发生变化。这是通过日期参数的默认值中的表达式来完成的,该表达式评估从“期间”下拉列表中选择的值。

    因此,如果最终用户想要每日订阅,他们可以从“期间”参数下拉菜单中选择“每日”,并且开始和结束日期参数的默认值会更改为仅包括前一天。如果他们选择每周,开始和结束日期参数将更改为仅包括前一周,依此类推。

    这是开始日期参数默认值表达式的示例。

    =Switch(Parameters!Period.Value = "Daily" , DateAdd(DateInterval.Day, -1, Today), 
    Parameters!Period.Value = "Weekly" , DateAdd(DateInterval.WeekOfYear, -1, DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, Today, 0, 0)-1), Today)) , 
    Parameters!Period.Value = "Monthly" , DateAdd(DateInterval.Month, -1, DateAdd(DateInterval.Day, -(DatePart(DateInterval.Day, Today, 0, 0)-1), Today)))
    

    对于结束日期参数…

    =Switch(Parameters!Period.Value = "Daily" , Today, 
    Parameters!Period.Value = "Weekly" , DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, Today, 0, 0)), Today) , 
    Parameters!Period.Value = "Monthly" , DateAdd(DateInterval.Day, -(DatePart(DateInterval.Day, Today, 0, 0)), Today))
    

    警告!!在报表设计器(预览版)或在线更改期间值不会导致日期值在您眼前自动更改。但是,它会在创建(并因此执行)订阅时。我从来没有调查过为什么会这样。我还有其他不那么痛苦的事情来打发时间。

    试试这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多