c# 使用fastreport,不用在frx模板中通过链接数据库设置数据源,在程序中直接给模板.frx文件注册数据源的方法

针对.net的winform中集成 FastReport,网上大部分说法都是在制作的模板.frx文件中设置数据源,这样看起来简单高效,但是有一个很大的弊端,例如在A地设置好的模板,然后去B地上项目的时候,模板无法通用 ,需要二次重新制作,尤其大量统计类 报表很麻烦,所以鉴于这个缺点建议使用以下方法:

在程序中直接给模板.frx文件注册数据源的方法

using FastReport;
using FastReport.Data;
using FastReport.Table;

……通过button1的事件触发调用程序bin\Debug\目录下的ft.frx去实现打印、预览

private void button1_Click(object sender, EventArgs e)
{
string strSql = "SELECT jobid ,name ,card,sex ,birthday,hometown,mailbox FROM ex_userinfo ORDER BY jobid";
SqlDataAdapter sda = new SqlDataAdapter(strSql, connectionString);
DataSet ds = new DataSet();
sda.Fill(ds, "RoomInfo");  //作用:把查询到的数据表,放进 DataSet(ds) 里,并且给这个表起一个名字 → 就是 "RoomInfo",可以随便自定义的


//加载报表
Report report = new Report();
report.Load(Application.StartupPath + "\\ft.frx");

//给报表注册数据
report.RegisterData(ds.Tables["RoomInfo"], "RoomInfo"); //report.RegisterData(【内存里的表名】,【报表里的数据源名】);      

这两个参数的真实作用(核心!)
第一个参数:ds.Tables["RoomInfo"]
必须和你 Fill 时的名字一模一样
作用:告诉程序:我要把内存里哪张表传给报表
错了 → 程序直接报错:找不到表
第二个参数:"Rptdate"--------------告诉报表:这个数据源叫什么名字👉 是报表设计器里绑定的数据源名称👉 必须和你在报表里拖字段时用的名字一致

可以随便改,和前面无关
作用:给报表用的别名
要求:必须和你报表设计器里绑定的数据源名称一致
错了 → 报表不报错,但显示空白、没有数据

 

 

//绑定数据到数据区域
DataBand band = report.FindObject("Data1") as DataBand;
band.DataSource = report.GetDataSource("RoomInfo");

//预览打印
report.Show ();

}

2、制作模板.frx文件的时候在插入文本输入例子[RoomInfo.cscore],其中RoomInfo是程序注册的数据源,cscore是需要显示的字段
3、二维码选择QR Code类型后,数据-Expression双击输入需要展示的字段例如[RoomInfo.card],提示数字部分可以使用 showText=False来隐藏;二维码大小默认固定的,设置随意修改使用AutoSize=False来实现

 

image

 

posted @ 2026-06-03 11:52  Mosity  阅读(67)  评论(0)    收藏  举报