Вы можете добавить дизайнер FastReport.NET для конечных пользователей без дополнительного лицензирования. Это означает, что вы можете добавить генератор отчетов к продукту только без исходного кода и вне среды разработки.
Смотрите о компонентах Enterprise версии здесь.
В основном наши продукты имеют три типа лицензирования: Single License – лицензия на одно рабочее место. На одного разработчика. Team License – 4 рабочих места. Дополнительно включает лицензию для Build сервера. Site License – неограниченное количество рабочих мест, зарегистрированных по одному географическому адресу. Дополнительно включает лицензию для Build сервера.
Вы можете продлить лицензирование в вашей контрольной панели. Продление включает в себя техническую поддержку и обновления продуктов. Она доступна по 1/3 от полной стоимости в год. Когда ваша лицензия истекла, у Вас есть два варианта: - Продлить лицензию. Это позволит Вам получать техническую поддержку и обновления продуктов. - Продолжать использовать FastReport.Net. В этом случае, у Вас не будет возможности использовать последние обновления продукта и получать техническую поддержку. Цены: FastReport.Net Basic Edition лицензия на 1 год - single-$30, team-$90 site-$449 FastReport.Net Win forms лицензия на 1 год - single-$90, team-$300 site-$899 FastReport.Net Win forms + Web forms лицензия на 1 год - single-$109, team-$360 site-$1049 FastReport.Net Professional Edition лицензия на 1 год - single-$150, team-$480 site-$1799
Убедитесь, что 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 2.0\FastReport.dll"). Подробнее о регистрации в GAC -
https://msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
После этого добавьте элементы управления FR в 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 или более раннюю.