Службы отчетности - перевод ярлыков на разные языки - PullRequest
0 голосов
/ 13 января 2010

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

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

Этот набор данных в основном содержит два поля: 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 Ответ

1 голос
/ 13 января 2010

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

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

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

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

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