SSRS доступ к встроенным функциям из кода vb отчета - PullRequest
0 голосов
/ 27 ноября 2018

Я работаю над созданием многоязычного отчета SSRS для SQL Server 2008R2.Чтобы сделать это без внешнего кода и получить перевод только из БД, мне нужно использовать встроенную функцию 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'не объявлено.Я обнаружил в Интернете использование объекта «Отчет» для получения элемента «Отчет», например «Поля».
Есть ли способ ссылки на «Lookup ()»?

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Невозможно вызвать функцию Lookup() в пользовательском коде.

0 голосов
/ 10 декабря 2018

Я нашел ответ на задачу снижения сложности перевода.Это не решает вопрос, но это обходной путь для минимизации работы по подготовке многоязычного отчета.Вы можете использовать переменную отчета в качестве промежуточного выражения для элемента для перевода.Если вы определяете переменную для любого элемента для перевода следующим образом:

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

Теперь вы можете использовать следующее выражение для текстового поля:

=Variables!V_Hello.Value

Это не является прямым и коротким, как решениевопрос, но если вы уважаете именование, вы можете автоматизировать вставку этих переменных в XML-файл отчета .rpt (это проблема будущего).
При этом вы убиваете двух зайцев одним выстрелом, потому что упрощаете выражение и оцениваетевыражение один раз.Это может быть полезно при сложном отчете.

0 голосов
/ 28 ноября 2018

Я думаю, что вы имеете в виду функцию поиска SSRS.Вы не можете использовать это непосредственно в функции кода отчета (насколько я знаю).

Однако, что вы, вероятно, хотите сделать, это просто использовать функцию поиска, чтобы получить перевод из набора данных с именем 'DSTranslation».Если это правильно, просто установите для выражения текстового поля (или чего-либо другого) функцию поиска.

Таким образом, ваше выражение текстового поля будет просто

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

Это предполагает, что оба набора данных имеют полезвонил Token

Если я неправильно понял, отредактируйте ваш вопрос и объясните, что вы пытаетесь сделать, более подробно и какие данные у вас есть в ваших наборах данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...