番禺网站 建设信科网络,可以免费制作网页的网站,直播:广东防疫新闻发布会,义乌网站设计FastReport 指定sql 和修改 数据库连接地址的 工具类 #xff1a;FastReportHelper 介绍核心代码#xff1a;完整代码#xff1a; 介绍
在FastReport中#xff0c;经常会遇到需要给 sql 加条件的情况#xff0c;或者给数据库地址做更换。
#xff08;废话不多说#x… FastReport 指定sql 和修改 数据库连接地址的 工具类 FastReportHelper 介绍核心代码完整代码 介绍
在FastReport中经常会遇到需要给 sql 加条件的情况或者给数据库地址做更换。
废话不多说直接上工具类源码。
核心代码
public class FastReportHelper{/// summary/// 设置字典中Sql根据别名/// /summary/// param namereport报表类/param/// param namealias别名/param/// param namesqlSql/parampublic static void SetDictionaryByAlias(Report report, string alias, string sql){// 在报表的字典中查找指定别名的数据源var dataSource report.Dictionary.FindByAlias(alias);// 检查数据源是否是TableDataSource类型if (dataSource is TableDataSource tableDataSource){// 如果是TableDataSource类型则设置其SelectCommand属性为提供的SQL语句tableDataSource.SelectCommand sql;}}/// summary/// 设置字典中的数据源数据库连接/// /summary/// param namereport报表类/param/// param namename名字/param/// param namesqlconn数据库连接地址/parampublic static void SetDictionaryByName(Report report, string name, string sqlconn){// 在报表的字典中查找指定名字的数据源var dataSource report.Dictionary.FindByName(name);// 检查数据源是否是msSqlDataConnection类型if (dataSource is MsSqlDataConnection msSqlDataConnection){// 如果是msSqlDataConnection类型则设置其ConnectionString属性为提供的数据库连接地址msSqlDataConnection.ConnectionString sqlconn;}}}具体解决什么问题实现什么业务呢
参考下图 如下面两种场景来调用
如果直接运行的话就会查询出数据库中的全部而且数据源是之前报告文件中的数据源 做了更换之后就是变化成我们自己的数据源和新的查询语句。
如何调用参考下面代码
// 设置报表的数据连接这里的sqlconnection是报表中定义的数据连接别名// 参数是数据库连接字符串 FastReportHelper.SetDictionaryByName(report, sqlconnection, Server.;Databasecodepl;User Idsa;Password123456;);// 设置报表中的数据源查询语句这里的mb-qtable-alias是报表中定义的数据集别名// 参数是SQL查询语句从tmpsn表中选择id小于10的记录FastReportHelper.SetDictionaryByAlias(report, mb-qtable-alias, SELECT sn FROM tmpsn WHERE id 10);通过核心代码修改Sql和数据源之后就可以实现下图效果了。 完整代码
using FastReport;
using FastReport.Data;
using FastReport.Utils;
using System.Collections;
using System.Data;using System.Data.SqlClient;namespace fp_test
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){FastReport.Report report new FastReport.Report();// 加载 FastReport 的报表文件该文件包含了报表的布局和数据源配置report.Load(C:\Users\daoli\Desktop\fp-test\codetest.frx);// 设置报表的数据连接这里的sqlconnection是报表中定义的数据连接别名// 参数是数据库连接字符串 FastReportHelper.SetDictionaryByName(report, sqlconnection, Server.;Databasecodepl;User Idsa;Password123456;);// 设置报表中的数据源查询语句这里的mb-qtable-alias是报表中定义的数据集别名// 参数是SQL查询语句从tmpsn表中选择id小于10的记录FastReportHelper.SetDictionaryByAlias(report, mb-qtable-alias, SELECT sn FROM tmpsn WHERE id 10);// 准备报表这一步会执行数据源的查询准备显示报表report.Prepare();// 显示已经准备好但尚未打印的报表report.ShowPrepared();}}
} GetData(): 获取数据源中的数据。SetData(): 设置数据源中的数据。Refresh(): 刷新数据源重新从数据源获取数据。GetRow(): 获取数据源中的指定行。SetRow(): 设置数据源中的指定行的数据。AddRow(): 在数据源中添加新行。DeleteRow(): 删除数据源中的指定行。 主要是上图这几个 Find。具体详细就以后再细细写文档了大部分都有资料。可以去官网看看。。