FastReport.NET2023报表数据源配置详解
目录
一、FastReport.NET简介
FastReport.Net是一款适用于Windows Forms, ASP.NET和MVC框架的功能齐全的报表分析解决方案。可用在Microsoft Visual Studio 2005到2019,支持.Net Framework 2.0到4.x,.NET Core。
使用FastReport.Net,您能创建独立于应用程序的报表。也就是说,FastReport.Net能作为一款独立的报表工具进行运用。
二、本文要点
FastReport.Net组件支持给前端实施工程师快速自定义报表,包括新增报表、修改报表格式等操作,而不需要编写任何代码。
三、配置报表数据源
Json数据源
逻辑:将List<T>实体对象转换为json文件,报表加载json文件作为数据源。
C# 全选
/// <summary>
/// Demo:本地文件json数据源
/// </summary>
private void JsonDemo()
{
//生成一个本地json文件
var json = Newtonsoft.Json.JsonConvert.SerializeObject(DemoData.demoDataItems);
var jsonFile = Path.Combine(Application.StartupPath, "demo.json");
File.WriteAllText(jsonFile, json, System.Text.Encoding.UTF8);
//加载报表模板文件
var reportFile = Path.Combine(Application.StartupPath, "demo-json.frx");
//生成报表数据源
RegisteredObjects.AddConnection(typeof(JsonDataConnection));
JsonDataConnection connection = new JsonDataConnection();
connection.ConnectionString = "Json=" + jsonFile;
connection.CreateAllTables();
Report report = new Report();
report.Dictionary.Connections.Add(connection);
//注册数据源
report.RegisterData(connection.DataSet);
report.Load(reportFile);
if (chkIsDesigner.Checked)
{
report.Design(true);//打开设计器
}
else
{
report.Show(true);//预览报表
}
}
Sql数据源,DataTable数据源
逻辑:注册DataSet/DataTable实体对象作为报表的数据源
C# 全选
/// <summary>
/// Demo:1、设置报表数据源连接,2、传入DataTable作为报表的数据源
/// </summary>
private void DataTableDemo(DataTable dtDemo)
{
var report = new Report();
var reportFile = Path.Combine(Application.StartupPath, "demo-datatable.frx");
//生成报表数据源
RegisteredObjects.AddConnection(typeof(MsSqlDataConnection));
MsSqlDataConnection connection = new MsSqlDataConnection();
connection.ConnectionString = DemoData.connectionString;
report.Dictionary.Connections.Add(connection);
//设置报表设计器的数据源
FastReport.EnvironmentSettings settings = new FastReport.EnvironmentSettings();
settings.DesignerSettings.ApplicationConnection = new System.Data.SqlClient.SqlConnection();
settings.DesignerSettings.ApplicationConnection.ConnectionString = DemoData.connectionString;
Config.DesignerSettings = settings.DesignerSettings;
report.Load(reportFile);
//注册数据源
report.RegisterData(dtDemo, "listSO");
var ds = report.GetDataSource("listSO");
(report.GetDataSource("listSO") as TableDataSource).Enabled = true; //重要
//给DataBand(主表数据)绑定数据源
DataBand masterBand = report.FindObject("Data1") as DataBand;
masterBand.DataSource = report.GetDataSource("listSO"); //主表
if (chkIsDesigner.Checked)
{
report.Design(true);//打开设计器
}
else
{
report.Show(true);//预览报表
}
}
List<T>实体对象数据源
C# 全选
/// <summary>
/// Demo:1、设置报表数据源连接,2、传入实体对象列表作为数据源
/// </summary>
/// <param name="listData"></param>
private void DataListDemo(List<tb_SO> listData)
{
var report = new Report();
var reportFile = Path.Combine(Application.StartupPath, "demo-list.frx");
//生成报表数据源
RegisteredObjects.AddConnection(typeof(MsSqlDataConnection));
MsSqlDataConnection connection = new MsSqlDataConnection();
connection.ConnectionString = DemoData.connectionString;
report.Dictionary.Connections.Add(connection);
//设置报表设计器的数据源
FastReport.EnvironmentSettings settings = new FastReport.EnvironmentSettings();
settings.DesignerSettings.ApplicationConnection = new System.Data.SqlClient.SqlConnection();
settings.DesignerSettings.ApplicationConnection.ConnectionString = DemoData.connectionString;
Config.DesignerSettings = settings.DesignerSettings;
report.Load(reportFile);
//注册数据源
report.RegisterData(listData, "listSO");
//var ds = report.GetDataSource("listSO");
//(report.GetDataSource("listSO") as BusinessObjectDataSource).Enabled = true; //重要
if (chkIsDesigner.Checked)
{
report.Design(true);//打开设计器
}
else
{
report.Show(true);//预览报表
}
}
四、设计器定制各种报表数据源
选择数据源
如果注册了数据库连接(如SqlConnection),可以选择整个数据库的表作为报表数据源:
Sql命令、存储过程自定义数据源
或:
设计新报表
预览报表
五、使用带参数的自定义查询Demo
必要条件:
1、给报表实例绑定Sql数据源。
2、给查询条件参数赋值。
优点:实施人员可设计自定义报表,不需要程序硬编码。
加载报表、设置报表连接、设置参数值
C# 全选
/// <summary>
/// Sql数据源报表,参数传值
/// </summary>
private void SqlDataSourceDemo()
{
var report = new Report();
var reportFile = Path.Combine(Application.StartupPath, "demo-销售订单-by参数.frx");
report.Load(reportFile);
report.SetParameterValue("CustomerCode", "DS01");//给参数赋值
//报表环境
FastReport.EnvironmentSettings settings = new FastReport.EnvironmentSettings();
settings.DesignerSettings.ApplicationConnection = new System.Data.SqlClient.SqlConnection();
settings.DesignerSettings.ApplicationConnection.ConnectionString = DemoData.connectionString;//连接字符串
Config.DesignerSettings = settings.DesignerSettings;
report.Design(true);
report.Show(true);
}
报表设计器,配置自定义查询名称
提示
如果输入SQL语句带有查询参数,如:SELECT * FROM tb_SO WHERE CustomerCode=@CustomerCode,会报错!!!
解决方案:
1、先删除查询参数,保留:SELECT * FROM tb_SO
2、点【下一个】,添加参数,如:
3、再点【上一个】回到上个界面,给SQL添加查询参数即可。
操作非常怪异,作者认为这是FastReport向导设计有问题,是个bug!
六、Demo程序
CSFramework产品用户请联系作者。
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网