Report viewer что это за программа
Перейти к содержимому

Report viewer что это за программа

  • автор:

Использование контрола ReportViewer в Windows приложниях

Элемент управления ReportViewer — это элемент управления среды Visual Studio, который можно добавить на веб-страницу в проекте решения ASP.NET или в форму приложения Windows. Этот элемент управления включает возможности обработки и просмотра отчетов непосредственно в приложении. ReportViewer — это элемент управления, который, начиная с Visial Studio 2005, представленный контролом. Иначе, это, в отличии от Crystal Report Viewer, бесплатный редактор отчетов, который автоматически встраивается в среду Visual Web Developer 2005 Express.

По существу, ReportViewer является наиболее мощным добавлением к таким элементам управления как, GridView, DataList, DetailsView, FormView, Repeater. В ReportViewer отчёты можно создавать с помощью технологии «drag-and-drop» внутри Дизайнера Отчётов (Report Designer), входящего в среду разработки Visual Studio 2005.

Параграф 2. Источник данных

В качестве источника данных будем использовать таблицы базы данных. База данных может быть любой, но для простоты изложения выберем наиболее простую — Microsoft Access. Например, создадим простую базу с именем Animals. Последовательность создания базы, для тех, кто по какой либо причине это еще не делал, показана на рисунках 1-5. Действия выполняются после запуска Microsoft Access:

Рис.1. Создание БД

Создание таблицы БД:

Рис.2. Создание таблицы БД

Задание полей таблицы:

Рис.3. Задание полей таблицы

После задания полей таблицы и попытки закрыть окно Table, среда запросит имя файла базы данных. Запишем любое имя, например ThisAnimals.

Рис.4. Открытие созданной таблицы базы данных

Кликнем правой кнопкой мышки по имени таблицы базы данных — ThisAnimals — и в открывшейся таблице введем информацию, например такую:

Рис.5. Заполнение таблицы информацией

Параграф 3. Создание проекта решения

Создадим простой Windows проект решения, как мы это делали неоднократно (Меню File/New/Project). Дадим имя проекту RepView, как показано на Рис.6:

Рис.6. Создание проекта решения

Поместим на форму два контрола Button и ReportViewer, как показано на Рис.7:

Рис.7. Добавление рабочих контролов

Проект создан, но прежде чем заполнять его кодом, отвлечемся на источник информации.

Параграф 4. Источник данных для отображения

Нажимаем в правом верхнем углу контрола треугольничек и выбираем пункт Design a new Report (Рис.7.). В появившемся окне редактора ReportViewer, нажимаем кнопку «Add New Source..»(Рис.8.)

Рис.8. Добавление источника данных

Прежде чем выбрать DateBase и нажать кнопку Next (Рис.9.), мы можем скопировать файл созданной выше базы данных (файл Animals.mdb) в директорию проекта решения (хотя это и не является обязательным, среда предложит Вам позже выполнить это еще раз, но и там у Вас останется право выбора).

Рис.9. Добавление источника данных

Нажимаем кнопку New и далее выбираем DataSource и DataFileName, как показано на Рис.10.

Рис.10. Добавление DataSource и DataFileName

В результате выбора получим результат:

Рис.11. Результат выбора источника данных

После нажатия кнопки Next не соглашаемся включить файл базы данных в текущий проект (зависит от цели задачи).

Результат мы видим на Рис.12:

Рис.12. Результат выбора источника данных

Нажимаем кнопку Finish. Результат выбора источника данных будет иметь вид Рис.13:

Рис.13. Результат выбора источника данных

Параграф 5. Отображение данных

Кликнем мышкой в поле дизайнера Report1.rdlc и в меню View выберем ToolBox. В результате в проекте отобразится ToolBox, с контролами, которые доступны для использования в ReportViewer (Рис.14.). Здесь мы видим все доступные для отображения в ReportViever контролы. Вначале будем использовать таблицу. Перетащим таблицу на панель дизайнера:

Рис.14. Добавление таблицы в дизайнер ReportViever

Вновь вернемся на вкладку DtatSource и перетащим поля источника во вторую строку таблицы, как показано на Рис.15.

Рис.15. Добавление полей отображения в ReportViever

Мы можем перетащить поля и в третью строку. При этом, по умолчанию, ячейка таблицы будет восприниматься как сумма содержимого ячеек данного столбца:

Достаточно кликнуть правой кнопкой мышки по данной ячейке и выбрать пункт «fx Expression. » мы отобразим окно «Edit Expression», где можно подобрать любую другую функцию из множества доступных. Для нашего примера в первой ячейке третьей строки запишем просто слово «Итого».

Если мы выполним решение на данном этапе, то получим сообщение:

Иначе, мы определили структуру отображения, но пока не дали сами данные для отображения. Однако, учитывая, что Visual Studiо сохраняет все при выполнении решения, мы, тем самым сохранили и файл Report1.rdlc, который на данный момент содержит структуру отображения данных и структуру ее источников в виде нашего AnimalsDataSet.

Следует особо обратить внимание на то, как заданы ReportEmbeddedResource (RepView.Report1.rdlc) и DataSources — («AnimalsDataSet _ ThisAnimals», MyDataSet.Tables[0]). Нарушение пунктуации приведет к ошибке. Выполним решение и увидим результат (Рис.16.):

Рис.16. Использование ReportViever для отображения табличных данных

Теперь добавим контрол Chart со вкладки Tools ReportViewer. И, как показано на Рис.17. перетащим поля в своеобразные ушки контрола, которые появляются при двойном клике мышкой в поле контрола.

Рис.17. Использование ReportViever для отображения табличных данных

Кликнем правой кнопкой мышки на контроле Chart и выберем пункт Properties — увидим панель, позволяющую выбрать практически все стандартные диаграммы Microsoft (Word, Excel) и задать множество свойств. Выберем понравившуюся нам диаграмму (Рис.18.).

Рис.18. Выбор диаграммы

После нажатия кнопки OK, выполним решение. Результат показан на Рис.19:

Рис.19. Выбор диаграммы

Параграф 6. Упрощенный способ отображения данных

Владимир Розанов (инженер-программист, Полесский государственный университет) прислал письмо:

Спасибо Владимиру, именно благодаря ему, мне пришлось продолжить статью. Я вполне согласен с Владимиром, достаточно установить свойства, как показано на Рис.20., и написать код, приведенный ниже, и при загрузке решения на выполнение мы получим тот же результат, что и на Рис.19. Этого во многих случаях, вполне достаточно для выполнения цели создания приложения.

Рис.20. Упрощенный способ отображения данных

Однако, мы, при этом, теряем гибкость отображения. Для каждого использования ReportViewer потребуется создать свой файл ReportEmbeddedResource (RepView.Report1.rdlc, RepView.Report2.rdlc. ). Приведенный же метод позволяет использовать многократно один и тот же файл ReportEmbeddedResource. Простейший пример приводится ниже.

Параграф 7. Использование одного ReportEmbeddedResource для вывода различных отчетов

Создадим еще одну таблицу в нашей базе данных (связанную по id с ранее созданной), как показано на Рис.21.

Рис.21. Создание дополнительной таблицы

Добавим еще одну кнопку и контрол Label на форму, и будем использовать следующий код (приводится полностью):

Цветом выделено предложение Select. Второе из них приводит названия выбираемых полей из двух таблиц к их названиям в созданном нами «AnimalsDataSet.ThisAnimals». Это приведение и позволяет использовать файл «ReportEmbeddedResource» уже созданный нами для отображения новых данных.

Результат выполнения приложения при поочередном нажатии кнопок 1 и 2 показан на Рис.22:

Рис.22. Использование одного ReportEmbeddedResource для вывода различных отчетов

Скачать код примеров

Распаковав скачанный файл вы найдете одну директорию, с решением, содержащим код последнего примера и файл Animals.mdb. Директорию с решением можно поместить в любое место любого жесткого диска, для последующего его открытия в Visual Studio 2005 и выше. Файл базы данных Animals.mdb должен быть помещен в директорию C:\Bases\, которую Вам придется создать. После этого Вы можете продолжить эксперименты с кодом.

Молчанов Владислав 25.11.2008г.

Еcли Вы пришли с поискового сервера — посетите мою главную страничку

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

Портативная дистрибуция .Net приложений с отчетами Microsoft Report Viewer и Oracle Instant Client

Довольно часто возникает необходимость или желание отказаться от создания инсталлятора и совершать дистрибуцию приложения, копируя папку с файлами на целевой компьютер. Если вам интересно как создать портативный дистрибутив .Net приложения с отчетами Report Viewer или как портативно скопировать клиента и драйвера для доступа к базе Oracle, прошу под кат. Я постараюсь все подробно объяснить.

В качестве практической части будет рассмотрено создание приложения, отображающего отчеты для торговой системы Супермаг (которая, собственно, и использует базу Oracle).

Одним из плюсов портативной дистрибуции клиента Oracle является то, что его стандартная установка — не самое приятное занятие. А если еще устанавливать и Report Viewer, то процесс установки на несколько машин рискует стать утомительным занятием. Конечно же, в качестве альтернативы можно использовать ClickOnce, но при дистрибуции с помощью ClickOnce также вполне можно копировать папку с библиотеками как это делается в данном примере.

Необходимые библиотеки для десктоп приложения со портативным доступом к Oracle

Необходимо скачать Oracle Instant Client. Если вы используете локализованное приложение, то лучше вам взять пакет basic, он хоть и занимает размер около 100Mb, но зато, в отличие от «лайтового» (light) 30 мегабайтного, гарантирует вам работу с кириллицей.

Распаковывает архив и берем из него 2 файлика:

oci.dll (аббревиатура от Oracle Call Interface);
orannzsbb11.dll либо orannzsbb12.dll (если вы будете использовать 12-ю версию).

Необходим еще и третий файлик:

Если вы взяли версию basic, то это будет — oraociei11.dll или oraociei12.dll (опять же для версии 12).
Если вы взяли версию light — oraociicus11.dll или oraociicus12.dll (уже не буду упоминать, что второй файл для версии 12 – это и так всем понятно).

А еще необходим Oracle Data Provider — ODP.NET (лучше взять XCopy версию, — она меньше размером), распаковать и найти 2 файла:

Oracle.DataAccess.dll;
OraOps11w.dll или OraOps12w.dll (этот файл необходим Oracle.DataAccess.dll для работы с файлами Oracle Instant Client он одинаковый и для .Net 2.0 и для .Net 4.0).

Если вы хотите использовать версию 12, можете скачать и Oracle Instant Client и ODP в одном файле ODAC (Oracle Data Access Components) по ссылке: www.oracle.com/technetwork/topics/dotnet/downloads/index.html

Необходимые библиотеки для приложения со портативным Report Viewer

В качестве портативной дистрибуции Report Viewer-а возьмем версию 2010.

Версию 2013 в качестве версии для портативной дистрибуции я не брал. После того, как я обнаружил, что в ней отсутствует Microsoft.ReportViewer.ProcessingobjectModel.dll, у меня произошел «разрыв шаблона» и я решил, что вполне устроят отчеты 2010-го года. Если вы знаете, как создать портативную дистрибуцию версии 2013-го, жду ваших комментариев. Можно было бы даже конкурс объявить, да вот незадача — приза нет.

Качаем Microsoft Report Viewer Redistributable 2010 и распаковаем exe файл как архив.
Среди распакованных файлов находим reportviewer_redist2010core.cab.
Продолжаем «матрешку» и распаковываем в свою очередь и этот файл.
Находим файлы и переименовываем следующим образом:

FL_Microsoft_ReportViewer_Common_dll_117718_117718_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8
переименовываем в Microsoft.ReportViewer.Common.dll

FL_Microsoft_ReportViewer_Processingobject_125592_125592_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8
переименовываем в Microsoft.ReportViewer.ProcessingobjectModel.dll

FL_Microsoft_ReportViewer_WebForms_dll_117720_117720_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8
переименовываем в Microsoft.ReportViewer.WebForms.dll

FL_Microsoft_ReportViewer_WinForms_dll_117722_117722_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8
переименовываем в Microsoft.ReportViewer.WinForms.dll

Если на компьютере разработчика установлен Oracle Client и Report Viewer (а он должен быть установлен обязательно), ссылки на эти файлы можно даже на задавать, а просто скопировать их в папки с exe (в папки Debug и Release проекта). А вот Oracle.DataAccess.dll необходимо обязательно поместить в папку проекта и установить свойство «Копировать локально» в какой-нибудь из двух вариантов копирования.

Для того, чтобы страх перед портативной дистрибуцией был не таким большим, опишу вкратце алгоритм поиска библиотеки десктопным .Net приложением.

Перед тем, как запустить поиск dll система проверяет не загружена ли dll уже в память, а также не присутствует ли dll в списке уже известных dll (попробуйте посмотреть список в реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs).

Алгоритм поиска dll зависит от некоторых факторов (например, от того, установлен ли режим SafeDllSearchMode), но приблизительно таков (в примере SafeDllSearchMode выключен):

1. Директория, из которой запускается приложение;
2. Текущая директория;
3. Системная директория. Можно использовать функцию GetSystemDirectory для получения пути к этой директории;
4. 16-ти битная системная директория;
5. Директория Windows. Можно использовать функцию GetWindowsDirectory;
6. Папки, которые указаны в системной переменной PATH.

Что такое системная переменная PATH и где она находится, смотрите наглядно на следующем скриншоте:

Теперь перейдем к практической части.

В приложение WPF (а для меня XAML более предпочтителен, чем устаревшие Forms в качестве редактора компоновки) компонент Report Viewer добавляется с помощью элемента управления WindowsFormsHost.

Чтобы пример не выглядел бесполезным, получим в нем данные из истории документа.
Для хранения данных, необходимых отчету, создадим класс:

Теперь мы может создать файл шаблона внешнего вида нашего отчета (Для визуального редактора на компьютере разработчика при установке Visual Studio должен быть выбран пункт Microsoft SQL Server Data Tools).

Добавим в проект файл отчета (Reporting – Отчет). Установим значение свойства «Копировать локально» в «Копировать, если новее». После чего открываем только что созданный файл отчета и заходим на закладку «Источники данных». Кликнем «Добавить новый источник данных», выбираем типом «Объект», в списке объектов раскрываем наш проект и находим в нем наш класс ReportDataSM, который и выделяем:

Далее для отображения строк с данными добавим в отчет таблицу. При добавлении на запрос свойства набора данных выберем наш источник данных и зададим ему какое-нибудь имя (в примере DataSet1):

Этот источник данных будет указан в табликсе таблицы в свойстве DataSetName. Файл rdlc можно редактировать не только с помощью визуального редактора, но также и с помощью редактора XML (таким способом удобно удалять старые ненужные данные).

Устанавливаем столбцам значения из данных нашего массива (кликая на строки – это просто и интуитивно понятно, объяснять подробно не буду).

Рассмотрим код

Так как замораживать интерфейс — это очень плохая практика, выборку данных запустим в отдельном потоке. Для хранения данных используем конкурентную универсальную (generic) коллекцию класса ReportDataSM. Добавим в объявления переменных (в начало класса):

После инициализируем ее где-нибудь в коде:

Раз данные мы решили получать, не блокируя интерфейс, для вызова метода асинхронно нам понадобится делегат:

В этом примере делегат принимает одно строковое значение в качестве параметра.
Параметром будет идентификатор документа, для которого необходимо получить данные по истории изменений.
Методом, который является реализацией делегата, пусть будет метод с названием getDataMethod.
Привожу упрощенный код реализации метода получения данных (без обработки возможных ошибок):

Вызываем этот метод асинхронно с помощью:

Обратите внимание на метод CompletedCallback, который передается в качестве параметра.
Его реализация необходима для того, чтобы после завершения нашего вызываемого метода запустить какой-либо другой метод. В нашем случае после извлечения данных нужно привязать эти данные к отчету и обновить интерфейс.

Но у нас есть загвоздка в том, что интерфейс мы можем обновлять только из потока приложения.
Для этого мы вызовем метод обновления интерфейса приложения из потока диспетчера. То есть содержимым нашего метода CompletedCallback будет:

Опять же, для вызова метода асинхронно нам понадобился делегат, который на этот раз не принимает никаких параметров. Добавим его в начало нашего кода:

Microsoft ReportViewer 2010 Redistributable

Screenshot Screenshot

Enable relevant solutions to run .NET Framework components responsible for reporting. Optimize remote and manual processing parameters, generate Microsoft and Web-based reports containing data regarding the status and current configuration of various components.

Версия 2010 Microsoft ReportViewer 2010 Redistributable доступна бесплатно на нашем архиве. Самая популярная версия среди пользователей Microsoft ReportViewer 2010 Redistributable 10.0.

Наша антивирусная программа проверила эту загрузку и признала ее полностью «чистой» от вирусов. ПО принадлежит к категории Разработчикам.

Последняя версия программы совместима с Windows Vista/7/8/10/11, 32-бит. Это бесплатное программное обеспечение принадлежит Microsoft. Размер файла пакета для установки 4.5 MB. Установочные файлы программы следующие: ComplementoReportes.exe, MSTORE.EXE, mtm.exe, ReportViewer 1.exe или ReportViewer.exe и т.д.

От разработчика:

Microsoft Report Viewer control enables applications that run on the .NET Framework to display reports designed using Microsoft reporting technology. This redistributable package contains Windows and Web versions of the Report Viewer.

Мы предлагаем оценить другие программы, такие как Microsoft Office 2010: Primary Interop Assemblies Redistributable, Microsoft Access Database Engine 2010 Redistributable или Microsoft Visual C++ Redistributable, которые часто используются вместе с Microsoft ReportViewer 2010 Redistributable.

ReportViewer Control in Visual Studio 2010

ReportViewer is a freely redistributable control that enables embedding reports in applications developed using the .NET Framework. Reports are designed with drag-and-drop simplicity using Report Designer included in Visual Studio 2010.

See screenshots of some applications that have ReportViewer control embedded in them.

The ReportViewer control offers the following benefits:

  • Processes data efficiently. The reporting engine built into ReportViewer can perform operations such as filtering, sorting, grouping and aggregation.
  • Supports a variety of ways in which to present data. You can present data as lists, tables, charts and matrices (also known as crosstabs.)
  • Adds visual appeal. You can specify fonts, colors, border styles, background images etc to make your report visually appealing.
  • Enables interactivity in reports. You can have collapsible sections, document map, bookmarks, interactive sorting etc in your report.
  • Supports conditional formatting. You can embed expressions in the report to change display style dynamically based on data values.
  • Supports printing and print preview.
  • Supports export to Excel, Word and PDF formats. (Word export in Visual Studio 2010 and up.)

The control can process and render reports independently using a built-in engine (‘local mode’) or it can display reports that are processed and rendered on a Report Server (‘remote mode’).

There is a WinForms and a WebForms version of the control.

Third party solutions

Got a database? Use Visual DB database form builder to build data entry forms.

Developers can now use the full power of RDL in their applications without the restrictions of RDLC. Use the Microsoft Report Designer or Report Builder to build reports and easily integrate them into your application. Forerunner SSRS Pro Viewer & Explorer

Report design in a nutshell

Defining report data sources.
Using object data sources in Windows applications and Web sites.
Add Charts to your report.
Using report parameters in local mode.
Designing master-detail reports.
Using Subreports.
What is a tablix?

  1. Q: What are the new features in ReportViewer 2010?

A: ReportViewer 2010 supports RDL 2008 features such as Tablix, Rich Text and Gauges. Other enhancements include support for ASP.NET AJAX.

A: No. Report Server is a component of SQL Server, but the ReportViewer control is not. ReportViewer is only included in Visual Studio 2005/2008/2010.

A: No. The only prerequisite of the ReportViewer control is .NET Framework.

A: No. The ReportViewer control is freely redistributable. It can work independently of SQL Server (‘local mode’) and a SQL Server license is not required. In remote mode the ReportViewer control talks to a Report Server. The Report Server does require a SQL Server license.

A: No. Data can come from any source. It is the host application’s responsibility to collect data from whatever source it needs to come from, and supply it to the control in the form of ADO.NET DataTables or a collection of business objects. The ReportViewer control does not know or care where the data is coming from.

A: No. The ReportViewer control is distributed with Visual Studio 2005 and above, but it is not part of the .NET Framework.

A: ReportViewer is included in Standard and up. (i.e., all editions except Express.) An add-in is available for Visual Web Developer Express.

A: RDL files are created by the SQL Server 2008 version of Report Designer. RDLC files are created by the Visual Studio 2008 version of Report Designer.

RDL and RDLC formats have the same XML schema. However, in RDLC files, some values (such as query text) are allowed to be empty, which means that they are not immediately ready to be published to a Report Server. The missing values can be entered by opening the RDLC file using the SQL Server 2008 version of Report Designer. (You have to rename .rdlc to .rdl first.)

RDL files are fully compatible with the ReportViewer control runtime. However, RDL files do not contain some information that the design-time of the ReportViewer control depends on for automatically generating data-binding code. By manually binding data, RDL files can be used in the ReportViewer control.
See also the RDL Viewer sample program.

Note that the ReportViewer control does not contain any logic for connecting to databases or executing queries. By separating out such logic, the ReportViewer has been made compatible with all data sources, including non-database data sources. However this means that when an RDL file is used by the ReportViewer control, the SQL related information in the RDL file is simply ignored by the control. It is the host application’s responsibility to connect to databases, execute queries and supply data to the ReportViewer control in the form of ADO.NET DataTables.

A: The C stands for Client-side processing. RDL stands for Report Definition Language.

A: The ReportViewer control does not prompt for parameters when in local mode. It prompts for parameters when it is connected to a Report Server.

In local mode it does not make sense for ReportViewer to prompt for parameters. The rationale is as follows: The most common use of report parameters is to pass to queries as values of query parameters. But unlike the Report Server, the ReportViewer control does not execute queries itself. Rather, queries are executed by the host application, and the result is passed to the ReportViewer control. So the ReportViewer control does not have the opportunity to set query parameters. Applications should take advantage of the parameterization features of Visual Studio data wizards instead.

A: There are two editions of Report Designer. One comes in the Visual Studio 2008 box. The other comes in the SQL Server 2008 box. If you are using the Report Designer included in SQL Server 2008, the Preview tab is still available. If you are using the Report Designer included in Visual Studio 2008, you have to run your application in order to preview the report.

Why is the Preview feature missing in the VS 2008 edition of Report Designer? Because the ReportViewer control does not contain any logic for connecting to databases or executing queries. Since it is your application’s responsibility to supply data—and your application can supply data that originates anywhere, including objects that are internal to your application—data for previewing the report cannot be obtained without running your application.

A: When the ReportViewer control is used in remote processing mode you can simply supply the url of the Report Server and the path to the report, and ReportViewer control will do the rest.

In local processing mode, the ReportViewer control is designed to integrate well with the host application. That includes being able to generate reports based on business objects that are internal to your application.

The ReportViewer control does not contain any logic for connecting to databases or executing queries. By separating out such logic, the ReportViewer has been made compatible with all kinds of data sources, including non-database data sources.

Rather than building in the logic to connect to databases and execute queries, ReportViewer is designed to integrate well with Visual Studio data wizards and the classes they generate, such as the TableAdapter class that knows how to connect to data sources, execute queries and fetch data.

See also the RDL Viewer sample program.

A: To see all rows, first drag and drop a Table or a List to the report, then drag and drop the field into the Table or List.

A: If you have set ReportViewer’s height to a percentage, then in the .aspx file delete the line that sets doctype to xhtml. Why?

A: No. The xls export feature is independent of Excel. Excel is only required to view the xls file.

A: No. The ReportViewer control does not use any Adobe code to generate PDF files. PDF is an open format, and anyone can create PDF files without requiring a special license.

A: Unlike the Report Server the ReportViewer control does not connect to databases or execute queries. Also, in local mode the only export formats available are Excel, Word and PDF. (In remote mode all formats supported by the Report Server are available.) The ReportViewer control cannot be extended by adding custom renderers or custom report items.

Besides additional export formats, the Report Server offers better scalability, central storage, management and access control of reports, caching, subscriptions, etc.

Free downloads

WebForms and WinForms versions of the ReportViewer control.

SQL Server Express. Note: Click on Installation Options to download just the database engine, engine and management tools, or engine, management tools and «Advanced Services» which includes a free edition of Reporting Services server.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *