Ssrs 2008 通过SSRS参数输入的文本,包括字段名

Ssrs 2008 通过SSRS参数输入的文本,包括字段名,ssrs-2008,reporting-services,Ssrs 2008,Reporting Services,我有一个SSRS“声明”类型的报告,它有文本框和表格的总体布局。对于主文本框,我想让用户提供值作为参数,以便可以自定义文本,即 Parameters!MainText.Value = "Dear Mr.Doe, Here is your statement." 然后我可以将文本框值设置为参数值: =Parameters!MainText.Value 但是,我需要能够允许传入参数值包含一个dataset字段,如下所示: Parameters!MainText.Value = "Dear Mr.

我有一个SSRS“声明”类型的报告,它有文本框和表格的总体布局。对于主文本框,我想让用户提供值作为参数,以便可以自定义文本,即

Parameters!MainText.Value = "Dear Mr.Doe, Here is your statement."
然后我可以将文本框值设置为参数值:

=Parameters!MainText.Value
但是,我需要能够允许传入参数值包含一个dataset字段,如下所示:

Parameters!MainText.Value = "Dear Mr.Doe, Here is your [Fields!RunDate.Value] statement"  
因此,我的报告输出将如下所示:

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

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


有人对此有什么想法吗?我正在使用SSRS2008R2,有几种截然不同的方法。要知道哪一项最适合您,需要更多信息:

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

    Public Function TestGlobals(ByVal s As String) As String
       Return Report.Globals.ExecutionTime.ToString
    End Function
    
    将返回执行时间。显示了访问报告参数的其他方法

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

  • 根据使用位置修改XML。 这样,您就可以直接修改.rdl/.rdlcxml

  • 考虑其他工具,如ReportBuilder。如果您需要给用户 与报表编写相比,有更多的灵活性,可以构建许多工具 专门用于此目的,例如SSRS的报告生成器

  • 你试过连接吗


    参数!MainText.Value=“亲爱的Doe先生,这是您的”&[Fields!RunDate.Value]&“语句”

    还有另一种方法:显示已填入数据集值的参数字符串。

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

    现在创建第二个参数,该参数将保存所需的默认文本:

    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.
    

    这应该解释清楚。最简单的解决方案往往是最好的,但在这种情况下,我有我的怀疑。至少这可以确保您的运行日期最终出现在最终报告文本中。

    嗨,杰米,谢谢您的快速回复。我认为
    String.Replace()
    将是我唯一可行的选择。虽然我不太确定这是否有效。。。因为即使我进行了替换,也可以说查找%RunDate%并替换为
    字段!RunDate.Value
    它仍然只是其中的文本,SSRS在渲染时也会这样处理它。我的备份选项是在数据集到达ssrs之前完成所有这些操作。如果需要字段值,则需要将这些值传递给函数,但对于许多其他事情,我认为可以从嵌入的代码访问全局报告属性。我将在接下来的几个小时内进行测试。嗨,路易斯,这将作为文本框的值,但不是作为参数值。因为SSRS似乎将整个内容作为字符串,即“亲爱的Doe先生,这是您的&[Fields!RunDate,Value]&语句”,即使您指定了自己的引号。我尝试了几种不同的方法来逃避引用,但似乎不起作用。