SSRS通过报告vb代码访问内置函数

时间:2018-11-27 11:53:48

标签: sql-server vba reporting-services ssrs-2008-r2

我正在为SQL Server 2008R2创建多语言SSRS报告。 为此,无需外部代码,仅从数据库获取翻译,我需要在报表的部分代码中使用Lookup()内置函数。
我的文本框具有以下表达式:

=LOOKUP("Rpt_0_Hello", Fields!Token.Value, Fields!Translation.Value, "DS_Translation")

目标是减少文本框翻译的表达复杂性。我想表达一下:

=Code.TrasT("Rpt_0_Hello")

我尝试编写这样的VB函数:

Public Function TransT( Token as String )
   Lookup( Token
          ,Report.Fields!Token.Value
          ,Report.Fields!Translation.Value
          ,"DS_Translation")
End Function

此代码生成错误“未声明[BC30451]'Lookup'”。 我在网络上发现可以使用“报表”对象来获取报表元素,例如Fields。
有没有办法引用“ Lookup()”?

3 个答案:

答案 0 :(得分:0)

我认为您指的是SSRS查找功能。据我所知,您不能在报表代码功能中直接使用它。

但是,您可能只想使用lookup函数从名为“ DSTranslation”的数据集中获取翻译。如果正确,则只需将文本框(或其他内容)的表达式设置为查找功能。

所以您的文本框表达式就是

=LOOKUP(Fields!Token.Value, Fields!Token.Value, Fields!Translation.Value, "DS_Translation")

这假设两个数据集都有一个名为Token的字段

如果我误解了,请编辑您的问题,并详细解释您要做什么以及数据集中的数据。

答案 1 :(得分:0)

无法在自定义代码中调用Lookup()函数。

答案 2 :(得分:0)

我找到了降低翻译复杂性目标的答案。 这不能解决问题,但这是一种解决方法,可以最大程度地减少多语言报告准备工作。 您可以将report变量用作元素翻译的中间表达式。如果您为任何要定义的元素定义一个变量,就可以像这样进行翻译:

V_Hello=LOOKUP("Rpt_0_Hello", Fields!Token.Value, Fields!Translation.Value, "DS_Translation")

您现在可以在文本框中使用以下表达式:

=Variables!V_Hello.Value

它不像问题的解决方案那样直接和简短,但是如果您尊重命名,则可以自动将此变量插入到报表XML文件.rpt中(这是以后的问题)。
这样一来,您可以用一块石头杀死两只鸟,因为您可以简化表情并一次评估表情。这对于复杂的报告可能很有用。