Создание простого табличного отчета (учебник по службам SSRS)
В этом руководстве описано, как использовать средство Конструктор отчетов в Visual Studio и SQL Server Data Tools (SSDT). Вы создадите отчет SQL Server Reporting Services (SSRS) с разбивкой на страницы. Отчет содержит таблицу запросов, созданную из данных в AdventureWorks2022 базе данных.
По мере работы с этим руководством вы сделаете следующее:
- создадите проект отчетов;
- настроите подключение к данным;
- определите запрос;
- добавите табличную область данных;
- отформатируете отчет;
- сгруппируете поля;
- просмотрите отчет;
- при необходимости опубликуете отчет.
Требования
Для работы с этим руководством должны быть установлены следующие компоненты:
- Ядро СУБД Microsoft SQL Server.
- SQL Server 2016 Reporting Services (SSRS) и более поздние версии.
- База данных AdventureWorks2022 . См. подробнее о примере баз данных AdventureWorks.
- SQL Server Data Tools для Visual Studio вместе с установленным расширением Reporting Services для обеспечения доступа к конструктору отчетов.
Для получения данных из базы данных AdventureWorks2022 необходимо иметь разрешения только на чтение.
Предполагаемое время для выполнения заданий учебника: 30 минут.
Как создать отчет в ASP .NET MVC на Visual Basic
Язык программирования Visual Basic .NET позиционируется многими как язык начального уровня. Но это, конечно же, не так. Мы привыкли к тому, что Visual Basic .NET чаще всего используется в Desktop-приложениях. Однако, этот язык позволяет гораздо больше — например, создавать веб-приложения на фреймворке ASP .NET.
ASP .NET поддерживает шаблон программирования MVC (Model-View-Controller), который сильно упрощает масштабирование и тестирование приложения, по сравнению с обычным ASP .NET. Этот шаблон имеет различные вариации, но суть остается прежней — разграничить зоны ответственности между бизнес-логикой и представлением. Все современные веб-фреймворки построены по такой структуре. Таким образом, используя Visual Basic .NET вы легко можете создавать веб-приложения для frontend на Angular или любом другом фреймворке.
Но вернемся к теме этой статьи — генерация отчетов. Программы-генераторы отчетов плотно вошли в нашу жизнь ещё в начале “нулевых”, и сейчас создавать отчет с “нуля” отважатся единицы. Это должен быть поистине уникальный отчет, который не по силам ни одному генератору. Звучит иронично, но такие случаи действительно бывают. Особая логика формирования отчета может действительно стать камнем преткновения перед использованием генераторов отчетов. Однако, возможно, вы просто не знаете всех их возможностей. Так, например, мало кто знает и использует возможность создания шаблона отчета из кода пользовательского приложения в генераторе отчетов FastReport .NET. Такой способ создания отчета дает вам уникальную возможность управлять структурой шаблона и процессом генерации непосредственно в коде программы. Ваша “хитрая” логика может быть реализована именно здесь.
Да, такой способ создания отчета требует хороших знаний продукта, а именно — структуры отчета, объектов и их свойств. Поэтому и квалификация разработчика должна быть соответствующая.
Пожалуй, оставим эти рассуждения и приступим к созданию демонстрационной программы, создающей отчет из кода веб-приложения ASP .NET MVC на языке Visual Basic.
Прежде всего вам нужно создать соответствующий проект для этого.

Visual Studio заботливо создаст вам готовое демонстрационное приложение с готовой структурой. Остается лишь подключить библиотеки FastReport .NET и добавить свой код создания отчета.
Добавим библиотеки в ссылки (References) проекта: FastReport.dll, FastReport.Web.dll. Эти библиотеки вы найдете в корне установленной программы FastReport .NET.
Воспользуемся готовым контроллером для программирования основной логики — HomeController:
‘Подключаем нужные библиотеки Imports System.Drawing Imports FastReport Imports FastReport.Data Imports FastReport.Utils Imports FastReport.Web ‘Редактируем метод Index Function Index() As ActionResult Dim AppFolder As String Dim report As New WebReport() 'create instance of class Report Dim ds As New DataSet() 'create dataset object AppFolder = "C:\Users\FR\source\repos\WebAppVB\WebAppVB\App_Data" 'load data ds.ReadXml(AppFolder + "\nwind.xml") report.RegisterData(ds) report.Report.GetDataSource("Products").Enabled = True 'create report page Dim page As New ReportPage() report.Report.Pages.Add(page) 'add created page to report page collection page.CreateUniqueName() 'with generated name 'create group header band Dim group As New GroupHeaderBand() page.Bands.Add(group) 'add the band to band collection group.CreateUniqueName() 'with generated name group.Height = Units.Centimeters * 1 group.Condition = "[Products.ProductName].Substring(0,1)" 'set the group condition group.SortOrder = FastReport.SortOrder.Ascending 'and set sort order 'create text object Dim groupTxt As New TextObject() groupTxt.Parent = group 'set the object on whitch the text will be shown groupTxt.CreateUniqueName() groupTxt.Bounds = New RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1) 'set the text object bounds groupTxt.Text = "[[Products.ProductName].Substring(0,1)]" 'set the text value groupTxt.Font = New Font("Arial", 14, FontStyle.Bold) 'set the font style groupTxt.VertAlign = VertAlign.Center ' set the text align groupTxt.Fill = New LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5F, 1) 'set the text object fill 'create data band Dim data As New DataBand() group.Data = data 'set the group data data.CreateUniqueName() data.DataSource = report.Report.GetDataSource("Products") 'set data band source data.Height = Units.Centimeters * 0.5F 'set data band height 'create one more text object Dim productText As New TextObject() productText.Parent = data 'add the text object to data band productText.CreateUniqueName() productText.Bounds = New RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5F) 'set the text object bounds productText.Text = "[Products.ProductName]" 'set the text value 'create group footer band group.GroupFooter = New GroupFooterBand() group.GroupFooter.CreateUniqueName() group.GroupFooter.Height = Units.Centimeters * 1 'set the group footer height 'create total object Dim groupTotal As New Total() groupTotal.Name = "TotalRows" 'set total object name groupTotal.TotalType = TotalType.Count 'set total type groupTotal.Evaluator = data 'set the band for which the total will be calculated groupTotal.PrintOn = group.GroupFooter 'set the total place report.Report.Dictionary.Totals.Add(groupTotal) 'add the total object to totals collection 'create text object Dim totalText As New TextObject() totalText.Parent = group.GroupFooter 'set the object on whitch the text will be shown totalText.CreateUniqueName() totalText.Bounds = New RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5F) 'set the text object bounds totalText.Text = "Rows: [TotalRows]" 'set the text value totalText.HorzAlign = HorzAlign.Right 'set the text align totalText.Border.Lines = BorderLines.Top 'set the border lines type ViewBag.WebReport = report Return View() End Function
Из комментариев к коду понятно, что мы создаем объекты отчета, а также выстраиваем четкую иерархию и зависимость. Например, все бенды должны быть добавлены на страницу, а текстовые поля помещаются на бенды или внутрь других объектов, таких как таблицы или матрицы, например. Важно не только выстроить зависимость, но и правильно настроить свойства объектов — их размер, положение относительно родительского объекта и так далее. Из всех этих деталей складывается отчет. Поэтому данный способ создания отчета требует хорошего уровня знаний продукта FastReport.NET.
Каждый веб-метод в нашем демонстрационном приложении уже имеет представление. В папке Views найдите Index.vbhtml. Вставьте в удобное место следующую строку кода:
@ViewBag.WebReport.GetHtml()
Здесь мы выполняем метод преобразования веб-отчета в HTML. Конечно, помимо html, он будет содержать стили, скрипты, картинки — в общем всё, что нужно для отображения отчёта на веб-странице.
В папке Views есть конфигурационный файл для фронтенд приложения Web.config. Добавим в него новые неймспейсы:
> namespace="FastReport" /> namespace="FastReport.Web" /> >
В этой же папке есть еще один файл, в который нужно внести правки — Views/Home/Shared/_Layout.vbhtml. Добавим в него использование скриптов и стилей библиотек FastReport:
head> @WebReportGlobals.Scripts() @WebReportGlobals.Styles() /head>
В корне проекта есть еще один Web.config. В нем, после секции добавляем:
> > name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/> > >
Наше приложение готово к запуску. Убедимся же в его работоспособности.

Вот и все — мы создали полноценный отчёт прямо в коде программы. На вид он ничем не отличается от отчета, создаваемого в специальном визуальном дизайнере. Но, конечно же в коде это делать сложнее. Поэтому мы рекомендуем использовать данный способ лишь в особых случаях, когда реализовать сложную логику внутри отчета не получается.
Как создаются отчеты в Visual Studio на c#?
Имеются таблицы на Sql Server и приложение на c# которое отображает эти таблицы, но мне нужно создать отчет, который выводил бы разную информацию из всех таблиц. То есть, например, есть таблица Книги и есть таблица Авторы, мне нужно видеть в отчете Автора и список всех его книг. Таблицы связаны по ключам. Искал в интернете — никакой вразумтельной информации по созданию отчетов в Visual Studio я не нашел. Прошу Вашей помощи. Заранее спасибо

Отслеживать
задан 24 мая 2017 в 8:35
3 1 1 серебряный знак 2 2 бронзовых знака
на dotNet с отчётами всё плохо, по крайней мере с бесплатными решениями, из платных можно посмотреть Telerik Reporting, Devexpress Reporting, Crystal Reports
Урок 1. Создание проекта сервера отчетов (службы Reporting Services)
В этом уроке вы создадите проект сервера отчетов и RDL-файл определения отчета с помощью конструктора отчетов.
SQL Server Data Tools (SSDT) — это среда Microsoft Visual Studio для создания решений бизнес-аналитики. SSDT содержит среду разработки, (конструктор отчетов), в которой можно открывать, изменять, просматривать, сохранять и развертывать определения отчетов Службы Reporting Services с разбивкой на страницы, общие источники данных, общие наборы данных и элементы отчетов.
Части отчетов не рекомендуются для всех выпусков SQL Server Reporting Services после SQL Server Reporting Services 2019 г. и прекращены с SQL Server Reporting Services 2022 г. Сервер отчетов Power BI.
При создании отчетов с помощью конструктора отчетов он создает проект сервера отчетов, который содержит файлы отчетов и других ресурсов, которые нужны для этих отчетов.
Создание проекта сервера отчетов
- В меню Файл выберите пункт Создать>Проект.

- В крайнем левом столбце в разделе Установленные выберите Службы Reporting Services. В некоторых случаях этот пункт может оказаться в группе Бизнес-аналитика.

Важно! Если вы работаете в Visual Studio и не видите служб Reporting Services в левом столбце, добавьте конструктор отчетов, установив рабочую нагрузку SSDT. Из меню Средства выберите Получить средства и компоненты. , а затем в отображаемых рабочих нагрузках выберите SQL Server Data Tools. Если вы не видите объекты служб Reporting Services в центральном столбце, добавьте расширения служб Reporting Services. Откройте меню Средства и выберите Расширения и обновления>В сети. В центральном столбце выберите Проекты Microsoft Reporting Services>Скачать из отображаемого списка расширений. Сведения об SQL Server Data Tools (SSDT) см. в этой статье. Если предыдущие шаги не помогли устранить проблему в Visual Studio 2019, попробуйте установить расширение проекта службы Microsoft Reporting Service.

Создание файла определения отчета (RDL)
- В области обозревателя решений щелкните правой кнопкой мыши папку Reports (Отчеты). Если область Обозреватель решений не отображается, выберите в меню Вид элемент >Обозреватель решений.
- Щелкните Добавить>Новый элемент.

- В окне Добавление нового элемента щелкните значок Отчет.
- Введите «Sales Orders.rdl» в текстовое поле Имя.
- Нажмите кнопку Добавить справа внизу в диалоговом окне Добавление нового элемента, чтобы завершить процесс. Конструктор отчетов откроет и отобразит в представлении конструктора новый файл отчета Sales Orders.

Дальнейшие шаги
Итак, вы создали проект отчета Tutorial и отчет Sales Orders. В следующих уроках вы научитесь выполнять такие действия:
- настройка источника данных для отчета;
- создание набора данных из источника данных;
- разработка и форматирование макета отчета.
