【发布时间】:2019-04-29 03:50:18
【问题描述】:
我正在为 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' is not declared.”。
我在网上发现使用“报告”对象来获取像字段这样的报告元素。
有没有办法引用“Lookup()”?
【问题讨论】:
-
这不是 VBScript。也许是VBA?请使用适当的标签。
-
这不是 VBA,因为它不像 excel 这样基于强大的对象模型,但它是一个简单的 VB 解释器,语法没有明确定义。
-
Token as String之类的东西不是有效的 VBScript 语法,所以如果它有效,我猜它一定是 VBA、VB.Net 或只是普通的 VB 或.... VBA 似乎仍然是最有可能的虽然是候选人。 -
可以在表达式中使用查找函数 (docs.microsoft.com/en-us/sql/reporting-services/report-design/…)。有关一些示例,请参阅本文 - red-gate.com/simple-talk/sql/reporting-services/… 尝试查看表中单元格的表达式 =Lookup( Token ,Report.Fields!Token.Value, Report.Fields!Translation.Value, ,"DS_Translation")
-
我知道 Lookup on Expression 的正常使用,但我要求在代码部分使用它们以降低文本框翻译表达式的复杂性
标签: sql-server vba reporting-services ssrs-2008-r2