我正在为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()”?
答案 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中(这是以后的问题)。
这样一来,您可以用一块石头杀死两只鸟,因为您可以简化表情并一次评估表情。这对于复杂的报告可能很有用。