2010-01-13 2 views
0

Я заканчиваю свои отчеты в моем проекте служб Reporting Services SQL Server 2008, и в качестве одного из последних шагов мне нужно сделать вещи переведенными.Службы Reporting Services - перевод этикеток на разные языки

Поскольку у меня есть куча отчетов, и все они имеют некоторые одинаковые ярлыки, я решил поместить все эти ярлыки, которые мне нужно показать в таблице SQL Server, и я нахожу это содержимое как DataSet dsReportLabels в своих отчетах ,

Этот DataSet содержит в основном два поля: LabelName - это имя метки (например, «Количество элементов»), а Caption содержит текст на выбранном языке, который будет отображаться в отчете.

Но теперь вот мой ментальный блок: как назначить значение dsReportLabels.Caption, например, текстовое поле, основанное на dsReportLabels.LabelName?

Так что мне нужно что-то вроде (заявление псевдо-LINQ):

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

, но как я могу выразить, что в Reporting Services фрагмент кода?

Я знаю, как ссылаться на такие вещи, как Parameters!MyParameterName.Value и т. Д. - но это не работает здесь, когда я пытаюсь извлечь значение из одного столбца DataSet, учитывая значение другого столбца в этом DataSet ,

Держу пари, что это совершенно легко сделать в конце ... просто не может показаться, что я обволакиваю голову прямо сейчас ... кто-нибудь знает, как это сделать?

ответ

1

Это сообщение MSDN описывает один из способов сделать это. По существу:

  1. Создайте таблицу поиска с меткой, языком и надписью.
  2. Создайте сохраненный Proc, который получает все идентификаторы меток и титры для указанного языка.
  3. Сохраните результаты SP в наборе данных.
  4. Храните набор данных в параметре с несколькими значениями.
  5. Используйте параметр multi-value в пользовательской функции поиска.

Таким образом, выражение в текстовом поле ярлыка вызовет пользовательскую функцию с идентификатором labelID, который получит соответствующую подпись для соответствующего языка.

Report Server 2008 также имеет встроенную функцию поиска, которая может позволить вам пропустить шаги 4 и 5. Если это так, ваше выражение вызовет встроенную функцию поиска, которая будет напрямую передаваться в набор данных , У меня нет RS 2008, поэтому я не могу это проверить.

+0

Вы уверены, что этот встроенный поиск в RS2008 ?? Из того, что я нахожу в Интернете, это похоже на функцию RS 2008 ** R2 ** .... (к сожалению :-(). –