Я столкнулся с похожей проблемой, например, при выборе этикетки для печати, а также необходимости печатать более 1 этикетки для каждого клиента. Моя проблема в том, что я не могу получить доступ к SQL (мы используем кубы). Я использовал SSRS 2012 с SharePoint. Это некрасиво, но это работает.
У меня был 1 набор данных в моем отчете. У меня было 14 этикеток - 7 вниз и 2 поперек. Каждая метка настраивается как отдельный табликс.
Табликсы пронумерованы от 1 до 14, начиная с верхнего левого угла. Итак, 1-7 вниз по левому «столбцу», а затем 8-14 сверху по правому «столбцу».
Раздражает то, что значения параметров начинаются с 0, поэтому они пронумерованы от 0 до 13. Каждый табликс настроен на фильтрацию по определенному значению параметра, например, табликс 1 настроен на фильтрацию по значению параметра 0, табликс 2 фильтруется по значению параметра. 1, табликс 3 фильтруется по значению параметра 2, табликс 4 фильтруется по значению параметра 3 и т. д.
Мне пришлось дважды печатать данные на этикетке, поэтому я использовал 2 текстовых поля в своем табликсе.
Создать параметр
Пользователи будут использовать идентификатор клиента (6-значное число) в качестве значения параметра. Я создал параметр ClientID. Для подсказки я поставил «Заменить 000000 для каждой требуемой метки. 000000 = пустая метка».
В разделе «Общие» я:
- changed Data type to Text
- включено Разрешить пустое значение ("")
- включено Разрешить несколько значений
- установить видимость параметра Select на Visible
Доступные значения
- Default Values
- selected Specify values
- нажал «Добавить» и установил «Значение» на 00000. Я делал это 14 раз (поэтому у меня есть значение по умолчанию 000000 для каждой метки)
Создать табликс
Затем я создал табликс для каждой метки. Все они указывали на мой набор данных (образно названный «DataSet1»). Они состояли из одной клетки. Это соответствовало высоте и ширине области печати моей этикетки.
Создать текстовое поле
Я добавил свое первое текстовое поле в ячейку табликса. Я сделал его немного меньше ширины табликса и чуть ниже верхней части табликса.
Создал второе текстовое поле и переместил его вниз, пока оно не удовлетворит мои потребности. В нем использовалась та же формула, что и в первом текстовом поле. (помните, мне нужно было дважды напечатать имя клиента).
Я использовал поиск по набору данных в своем отчете. Да, несмотря на то, что табликс уже был основан на этом наборе данных.
Для первой метки формула для обоих текстовых полей была следующей:
=lookup(Parameters!ClientID.Value(0),
Fields!ID.Value,
UCase(Fields!Surname.Value),
"DataSet1")
& ", " &
lookup(Parameters!ClientID.Value(0),
Fields!ID.Value,
Fields!Given.Value,
"DataSet1")
Создать фильтр для табликса
Мне также пришлось применить фильтр к каждому табликсу, чтобы он печатал информацию о клиенте, выбранную с помощью параметра.
В свойствах табликса в разделе «Фильтры» + нажмите «Добавить» + в выражении, я выбрал свой ClientID + в операторе, я выбрал In + в значении, я нажал кнопку «Fx», чтобы создать формулу = Parameters! ClientID.Value (0 )
Не отображать значение параметра по умолчанию
Очевидно, что если вы оставите значение параметра по умолчанию (000000), он напечатает это.
Единственный способ предотвратить это — использовать цвет шрифта (я не смог заставить работать видимость). + Щелкните правой кнопкой мыши текстовое поле + Выберите свойства текстового поля + Щелкните параметры шрифта + Под цветом нажмите кнопку Fx + Используйте эту формулу:
=iif(Parameters!ClientID.Value(0)="000000", "White", "Black")
Для последующих ярлыков
Для второй метки я проиндексировал значение в скобках, например, от (0) до (1) для обеих формул текстового поля, а также для фильтра, например
=lookup(Parameters!ClientID.Value(1),
Fields!ID.Value,
UCase(Fields!Surname.Value),
"DataSet1")
& ", " &
lookup(Parameters!ClientID.Value(1),
Fields!ID.Value,
Fields!Given.Value,
"DataSet1")
и в фильтре свойств табликса
=Parameters!ClientID.Value(1)
и в формуле шрифта текстового поля
=iif(Parameters!ClientID.Value(1)="000000", "White", "Black")
Затем я проиндексировал это число для каждой последующей метки, поэтому последняя метка (метка 14) имела следующие значения:
=lookup(Parameters!ClientID.Value(13) etc
и в фильтре свойств табликса
=Parameters!ClientID.Value(13)
и в формуле шрифта текстового поля =iif(Parameters!ClientID.Value(13)="000000", "Белый", "Черный")
Итак, когда пользователи запускают отчет, они заменяют 000000, 000000, 000000 и т. д. соответствующим идентификатором клиента.
person
Adrift
schedule
05.10.2017