代码之家  ›  专栏  ›  技术社区  ›  marc_s MisterSmith

报告服务-将标签转换为不同语言

  •  0
  • marc_s MisterSmith  · 技术社区  · 16 年前

    我正在完成我的SQL Server 2008 Reporting Services项目中的报告,作为最后的步骤之一,我需要使事情具有可翻译性。

    因为我有很多报表,它们都共享一些相同的标签,所以我决定将需要显示的所有标签放到SQL Server表中,并将这些内容显示为一个数据集。 dsReportLabels 在我的报告中。

    此数据集基本上包含两个字段: LabelName 是标签的名称(例如“项目计数”),以及 Caption 包含要在报告中显示的所选语言的文本。

    但现在我的思维障碍出现了:我该如何分配 dsReportLabels.Caption 值,例如文本框,基于 dsReportLabels.LabelName ?

    所以我需要类似(伪LINQ语句):

    Textbox1.Value = from dsReportLabels 
                     where LabelName = "some value" 
                     select Caption;
    

    但是,如何在ReportingServices代码片段中表达这一点呢?

    我知道如何参考 Parameters!MyParameterName.Value 等等,但如果我试图从数据集的一列中提取一个值,考虑到该数据集中另一列的值,这在这里并不真正起作用。

    我敢打赌这最终肯定是很容易做到的……只是现在好像不能把我的头绕在这上面……有人知道怎么做吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   PJ8    16 年前

    这个 MSDN 博客文章描述了一种方法。基本上:

    1. 使用labelid、language和caption创建查阅表格。
    2. 创建一个存储过程,获取指定语言的所有标签和标题。
    3. 将SP的结果存储在数据集中。
    4. 将数据集存储在多值参数中。
    5. 在自定义查找函数中使用多值参数。

    因此,标签文本框中的表达式将使用labelid调用自定义函数,该函数将获得相应语言的相应标题。

    报表服务器2008还有一个内置的查找功能,允许您跳过步骤4和5。如果是这种情况,表达式将调用内置的查找函数,该函数将直接转到数据集。我没有RS 2008,所以我不能测试这个。

    推荐文章