<<На Главную     <В меню Советы для программиста

Обычно разработчики отчетов CrystalReports в качестве источников  используют 'физические' таблицы  баз данных. Однако, с точки зрения производительности (скорости) генерации подобных 'репортов' более предпочтительным вариантом будет, пожалуй, использование наборов данных DataSet . Такие наборы находяться в кэше (в оперативной памяти компьютера), и время доступа к виртуальным таблицам понятное дело существенно меньше, чем к данным, хранящимся на диске.

В отличии от использования физических таблиц в отчетах Crystal Reports, при создании проектов с источниками данных DataSet возникают некоторые технические сложности, не всегда очевидные для неискушенных разработчиков. На следующем несложном примере будет продемонстрирована последовательность создания проекта на C# в среде разработки Visual Studio 2013 для генерации отчетов с разбором возможных проблем.

 

  

 

В качестве контекста ситуации предположим, что необходимо вывести в отчет Crystal Reports список сотрудников некой организации. Источником для заполнения таблиц в наборе DataSet пусть будет  таблица Sotrudniki из базы MS SQL Server'а следующего содержания:

 

 

Приступаем к реализации нашего несложного проекта. Идем в Visual Studio и создаем приложение Windows Application с одной-единственной формой . Предположим, что такой простенький проект мы успешно создали, и теперь нужно добавить в него компонент DataSet. Поступаем сл. образом - в Обозревателе решений становимся на  пункт проекта и по правой кнопке выбираем Добавить>Создать элемент:

 

 

На сл. форме выбираем Данные>Набор данных:

 

 

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

 

 

Далее щелкаем правой кнопкой по заголовку вновь созданной таблицы,  выбираем Добавить>Cтолбец и начинаем вводить столбцы с именами, соответствующие обозначению колонок в таблице Sotrudniki (для случая нашего примера):

 

 

Результат проделанной манипуляции - проект, имеющий в Visual Studio 2013 приблизительно такой вид :

 

 

Так, идем дальше. Следующим шагом будет создание отчета Crystal Report. Как и в случае с созданием набора данных DataSet1 становимся в Обозревателе решений на пункт проекта, по правой кнопке Добавить>Создать новый элемент . В сл. форме слева выбираем Reporting и справа Crystal Reports :

 

 

Дальше начинается работа с мастером :

 

 

... и  выбираем  только-что созданную табличку DataTable1:

 

 

На следующем шаге мастера переносим все поля из таблицы в форму Отчета :

 

 

Работу с мастером отчета пока закончим. Позже можно будет вернуться к более тщательной проработке вида отчета.

Следующий пункт нашей программы заключается в перетаскивании вьювера отчетов на форму. Делается это очень просто - ищем в Панели элементов компонент CrystalReportViewer и просто вытягиваем его мышкой на форму нашей нехитрой программки , где-то так:

 

 

После такой манипуляции форма должна смотреться приблизительно так:

 

 

Некоторые компоненты CrystalReportViewer'а , включенные по умолчанию, являются излишними. Например, можно отключить панель ToolPanelView :

 

 

... и соотвественно кнопку ShowGroupTreeButton :

 

 

 

Теперь настало время написания кода. К кнопке , которая будет отвечать за генерацию отчета нужно будет добавить такой текст программы на C# в случае нашего примера :

 

CrystalReports DataSet

 

Прим. Не забудьте в проект добавить ссылку на компоненты Crystal Reports :

 

 

Если  при компиляции проекта столкнулись с сообщением вроде такого - Не удалось загрузить отчет (исключение CrystalReportsException) ... :

 

 

... то в свойствах отчета нужно будет в пункте Копировать в выходной каталог указать Всегда копировать, или, что более оптимально Копировать если новее :

 

 

Еще одной вероятной ошибкой будет скорее всего следующая :

 

Не удалось загрузить файл или сборку <...> Crystal Reports for .NET <...> crdb_adoplus.dll

 

 

Лечиться такая проблемка добавление строчки  useLegacyV2RuntimeActivationPolicy="true"

 

в тэг <startup/> файла app.config :

 

 

 

Если на предыдущих этапах вы все сделали правильно и успешно устранили разобранные ошибки, то после клика на кнопку создания отчета должны увидеть приблизительно такую картинку :

 

 

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

Simashkov.2016

09.07.2016 г.

Назад