Опубликован: 05.08.2010 | Доступ: свободный | Студентов: 2009 / 47 | Оценка: 4.50 / 4.40 | Длительность: 60:26:00
Самостоятельная работа 7:

Создание отчетов Crystal Reports.NET в графическом режиме

Аннотация: Данная лабораторная работа полностью посвящена вопросам создания отчетов при помощи пакета Crystal Reports для Visual Studio .NET.

Введение

Все необходимые для выполнения данной работы программы можно найти в прилагаемом каталоге.

Генератор отчетов Crystal Reports был создан компанией Crystal Decisions в 1992 году и разрекламирован как "первый в мире генератор отчетов для Windows". С тех пор этот программный продукт интенсивно развивается и существует как самостоятельный пакет, так и в виде интегрированной в Visual Studio .NET библиотеки. В настоящее время этой работой занимается компания Business Objects (может переименовалась, а может другая, хотя вряд ли - миллионы продаж лицензий в год по всему миру, кто же бросит такой бизнес!). По соглашению с изготовителем компания Microsoft стандартизовала этот пакет в качестве машины формирования отчетов по технологии Crystal Reports .NET, которая включает в себя:

  1. Встроенный контструктор отчетов Report Designer, которым можно пользоваться при построении файлов отчетов ( .rpt ), а затем встраивать их в разрабатываемое приложение
  2. Модуль просмотра Windows Forms Viewer можно использовать для предварительного просмотра отчетов, встроенных в приложение, с гибким управлением представления содержимого отчета
  3. Модуль просмотра Web Forms Viewer той же функциональность, но применительно к Web-приложениям
  4. Машина формирования отчетов Report Engine (набор классов библиотек CrystalDecisions.CrystalReports.Engine.dll, CrystalDecisions.Shared.dll и др.) дает возможность программировать даже самые тонкие аспекты отчетов перед передачей их в модуль просмотра или печати
  5. Система планирования и распределения отчетов Crystal Enterprise обеспечивает возможность рассылки отчетов большому количеству пользователей

Пакет Crystal Reports для Visual Studio .NET является мощным дополнением к комплекту инструментальных средств самой среды разработки. При помощи конструктора отчетов Reports Designer можно создавать и модифицировать отчеты в графическом режиме самой Visual Studio .NET, а с помощью встроенных модулей легко интегрировать отчеты в проект и получать нужную функциональность Windows- или Web-приложения.

Технология Crystal Reports.NET гармонично связана с ADO.NET. При их совместной работе доступ к данным заметно упрощается. Вместо того, чтобы изобретать способы доступа к различным источникам данных, Crystal Reports .NET может просто обратиться к объекту DataSet (к типизированному или нетипизированному) из ADO.NET как к источнику для генерации любого заданного отчета.

Различают отчеты двух типов по способу выборки данных:

  1. Pull (выталкивание) - машина Crystal Reports сама связывается с БД и выталкивает из нее данные в отчет согласно своим настройкам по выборке данных
  2. Push (заталкивание) - с БД связывается ADO-приложение своими средствами доступа к данным, выбирает нужные данные по своим критериям, а машина Crystal Reports уже готовые данные заталкивает в отчет и обеспечивает только удобное представление данных и их печать

Вначале мы познакомимся с выборкой и представлением данных средствами Crystal Reports, т.е. будем использовать Pull -режим. В дальнейшем мы рассмотрим способы программирования отчетов на уровне кода C# в самом приложении, а машину Crystal Reports будем использовать для представления и печати уже готовых данных в Push -режиме.

Примеры приложений с Pull -отчетами можно найти в архиве, поставляемом вместе с Visual Studio .NET, который находится в каталоге C:\Program Files\Microsoft Visual Studio 9.0\Crystal Reports\Samples\En\Code

Здесь же содержится свободно распространяемый пакет самостоятельного продукта Crystal Reports, в котором можно готовить отчеты отдельно, а затем включать их в приложение, которое может и не использовать возможности ADO.NET. Во всех примерах используется БД xtreme.mdb (учебная БД компании по производству горных велосипедов) формата Access, которая содержит списки заказчиков, заказов, продукции, поставщиков и служащих. Эта база управляется средствами ADO.NET и Crystal Reports .NET и не требует установки системы Access. Схема БД xtreme.mdb приведена на рисунке

В данной лабораторной работе мы будем пользоваться прежней учебной базой Northwind.mdb и изредка новой учебной базой xtreme.mdb, применяемой в примерах Crystal Reports. БД xtreme.mdb должна быть уже зарегистрирована в операционной системе автоматически после установки Visual Studio 2008. Это можно легко проверить, выполнив команду Настройка/Панель управления/Администрирование/Источники данных (ODBC). Окно настроек System DSN (Data Source Name) должно содержать имя БД xtreme.mdb.


  • Если это не так, щелкните на кнопке Добавить, из списка выберите драйвер *.mdb после чего в следующем окне найдите БД xtreme.mdb (прилагается в каталоге Source ) и зарегистрируйте ее

Упражнение 1. Создание отчета Crystal Reports с помощью мастера Standard Report Creation Wizard

Мало кто, даже из опытных пользователей, создает приложение, в том числе и отчет, с нуля. Как правило, для этого в среде разработки предусмотрено множество мастеров, которые являются путеводителями в рамках всего процесса визуального проектирования. В данном упражнении мы познакомимся с мастером Standard Report Creation Wizard. Но в Crystal Reports есть много и вспомогательных инструметов, которые называются экспертами.

  • Создайте новый проект с именем WinReport1 в решении ADO по следующему шаблону

  • Задайте заголовок формы Упражнение 1
  • Командой Project/Add New Item добавьте к проекту новый отчет Crystal Report, настроив окно мастера следующим образом

Откроется новое окно галлереи отчетов Crystal Reports Gallery.


Здесь мы видим три переключателя, объединенные в группу Create a New Crystal Report Document, а под ней - список предлагаемых экспертов. Переключатели олицетворяют выбираемый метод проектирования отчета и обозначают следующее:

  • Using the Report Wizard - создание отчета с использованием мастера, подходит для большинства программистов. Далее отчет можно доработать с помощью конструктора (дизайнера) отчетов
  • As a Blank Report - создание отчета с нуля как пустого, продходит для опытных программистов (при выборе этого метода эксперты становятся недоступными). Отчет разрабатывается только средствами дизайнера отчетов
  • From an Existing Report - создается новый отчет на основе уже существующего отчета (эксперты недоступны) и может быть доработан с помощью дизайнера отчетов

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

  • Standard - эксперт стандартных отчетов, используется чаще других и является наиболее универсальным.
  • Cross-Tab - отчет с перекрестными ссылками
  • Mail Label - применяется для вывода почтовых этикеток

В данном упражнении мы будем использовать эксперт Standard.

  • Выберите метод Using the Report Wizard и эксперт Standard и щелкните на кнопке OK

Мастер проведет разработчика через несколько вкладок. На каждой вкладке кнопка Finish мастера создания отчетов всегда доступна и его работу на любой вкладке можно прервать. Но не будем торопиться ее нажимать, а пройдем все предлагаемые вкладки, иначе несделанную автоматизированную работу по настройке отчета придется потом доделывать вручную в графическом режиме дизайнера отчетов Report Designer.

Алексей Бабушкин
Алексей Бабушкин

При выполнении в лабораторной работе упражнения №1 , а именно при выполнении нижеследующего кода:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using Microsoft.Xna.Framework.Graphics;

   

namespace Application1

{

    public partial class MainForm : Form

    {

        // Объявим поле графического устройства для видимости в методах

        GraphicsDevice device;

   

        public MainForm()

        {

            InitializeComponent();

   

            // Подпишемся на событие Load формы

            this.Load += new EventHandler(MainForm_Load);

   

            // Попишемся на событие FormClosed формы

            this.FormClosed += new FormClosedEventHandler(MainForm_FormClosed);

        }

   

        void MainForm_FormClosed(object sender, FormClosedEventArgs e)

        {

            //  Удаляем (освобождаем) устройство

            device.Dispose();

            // На всякий случай присваиваем ссылке на устройство значение null

            device = null;       

        }

   

        void MainForm_Load(object sender, EventArgs e)

        {

            // Создаем объект представления для настройки графического устройства

            PresentationParameters presentParams = new PresentationParameters();

            // Настраиваем объект представления через его свойства

            presentParams.IsFullScreen = false; // Включаем оконный режим

            presentParams.BackBufferCount = 1;  // Включаем задний буфер

                                                // для двойной буферизации

            // Переключение переднего и заднего буферов

            // должно осуществляться с максимальной эффективностью

            presentParams.SwapEffect = SwapEffect.Discard;

            // Устанавливаем размеры заднего буфера по клиентской области окна формы

            presentParams.BackBufferWidth = this.ClientSize.Width;

            presentParams.BackBufferHeight = this.ClientSize.Height;

   

            // Создадим графическое устройство с заданными настройками

            device = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, DeviceType.Hardware,

                this.Handle, presentParams);

        }

   

        protected override void OnPaint(PaintEventArgs e)

        {

            device.Clear(Microsoft.Xna.Framework.Graphics.Color.CornflowerBlue);

   

            base.OnPaint(e);

        }

    }

}

Выбрасывается исключение:

Невозможно загрузить файл или сборку "Microsoft.Xna.Framework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d" или один из зависимых от них компонентов. Не удается найти указанный файл.

Делаю все пунктуально. В чем может быть проблема?