Вы можете добавить дизайнер FastReport.NET для конечных пользователей без дополнительного лицензирования. Это означает, что вы можете добавить генератор отчетов к продукту только без исходного кода и вне среды разработки.
Смотрите о компонентах Enterprise версии здесь.
В основном наши продукты имеют три типа лицензирования: Single License – лицензия на одно рабочее место. На одного разработчика. Team License – 4 рабочих места. Дополнительно включает лицензию для Build сервера. Site License – неограниченное количество рабочих мест, зарегистрированных по одному географическому адресу. Дополнительно включает лицензию для Build сервера.
Вы можете продлить лицензирование в вашей контрольной панели. Продление включает в себя техническую поддержку и обновления продуктов. Она доступна по 1/3 от полной стоимости в год. Когда ваша лицензия истекла, у Вас есть два варианта: - Продлить лицензию. Это позволит Вам получать техническую поддержку и обновления продуктов. - Продолжать использовать FastReport .NET. В этом случае, у Вас не будет возможности использовать последние обновления продукта и получать техническую поддержку.
Убедитесь, что FastReport.Editor.dll, FastReport.VSDesign.dll, FastReport.Web и FastReport.dll зарегистрированы в GAC (см. директории из п.3). В противном случае зарегистрируйте их.
Для этого откройте Visual studio tools folder(C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts), откройте Developer Command Prompt for..., и напишите в командной строке gacutil -i "reference path+ name.dll"(gacutil -i "Program Files\FastReports\FastReport.Net\Framework 4.0\FastReport.dll"). Подробнее о регистрации в GAC -
https://msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
После этого добавьте элементы управления FastReport в Visual Studio Toolbox: щелкните правой кнопкой мыши на панели инструментов -> Выбрать элементы -> Выберите FastReport.dll из GAC и нажмите ОК.
Если вызвать свойство объекта .Height(Text1.Height), то результатом будет являться высота объекта в шаблоне отчёта. При построении отчёта высота изменяется и чтобы определить высоту объекта в подготовленном отчёте следует использовать метод CalcHeight(Text1.CalcHeight()). Для вычисления длины также используется метод CalcWidth.
Убедитесь, что в проекте установлены ссылки на требуемые библиотеки(FastReport.dll, FastReport.Web.dll). Проверьте версию .NET Framework, используемую вашим проектом и подключённой библиотекой.
Удалите пробную версию FastReport.NET Trial. Убедитесь, что в директориях C:\Windows\assembly и C:\Windows\Microsoft.NET\assembly\GAC_MSIL отсутствуют библиотеки FastReport .NET. Если были найдены библиотеки - удалите их. Установите полную версию программы.
Используйте этот фрагмент кода:
Report report = new Report();
report.Load(...);
report.RegisterData(...);
report.Prepare();
PDFExport pdfExport = new PDFExport();
EmailExport export = new EmailExport();
// set up Account properties...
export.Account.Host = "...";
export.Account.Address = "...";
// set up email properties...
export.Address = "...";
export.Subject = "...";
export.MessageBody = "...";
// send email
export.Export = pdfExport;
export.SendEmail(report);
Добавьте элемент управления "EnvironmentSettings" на вашу форму(Form).
Перед вызовом report.Design() добавьте следующие строки:
1 2 |
EnvironmentSettings1.DesignerSettings.Restrictions.DontCreateData = True; EnvironmentSettings1.DesignerSettings.Restrictions.DontEditData = True; |
Если вы используете DesignerControl, то эти строки:
1 2 |
designerControl1.Restrictions.DontCreateData = true; designerControl1.Restrictions.DontEditData = true; |
1. Создайте новый отчёт:
Report report = new Report();
2. Добавьте событие CustomLoadEventHandler для загрузки базового отчёта:
report.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport);
3.Загрузите наследуемый отчёт:
report.Load("InheritReport.frx");
4. Удалите CustomLoadEventHandler:
report.LoadBaseReport -= new CustomLoadEventHandler(FReport_LoadBaseReport);
5. Теперь Вы можете показать отчёт или открыть его в дизайнере. Он будет содержать как тот, что наследуется, так и тот, который наследует базовый отчёт:
report.Show();
Также нужно создать событие для загрузки базового отчёта:
1 2 3 4 5 6 |
private void FReport_LoadBaseReport(object sender, CustomLoadEventArgs e) { // e.FileName contains the name of base report. It may be the file name, or an ID in the database, // it depends on how you load the main report e.Report.Load("C:\\Users\\InheritReport\\bin\\Debug\\Title2.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 |
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Report report = new Report(); report.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport); report.Load("InheritReport.frx"); report.LoadBaseReport -= new CustomLoadEventHandler(FReport_LoadBaseReport); report.Show(); } private void FReport_LoadBaseReport(object sender, CustomLoadEventArgs e) { // e.FileName contains the name of base report. It may be the file name, or an ID in the database, // it depends on how you load the main report e.Report.Load("C:\\Users\\InheritReport\\bin\\Debug\\Title2.frx"); } } |
Если Вы хотите загрузить отчёт из базы данных, замените метод Load() на LoadFromString().
1. Можно написать js код в объекте TextObject.Huperlink(javascript:alert('Вы нажали!')).
2. Или написать функцию в *.aspx(*.cshtml) файле:
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 |
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestInheritReports._Default" %> <%@ Register assembly="FastReport.Web" namespace="FastReport.Web" tagprefix="cc2" %> <script type="text/javascript"> function count_rabbits() { for(var i=1; i<=3; i++) { alert("Из шляпы достали "+i+" кролика!") } } </script> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">; <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> </div> <cc2:WebReport ID="WebReport1" runat="server" /> </form> </body> </html> |
и вызвать функцию:
TextObject1.Hyperlink = "javascript:count_rabbits()";
Добавьте элемент управления "EnvironmentSettings" на вашу форму(Form).
Перед вызовом report.Design() добавьте следующую строку:
environmentSettings1.DesignerSettings.Restrictions.DontEditCode = true;
Для этого следует использовать WindowsFormsHost :
0) Добавьте ссылку на FastReport.dll;
1) Добавьте аттрибут в тэг Window(Page): xmlns:fr="clr-namespace:FastReport.Preview;assembly=FastReport" если вы хотите использовать PreviewControl, xmlns:fr1="clr-namespace:FastReport.Design;assembly=FastReport" - если DesignerControl;
2) Добавьте тэг WindowsFormsHost в вашу XAML-разметку:
1 2 3 |
<WindowsFormsHost HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="0" Grid.ColumnSpan="3"> </WindowsFormsHost> |
3) Добавьте дочерний тэг в WindowsFormsHost: <fr:PreviewControl></fr:PreviewControl> или <fr1:Designer></fr1:Designer>.
Полная разметка должна выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" x:Class="WpfApplication1.MainWindow" Title="MainWindow" Height="375.977" Width="939.258" xmlns:fr="clr-namespace:FastReport.Preview;assembly=FastReport"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <WindowsFormsHost HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="0" Grid.ColumnSpan="3"> <fr:PreviewControl></fr:PreviewControl> </WindowsFormsHost> </Grid> </Window> |
Вы можете сделать это в скрипте отчёта или в коде вашего проекта используя следующие строки:
1 2 3 4 5 |
FastReport.Format.NumberFormat format = new FastReport.Format.NumberFormat(); format.UseLocale = false; format.DecimalDigits = 2; format.DecimalSeparator = "."; format.GroupSeparator = ","; |
И установить созданное форматирование для текстового объекта (TextObject):
1 2 |
textObject.Formats.Clear(); textObject.Formats.Add(format); |
Для начала нужно создать объект System.Windows.Forms.DataVisualization.Charting.Series, являющийся базовым для Series в MSChartObject и построить линию в нем. Затем нужно назначить созданную серию объекту, базовуму для MSChartObject (MSChart1.Chart.Series.Add(series);) Не забудте подключить библиотеку System.Windows.Forms.DataVisualization.dll (в меню Отчёт -> Скрипт) и пространство имён System.Windows.Forms.DataVisualization.Charting.
Пример линии с разрывами:
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 |
. . using System.Windows.Forms.DataVisualization.Charting; namespace FastReport { public class ReportScript { private void MSChart1_BeforePrint(object sender, EventArgs e) { Series series = new Series("sample"); series.ChartType = SeriesChartType.Line; series.BorderWidth = 2; series.MarkerSize = 5; series.Points.Add(new DataPoint(0, 1)); series.Points.Add(new DataPoint(1, 2)); DataPoint dp = new DataPoint(2, double.NaN); dp.IsEmpty = true; series.Points.Add(dp); series.Points.Add(new DataPoint(3, 5)); series.Points.Add(new DataPoint(4, 8)); MSChart1.Chart.Series.Add(series); } } } |
В результате получим представленный ниже график:
1. Создайте новый объект MSChart, установите высоту, ширину,и легенду:
2. Создайте объект ChartArea, установите имя, названия осей и назначьте созданный объект MSChart:
1 2 3 4 5 |
ChartArea chartArea1 = new ChartArea(); chartArea1.Name = "ChartArea1"; chartArea1.Axes[0].Title = "X name"; chartArea1.Axes[1].Title = "Y name"; MSChart1.Chart.ChartAreas.Add(chartArea1); |
3. Создайте объект Series, установите тип диаграммы, толщину границы, добавьте точки и назначьте серии диаграмме:
1 2 3 4 5 6 7 8 9 |
Series series = new Series("sample"); series.ChartType = SeriesChartType.Line; series.BorderWidth = 2; series.Points.Add(new DataPoint(0, 1)); series.Points.Add(new DataPoint(1, 2)); series.Points.Add(new DataPoint(3, 5)); series.Points.Add(new DataPoint(4, 8)); MSChart1.Chart.Series.Add(series); |
4. Присвойте созданный MSChart объекту отчёта DataBand:
1 2 3 4 5 |
Report report = new Report(); report.Load("ok.frx"); DataBand db = report.FindObject("Data1") as DataBand; MSChart1.Parent = db; |
И полный фрагмент кода:
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 |
MSChartObject MSChart1 = new MSChartObject(); MSChart1.Width = 300; MSChart1.Height = 300; MSChart1.Chart.Legends.Add(new Legend() { Name = "Legend1", Title="Legend title"}); ChartArea chartArea1 = new ChartArea(); chartArea1.Name = "ChartArea1"; chartArea1.Axes[0].Title = "X name"; chartArea1.Axes[1].Title = "Y name"; MSChart1.Chart.ChartAreas.Add(chartArea1); Series series = new Series("sample"); series.ChartType = SeriesChartType.Line; series.BorderWidth = 2; series.Points.Add(new DataPoint(0, 1)); series.Points.Add(new DataPoint(1, 2)); series.Points.Add(new DataPoint(3, 5)); series.Points.Add(new DataPoint(4, 8)); MSChart1.Chart.Series.Add(series); Report report = new Report(); report.Load("ok.frx"); DataBand db = report.FindObject("Data1") as DataBand; MSChart1.Parent = db; |
Результат:
Сообщите нам об этом на support.fast-report.com и мы вышлем ближающую к доступной вам версию.
Вы можете отключить показ окна в EnvironmentSettings:
Report report = new Report();
report.LoadPrepared("1.fpx");
EnvironmentSettings s = new EnvironmentSettings();
s.ReportSettings.ShowProgress = false;
report.Show();
Удалите файл FastReport.config из папки C:\Users\"Your user's name"\AppData\Local\FastReport.
Файлы локализации располагаются в папке FastReports\FastReport.Net\Localization. Вы можете изменять перевод на требуемый. Если в нужной локализации отсутвтвует перевод некоторых полей, вы можете запросить на support.fast-report.com английскую локализацию и дополнить перевод в соответствии с ней. Передайте нам файл с улучшенным переводом и получите вознаграждение!
Сообщите об этом на tz@fast-report.com или support.fast-report.com и мы вышлем необходимый файл английской локализации для создания требуемой вам локализации. После создания локализационного файла пришлите его нам. Мы добавим его в новую сборку, а вы получите награду!
Используйте для этого следующий код:
Report.Dictionary.Connections[0].Tables[0].Parameters[0].Value.ToString();
Используйте этот фрагмент кода:
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 |
Report report = new Report(); report.LoadPrepared("preparedreport.fpx"); HTMLExport htmlExport = new HTMLExport() { SubFolder = false, Navigator = false, Pictures = true, EmbedPictures = true, SinglePage = true, Layers = true, HasMultipleFiles = false }; EmailExport email = new EmailExport(); //email mailer settings email.Account.Address = "Email@gmail.com"; email.Account.Name = "Usename"; email.Account.Host = "smtp.yandex.ru"; email.Account.Port = 25; email.Account.UserName = "Email"; email.Account.Password = "password"; email.Account.MessageTemplate = "Test"; email.Account.EnableSSL = true; //email addressee settings email.Address = "Destinationaddress@gmail.com"; email.Subject = "Embedding of html"; email.Export = htmlExport; //Set export type email.SendEmail(report); //Send email |
Если не запускаются демо из папки Demos\C#\Web, то чтобы это исправить, нужно:
1. Восстановить пакеты NuGet;
2. Добавить ссылки на все необходимые библиотеки из "packages";
3. Изменить версии сборок на текущие в файлах Web.Config из корневой директории и из Views.
Используйте для этого код, представленный ниже.
Для настольной версии:
1 2 3 4 5 6 7 8 |
Report report = new Report(); report.Load(Path.GetFullPath(@"..\..\Report1.frx")); report.Prepare(true); report.Load(Path.GetFullPath(@"..\..\Report2.frx")); report.Prepare(true); report.Load(Path.GetFullPath(@"..\..\Report3.frx")); report.Prepare(true); report.ShowPrepared(); |
Для веб версии:
1 2 3 4 5 6 7 8 |
webReport.Report.Load(Path.GetFullPath(@"..\..\Report1.frx")); webReport.Report.Prepare(true); webReport.Report.Load(Path.GetFullPath(@"..\..\Report2.frx")); webReport.Report.Prepare(true); webReport.Report.Load(Path.GetFullPath(@"..\..\Report3.frx")); webReport.Report.Prepare(true); webReport.ShowRefreshButton = false; webReport.ReportDone = true; |
Установка отчёта в ресурсы:
1) Переходим в Visual Studio во вкладку ресурсы (Проект -> Свойства -> Ресурсы);
2) Задаём имя (report) и устанавливаем содержимое ресурса(содержимое файла myreport.frx);
Вызов отчёта из ресурсов:
1 2 3 |
Report report = new Report(); report.ReportResourceString = Resources.report; report.Show(); |
Используйте данный фрагмент кода:
1 2 3 |
Report report = new Report;
List<string> assmbly = new List<string>(report.ReferencedAssemblies); assmbly.Add("Newtonsoft.Json.dll"); //replace to your dll's name report.ReferencedAssemblies = assmbly.ToArray(); |
Убедитесь, что добавленная dll находится в одной папке с FastReport.dll.
Теперь вы можете использовать методы из подключённой dll. Например, вы можете добавить следующее выражение в TextObject - [Newtonsoft.Json.ConstructorHandling.Default.ToString()].
Используйте данный фрагмент кода для того, чтобы сделать доступными в отчёте все таблицы из вашего источника данных (DataSet):
1 2 3 4 |
foreach (FastReport.Data.DataSourceBase tbl in report.Dictionary.DataSources) { tbl.Enabled = true; } |
Затем добавьте все связи из DataSet:
1 2 3 4 |
for (int i = 0; i < ds.Relations.Count; i++) { report.RegisterData(ds.Relations[i], "relation" + i); } |
И включите все связи:
1 2 3 4 |
foreach (FastReport.Data.Relation rl in report.Dictionary.Relations) { rl.Enabled = true; } |
Полный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Report report = new Report(); DataSet ds = new DataSet(); ds.ReadXml("EstimateFile.xml"); report.RegisterData(ds, "ds"); foreach (FastReport.Data.DataSourceBase tbl in report.Dictionary.DataSources) { tbl.Enabled = true; } for (int i = 0; i < ds.Relations.Count; i++) { report.RegisterData(ds.Relations[i], "relation" + i); }
foreach (FastReport.Data.Relation rl in report.Dictionary.Relations) { rl.Enabled = true; } |
Поставляемый продукт FastReport.NET Enterprise является пакетом в который входят:
FastReport.NET Professional и продукт FastReport Online Designer.
Добавьте компоненты в панель элементов вручную:
Нажмите "Выбрать элементы" в меню правой кнопки мыши, наведённой на панель элементов Visual Studio и выберите FastReport.dll из папки GAC (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\FastReport).
Мы решили прекратить поддерживать старый фреймворк и Visual Studio 2005. У нас есть некоторые трудности с поддержкой различных фрагментов кода для устаревших фреймворков. Если вы продолжаете использовать .NET Framework 2.0 в своих приложениях, напишите нам или используйте версию FastReport .NET 2020.2 или более раннюю.
Как нам установить ваши лицензионные пакеты в наш продукт, используя Linux, MacOS либо Windows. При этом нам бы не приходилось устанавливать последнюю версию продуктов FastReport вручную с помощью инсталлера, скачанного на сайте, который работает только на Windows?
На этот вопрос мы подготовили универсальное решение в виде нашего приватного NuGet-сервера Fast Reports. Подробнее о нём читайте в следующей статье.
В случае окончания действия подписки вы можете продолжать пользоваться источником пакетов Fast Reports, однако доступа к последним версиям пакетов не будет. Следовательно, последняя доступная версия пакета будет определяться по условию:
Дата выхода выбранной версии < Дата истечения подходящей подписки
Важно! При попытке загрузки пакета с датой выхода позже, чем дата окончания подходящей подписки, Fast Reports NuGet сервер отдаст самую последнюю доступную версию пакета согласно вашей подписке. Но мы не рекомендуем ссылку на недоступную версию пакета, т.к. это приводит к Warning при восстановлении проекта и к задержке загрузки пакета.