Продолжаем рассматривать полезные советы для начинающих, при создании отчетов в Microsoft Reporting Services.
Начало можно найти здесь: Microsoft Reporting Services советы начинающим.
Заинтересовавшихся, прошу под кат…
0) Как разместить несколько контролов в ячейке таблицы?
Достаточно часто возникает необходимость разместить несколько контролов в 1 ячейке таблицы. Если просто перетаскивать контрол в ячейку, то он полностью ее заполняет. Выйти из этой ситуации помогает контрол, под названием Rectangle.
Rectangle представляет собой аналог контрола Panel, используемого в WinForms, это некая площадка для размещения контролов. При размещении в ячейке, Rectangle заполняет собой всю ячейку таблицы создавая «площадку» для размещения остальных контролов.
1) Задавайте язык отчета по умолчанию
При создании отчетов старайтесь декларировать язык отчета (Свойства отчета — Language).
Это очень полезно если вы работаете с заграничным клиентом у которого региональные настройки отличаются от Ваших. Если Вы не знаете какие настройки использует Ваш клиент, то есть возможность указать Expression следующего содержания:
=User!Language
Этим Вы избежите неровностей в форматировании числовых значений, даты, времени, валюты и т.п которые ожидает клиент.
2) Конкатенация строк
Иногда возникает необходимость «вставить» в статический текст отчета, размещенный например в texbox, значение поля из базы данных. Иными словами нужно сложить строки текста в 1 строку. Для этого в SSRS предусмотрен операнд «&».
Предположим в texbox у нас имеется статический текст
«Здравствуйте, ув. Иван Иванович…».
Нам необходимо вместо Иван Иванович подставлять ФИО из базы данных, из поля fio. Для этого правой кнопкой мыши над texbox, вызываем контекстное меню, выбираем свойство Expression у texbox и меняем текст следующим образом:
=” Здравствуйте, ув. “ & Fields!fio.Value & ” …”
3) Способы форматирования числовых данных
SSRS предоставляет несколько возможностей форматировать данные. Наиболее простой способ форматирования это указать формат(свойство Format) в свойствах контрола.
Этот способ имеет 2 недостатка:
1) контрол содержит кроме данных которые предполагается форматировать еще и дополнительный текст.
2) при экспорте отчета в хмл
Решить эту проблему возможно с помощью вызова специальных методов. Рассмотрим пример:
Textbox содержит следующий текст:
“Уважаемый клиент, остаток средств на вашем счету составляет: ” & Fields!UserBalance.Value & “ руб.”
.
Если не производить форматирование, то при условии, что значение Fields!UserBalance.Value равно 1005.35 может отобразится пользователю, как 1005.350000000000. Для избежания такого казуса, необходимо использовать метод Format или FormatNumber.
Пример использования:
“Уважаемый клиент, остаток средств на вашем счету составляет ” & Format(Fields!UserBalance.Value,”#,##0.00”) & “ руб.”
“Уважаемый клиент, остаток средств на вашем счету составляет ” & FormaNumber(Fields!UserBalance.Value,2) & “ руб.”
При использовании Format необходимо использовать маску форматирования, при использовании FormaNumber достаточно указать количество знаков после запятой.
Примечание: метод Format применим так же для форматирования даты, времени, денег и т.п
4) Экспорт отчета в хмл формат настройка полей
SSRS позволяет экспортировать отчет в разные форматы, одним из них является ХМЛ. У каждого контрола отчета есть 3 свойства которые отвечают за поведение при экспорте в хмл.
Рассмотрим их поближе:
DataElementName – отвечает за название элемента в хмл, по умолчанию значение не выполнено. Если не выполнить этот элемент, то название в хмл будет соответствовать названию контрола.
DataElementOutput – свойство отвечает за то будет элемент экспортирован в хмл или нет. Значения которые можно задать:
Auto(значение по умолчанию) – элемент будет экспортирование в том случает если он имеет значение, если значение null, то не экспортируется.
Output – элемент всегда экспортируется.
NoOutput – элемент в хмл не экспортируется
DataElementStyle – отвечает за стиль элемента в хмл(будет это элемент или атрибут)
Значения которые возможно использовать:
Auto(значение по умолчанию) – в зависимости от контрола будет экспортирован в виде элемента(node) или атрибута(attribute). По сути, только texbox по умолчанию экспортируется в виде атрибута, остальные элементы виде нодов.
Attribute – значение будет представлено в виде атрибута
Element – значение будет представлено в виде элемента (node)
Важная фишка: на экспорт в хмл не распространяется свойство Hidden.Поэтому если в хмл предполагается экспортировать элемент который показывается или нет на основании условия то это условие нужно перенести в Expression контрола. Пример: textbox содержит текст который показывается лишь в случает когда поле condition = 1. Тогда Expression будет выглядеть так:
=IIF(Fields!Condition.Value = 1, “Some text”,””)
На сегодня все, продолжение следует.
Автор: sashka304