Продолжаем рассматривать полезные советы для начинающих, при создании отчетов в Microsoft Reporting Services.
Начало можно найти здесь: Microsoft Reporting Services советы начинающим.
Заинтересовавшихся, прошу под кат…
Достаточно часто возникает необходимость разместить несколько контролов в 1 ячейке таблицы. Если просто перетаскивать контрол в ячейку, то он полностью ее заполняет. Выйти из этой ситуации помогает контрол, под названием Rectangle.

Rectangle представляет собой аналог контрола Panel, используемого в WinForms, это некая площадка для размещения контролов. При размещении в ячейке, Rectangle заполняет собой всю ячейку таблицы создавая «площадку» для размещения остальных контролов.

При создании отчетов старайтесь декларировать язык отчета (Свойства отчета — Language).

Это очень полезно если вы работаете с заграничным клиентом у которого региональные настройки отличаются от Ваших. Если Вы не знаете какие настройки использует Ваш клиент, то есть возможность указать Expression следующего содержания:
Этим Вы избежите неровностей в форматировании числовых значений, даты, времени, валюты и т.п которые ожидает клиент.
Иногда возникает необходимость «вставить» в статический текст отчета, размещенный например в texbox, значение поля из базы данных. Иными словами нужно сложить строки текста в 1 строку. Для этого в SSRS предусмотрен операнд «&».
Предположим в texbox у нас имеется статический текст
upd: Как подсказал в коментарии уважаемый pokryshkin, более правильный способ конкатенации строк — использовать placeholder.
Использовать его просто: в texbox, необходимо уставнить курсор в то место, куда предполагается вставить значение из поля базы данных. Правой кнопкой мыши вызываем контекстное меню и выбираем «Create placeholder...»

Задаем значение Label(это значение будет видно в тексте, если не указать значение для поля Lable, то будет использовано название поля из базы данных) и Value(в нашем случае это поле из базы данных)

Применение placeholder преподносит дополнительные выгоды:
1) Видно текст, который находится в контроле(в методе что описал я, пользователь видит только текст
2) Placeholder позволяет произвести форматирование поля (задать формат данных, изменить шрифт, цвет, выравнивание и т.п ) не меняя при этом форматирование основного текста.

Разница «на лицо»:

SSRS предоставляет несколько возможностей форматировать данные. Наиболее про��той способ форматирования это указать формат(свойство Format) в свойствах контрола.

Этот способ имеет 2 недостатка:
1) контрол содержит кроме данных которые предполагается форматировать еще и дополнительный текст.
2) при экспорте отчета в хмл
Решить эту проблему возможно с помощью вызова специальных методов. Рассмотрим пример:
Textbox содержит следующий текст:
Если не производить форматирование, то при условии, что значение Fields!UserBalance.Value равно 1005.35 может отобразится пользователю, как 1005.350000000000. Для избежания такого казуса, необходимо использовать метод Format или FormatNumber.
Пример использования:
При использовании Format необходимо использовать маску форматирования, при использовании FormaNumber достаточно указать количество знаков после запятой.
Примечание: метод Format применим так же для форматирования даты, времени, денег и т.п
SSRS позволяет экспортировать отчет в разные форматы, одним из них является ХМЛ. У каждого контрола отчета есть 3 свойства которые отвечают за поведение при экспорте в хмл.

Рассмотрим их поближе:
DataElementName – отвечает за название элемента в хмл, по умолчанию значение не выполнено. Если не выполнить этот элемент, то название в хмл будет соответствовать названию контрола.
DataElementOutput – свойство отвечает за то будет элемент экспортирован в хмл или нет. Значения которые можно задать:
Auto(значение по умолчанию) – элемент будет экспортирование в том случает если он имеет значение, если значение null, то не экспортируется.
Output – элемент всегда экспортируется.
NoOutput – элемент в хмл не экспортируется
DataElementStyle – отвечает за стиль элемента в хмл(будет это элемент или атрибут)
Значения которые возможно использовать:
Auto(значение по умолчанию) – в зависимости от контрола будет экспортирован в виде элемента(node) или атрибута(attribute). По сути, только texbox по умолчанию экспортируется в виде атрибута, остальные элементы виде нодов.
Attribute – значение будет представлено в виде атрибута
Element – значение будет представлено в виде элемента (node)
Важная фишка: на экспорт в хмл не распространяется свойство Hidden.Поэтому если в хмл предполагается экспортировать элемент который показывается или нет на основании условия то это условие нужно перенести в Expression контрола. Пример: textbox содержит текст который показывается лишь в случает когда поле condition = 1. Тогда Expression будет выглядеть так:
На сегодня все, продолжение следует.
Начало можно найти здесь: 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 & ” …”
upd: Как подсказал в коментарии уважаемый pokryshkin, более правильный способ конкатенации строк — использовать placeholder.
Использовать его просто: в texbox, необходимо уставнить курсор в то место, куда предполагается вставить значение из поля базы данных. Правой кнопкой мыши вызываем контекстное меню и выбираем «Create placeholder...»

Задаем значение Label(это значение будет видно в тексте, если не указать значение для поля Lable, то будет использовано название поля из базы данных) и Value(в нашем случае это поле из базы данных)

Применение placeholder преподносит дополнительные выгоды:
1) Видно текст, который находится в контроле(в методе что описал я, пользователь видит только текст
<> , что вводит человека, который видит код отчета впервые в замешательство и тратит его время на поиск нужного Expression.)2) Placeholder позволяет произвести форматирование поля (задать формат данных, изменить шрифт, цвет, выравнивание и т.п ) не меняя при этом форматирование основного текста.

Разница «на лицо»:

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”,””)
На сегодня все, продолжение следует.