logo
small logo
  • Продукты
  • Купить
  • Поддержка
  • Статьи
  • Забыли пароль?
    • en
    • ru
    • pt
    • es
    • JP
    • ZH
  • Главная
  • /
  • Статьи
  • /
  • Когда лучше использовать отчет из кода, а когда в формате frx
  • Кастомизация дизайнера отчетов

    31 мая 2020 г.

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

    Подробнее
  • Как объединить несколько отчетов в один

    13 июля 2020 г.

    У многих разработчиков отчетов бывали ситуации, когда в отчет нужно было добавить страницу, которая уже

    Подробнее
  • Как сделать простой Web-отчет FastReport.Net

    4 октября 2016 г.

    Сегодня Web-отчеты очень востребованы. Каждый день мы пользуемся интернетом и просматриваем десятки, а то и

    Подробнее
  • Как создать Master-Detail отчет из несвязанных таблиц

    27 марта 2017 г.

    Нередко появляется необходимость в создании отчета типа «Главный – Подчиненный» или «Master – Detail». Это

    Подробнее
  • Несколько отчетов в одном объекте WebReport - работа с закладками

    12 августа 2017 г.

    Популярное, сейчас, направление веб отчетов активно развивается в FastReport.Net. Новая функция – закладки, позволяет создавать

    Подробнее

Когда лучше использовать отчет из кода, а когда в формате frx

29 февраля 2020 г.

Как вы, наверное, знаете отчеты в FastReport.Net можно создавать не только в специальном дизайнере, но и программно, из кода пользовательского приложения. При этом, вместо привычного файла с расширением frx вы получите класс отчета. Его можно преобразовать в библиотеку и использовать в разных проектах. Что из себя представляет такой способ создания отчета?

Взгляните на этот код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 //Create instance of class Report
 Report report = new Report();
 
 //load data
 DataSet ds = new DataSet();
 ds.ReadXml(AppFolder + "\\nwind.xml");
 
 //Register data source
 report.RegisterData(ds);
 
 //Enable data table
 report.GetDataSource("Products").Enabled = true;
 
 //Add report page
 ReportPage page = new ReportPage();
 report.Pages.Add(page);
 page.CreateUniqueName();
 
 //Create GroupHeader band
 GroupHeaderBand group = new GroupHeaderBand();
 page.Bands.Add(group);
 group.CreateUniqueName();
 group.Height = Units.Centimeters * 1;
 group.Condition = "[Products.ProductName].Substring(0,1)";
 group.SortOrder = FastReport.SortOrder.Ascending;
 
 // create group text
 TextObject groupTxt = new TextObject();
 groupTxt.Parent = group;
 groupTxt.CreateUniqueName();
 groupTxt.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1);
 groupTxt.Text = "[[Products.ProductName].Substring(0,1)]";
 groupTxt.Font = new Font("Arial", 14, FontStyle.Bold); 
 groupTxt.VertAlign = VertAlign.Center;
 groupTxt.Fill = new LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5f, 1);
 
 // create data band
 DataBand data = new DataBand();
 group.Data = data;
 data.CreateUniqueName();
 data.DataSource = report.GetDataSource("Products");
 data.Height = Units.Centimeters * 0.5f;
 
 // create product name text
 TextObject productText = new TextObject();
 productText.Parent = data;
 productText.CreateUniqueName();
 productText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 productText.Text = "[Products.ProductName]";
 
 // create group footer
 group.GroupFooter = new GroupFooterBand();
 group.GroupFooter.CreateUniqueName();
 group.GroupFooter.Height = Units.Centimeters * 1;
 
 if (PDFCheckBox.Checked)
 {
 report.Prepare();
 FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport();
 export.Export(report);
 }
 else
 report.Show();

Это пример создания шаблона отчета с группами. Как видите, мы последовательно создаем объекты отчета, начиная с самого отчета и страницы и заканчивая текстовыми объектами. Мы помещаем созданные объекты внутрь других и настраиваем свойства их отображения. Это требует хорошего представления структуры шаблона отчета FastReport.Net. Кроме того, чтобы добиться нужного расположения элементов, вам придется много раз запускать отчет для визуальной оценки и исправлять свойства объектов, выставляя нужную ширину или координаты. Поэтому использовать этот подход следует для отчетов со списками, матрицами, таблицами – там, где не требуется выверять расположение элементов относительно друг друга.

Главное преимущество отчета, создаваемого в коде -  возможность редактировать отчеты во время выполнения, добавляя код в зависимости от условий или событий. Это позволяет создавать отчеты со сложной логикой, напрямую зависящей от самого клиентского приложения.

Не секрет, что шаблоны отчетов FastReport.Net имеют xml-подобный формат, несмотря на расширение frx. Такие шаблоны легко передавать и просматривать на других компьютерах с помощью программы-просмотрщика. Мобильность и независимость от клиентских приложений - это неоспоримые преимущества традиционного шаблона отчета в формате frx, или его версии с заполненными данными в формате fpx. Поэтому, имея в своем приложении отчеты, созданные из кода, многие хотели бы иметь возможность преобразовать их в обычный xml-подобный формат frx. Сделать это невероятно просто:

1
2
Report report = new Report();
report.Save("C:\\report.frx");

То есть нужно просто использовать функцию Save у объекта report. В качестве параметра передаем путь с именем файла, в который будет сохранен отчет. Таким образом мы можем использовать один отчет, создаваемый из кода, а, при необходимости, преобразовывать его в традиционный формат frx. Полученный файл можно передавать другим разработчикам, или пользователям.

Как на отчеты основе кода, так и на отчеты в формате frx имеют свои преимущества. Первый – выигрывает, когда отчет нужно изменять прямо «на ходу», второй – когда требуется мобильный отчет, или шаблон имеет много элементов с четко определённым их расположением друг относительно друга.  Нужно выбирать способ создания отчета на основе этих преимуществ.

О продукте Скачать Купить
avatar
Dmitriy Fedyashov
Руководитель отдела обеспечения качества
.NET FastReport Report

Добавить комментарий
logo
  • +7(800)551-75-80
  • info@fastreport.ru
  • Ростов-на-Дону, Россия, 344082, ул.Обороны 24, офис 311
  • Купить
  • Загрузить
  • Документация
  • Отзывы
  • Как деинсталировать
  • Онлайн поддержка
  • FAQ
  • Видео уроки
  • Форум
  • Статьи
  • Наши Новости
  • Пресса о нас
  • Реселлеры
  • ВУЗам
  • Наша команда
  • Карьера
  • Контакты

© 1998-2021 ООО «Фаст Репортс»

  • Согласие с обработкой персональных данных
  • Не является публичной офертой