C#中把FastReport.Net报表控件的数据保存到数据库的完整攻略如下:
1.准备工作
在开始保存FastReport报表控件的数据之前,需要先做一些准备工作,包括:
- 安装FastReport.Net报表控件;
- 在你的项目中引用FastReport.Net的dll文件;
- 在你的项目中引用数据库连接的相关dll文件;
- 创建一个数据库表,用来存储报表数据;
可以使用以下代码示例,向数据库中创建一个数据库表,用于存储报表数据:
CREATE TABLE ReportData
(
ReportID INT NOT NULL,
ReportData VARBINARY(MAX) NOT NULL
)
其中,ReportID用于指定报表的唯一标识,ReportData用于存储报表的数据。
2.获取报表数据
在生成FastReport报表控件之前,需要先获取报表的数据。可以使用以下代码,在你的项目中获取数据:
DataSet dataSet = new DataSet();
SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM ReportData", yourConnectionString);
dataAdapter.Fill(dataSet);
其中,yourConnectionString表示你的数据库连接字符串。通过SqlDataAdapter类,可以获取数据库中的数据。
3.生成FastReport报表控件
在获取报表数据之后,可以使用以下代码生成FastReport报表控件:
FastReport.Report report = new FastReport.Report();
report.Load(yourReportFileName);
report.RegisterData(dataSet);
report.Prepare();
其中,yourReportFileName表示你的报表模板文件名。通过Load方法,可以加载报表模板;通过RegisterData方法,可以向报表控件中注册数据。
4.保存报表数据到数据库
生成FastReport报表控件之后,即可将报表数据保存到数据库中。可以使用以下代码将报表数据插入到数据库表中:
using (MemoryStream ms = new MemoryStream())
{
report.SavePrepared(ms);
byte[] reportData = ms.GetBuffer();
using (SqlConnection connection = new SqlConnection(yourConnectionString))
{
connection.Open();
SqlCommand command = new SqlCommand("INSERT INTO ReportData(ReportID, ReportData) VALUES(@ReportID, @ReportData)", connection);
command.Parameters.AddWithValue("@ReportID", yourReportID);
command.Parameters.AddWithValue("@ReportData", reportData);
command.ExecuteNonQuery();
}
}
其中,yourReportID表示你指定的报表唯一标识。用于将生成的报表数据插入到数据库表中。
示例说明
以下是两个示例,分别演示了如何保存FastReport报表控件的数据到SQL Server和Oracle数据库:
示例1.保存报表数据到SQL Server
以下代码演示了如何将FastReport报表控件的数据保存到SQL Server数据库中:
// 准备工作
string yourConnectionString = "Data Source=yourSqlServer;Initial Catalog=yourDatabase;Integrated Security=True;";
string yourReportFileName = @"C:\YourReport.frx";
int yourReportID = 1;
// 获取报表数据
DataSet dataSet = new DataSet();
SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM ReportData", yourConnectionString);
dataAdapter.Fill(dataSet);
// 生成FastReport报表控件
FastReport.Report report = new FastReport.Report();
report.Load(yourReportFileName);
report.RegisterData(dataSet);
report.Prepare();
// 保存报表数据到数据库
using (MemoryStream ms = new MemoryStream())
{
report.SavePrepared(ms);
byte[] reportData = ms.GetBuffer();
using (SqlConnection connection = new SqlConnection(yourConnectionString))
{
connection.Open();
SqlCommand command = new SqlCommand("INSERT INTO ReportData(ReportID, ReportData) VALUES(@ReportID, @ReportData)", connection);
command.Parameters.AddWithValue("@ReportID", yourReportID);
command.Parameters.AddWithValue("@ReportData", reportData);
command.ExecuteNonQuery();
}
}
示例2.保存报表数据到Oracle
以下代码演示了如何将FastReport报表控件的数据保存到Oracle数据库中:
// 准备工作
string yourConnectionString = "User Id=yourUserName;Password=yourPassword;Data Source=yourOracleServer:yourPort/yourServiceName;";
string yourReportFileName = @"C:\YourReport.frx";
int yourReportID = 1;
// 获取报表数据
DataSet dataSet = new DataSet();
OracleDataAdapter dataAdapter = new OracleDataAdapter("SELECT * FROM ReportData", yourConnectionString);
dataAdapter.Fill(dataSet);
// 生成FastReport报表控件
FastReport.Report report = new FastReport.Report();
report.Load(yourReportFileName);
report.RegisterData(dataSet);
report.Prepare();
// 保存报表数据到数据库
using (MemoryStream ms = new MemoryStream())
{
report.SavePrepared(ms);
byte[] reportData = ms.GetBuffer();
using (OracleConnection connection = new OracleConnection(yourConnectionString))
{
connection.Open();
OracleCommand command = new OracleCommand("INSERT INTO ReportData(ReportID, ReportData) VALUES(:ReportID, :ReportData)", connection);
command.Parameters.AddWithValue(":ReportID", yourReportID);
command.Parameters.AddWithValue(":ReportData", reportData);
command.ExecuteNonQuery();
}
}
这两个示例演示了如何将FastReport报表控件的数据保存到SQL Server和Oracle数据库中。其中,需要根据不同的数据库类型,使用不同的数据访问类。但整个保存报表数据的过程基本上是相同的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中把FastReport.Net报表控件的数据保存到数据库 - Python技术站