3

我有一个 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"  

这样我的报告输出将如下所示:

“亲爱的 Doe 先生,这是您 11 月的声明。”

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

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

4

3 回答 3

1

你试过串联吗?

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

于 2012-04-11T18:16:37.517 回答
1

有几种截然不同的方法。要知道哪个最适合您,需要更多信息:

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

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

    将返回执行时间。此处显示了访问报告参数的其他方法

    1.5如果这个函数变得非常大,请考虑使用自定义程序集。然后您可以使用 Visual Studio 获得更好的创作体验

  2. 修改 XML。根据您使用它的位置,您可以直接修改 .rdl/.rdlc XML。

  3. 考虑其他工具,例如 ReportBuilder。如果您需要为用户提供更多报告创作的灵活性,有许多专门为此目的而构建的工具,例如 SSRS 的 Report Builder。
于 2012-04-11T18:12:23.967 回答
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 的参数。

文本框值表达式变为:

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

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

于 2013-06-22T22:14:03.377 回答