通过SSRS参数输入文本,包括字段名称

时间:2012-04-11 15:56:57

标签: ssrs-2008 reporting-services

我有SSRS"陈述"类型报告,具有文本框和表的总体布局。对于主文本框,我想让用户提供值作为参数,以便可以自定义文本,即

Parameters!MainText.Value = "Dear Mr.Doe, Here is your statement."

然后我可以将文本框值设置为参数的值:

=Parameters!MainText.Value

但是,我需要能够允许传入的参数值包含数据集字段,如下所示:

Parameters!MainText.Value = "Dear Mr.Doe, Here is your [Fields!RunDate.Value] statement"  

以便我的报告输出如下:

"亲爱的Mr.Doe,这是你11月的陈述。"

我知道您可以通过提供静态文本和字段请求来定义它以在文本框中执行此操作,但我需要SSRS来识别 参数 string有一个需要转义和绑定的字段请求。

有没有人对此有任何想法?我正在使用SSRS 2008R2

3 个答案:

答案 0 :(得分:1)

有一些截然不同的方法。要了解哪种方法最适合您需要更多信息:

  1. 报告中的嵌入代码。可能是最快的 实现将是返回的报告中的嵌入代码 参数,但适当地称为String.Replace()来替换 在动态值。您需要为将要替换字符串的用户建立一些代码。嵌入式代码将使您可以访问报告中的许多对象。例如:

    Public Function TestGlobals(ByVal s As String) As String
       Return Report.Globals.ExecutionTime.ToString
    End Function
    

    将返回执行时间。其他访问报告参数的方法显示为here.

    1.5 如果此功能变得非常大,请查看使用自定义程序集。然后您可以使用Visual Studio获得更好的创作体验

  2. 修改XML。取决于您使用的位置 这样,您可以直接修改.rdl / .rdlc XML。

  3. 考虑其他工具,例如ReportBuilder。如果您需要给用户 报表创作的灵活性更高,构建了许多工具 专门用于此目的,例如SSRS的报告生成器。

答案 1 :(得分:1)

你试过连接吗?

参数!MainText.Value =“亲爱的Mr.Doe,这是你的”& [Fields!RunDate.Value]& “声明”

答案 2 :(得分:1)

这是另一种方法:显示已填充数据集值的参数字符串。

要执行此操作:例如,创建名为RunDate的参数,并将“默认值”设置为“从查询中获取值”,然后选择第一个数据集和值字段(RunDate)。现在该参数将保存RunDate字段,您可以在其他地方使用它。使此参数隐藏或内部并设置正确的数据类型。例如日期/时间,以便您稍后格式化其值。

现在创建第二个参数,它将保存您想要的默认文本:

Parameters!MainText.Value = "Dear Mr.Doe, Here is your [Parameters!RunDate.Value] statement"

不确定这种语法是否有效,但您明白了。你也可以在这里做格式化,例如只有日期时间的月份:

="Dear Mr.Doe, Here is your " & Format(Parameters!RunDate.Value, "MMMM") & " statement"

此方法仅使用内置方法,并且不需要解析器,因此用户无需学习语法。

当然有一个缺点:用户可以完全控制参数内容,并且可以提供与报表内容不匹配的值 - 但字符串替换方法也是如此。

只是为了完整性,还有简单选项:附加多个参数:创建名为MainTextBeforeRunDate和MainTextAfterRunDate的2个参数。

Textbox值表达式变为:

=Parameters!MainTextBeforeRunDate.Value & Fields!RunDate.Value & Parameters!MainTextAfterRunDate.Value.

这应该解释自己。最简单的解决方案往往是最好的,但在这种情况下,我有疑虑。至少这可以确保您的RunDate最终出现在最终报告文本中。