当前位置: 首页 > news >正文

FastReport 指定sql 和修改 数据库连接地址的 工具类 :FastReportHelper

FastReport 指定sql 和修改 数据库连接地址的 工具类 :FastReportHelper

  • 介绍
      • 核心代码:
      • 完整代码:

介绍

FastReport中,经常会遇到需要给 sql 加条件的情况,或者给数据库地址做更换。

(废话不多说)直接上工具类源码。

核心代码:

public class FastReportHelper{/// <summary>/// 设置字典中Sql根据别名/// </summary>/// <param name="report">报表类</param>/// <param name="alias">别名</param>/// <param name="sql">Sql</param>public 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 name="report">报表类</param>/// <param name="name">名字</param>/// <param name="sqlconn">数据库连接地址</param>public 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=.;Database=codepl;User Id=sa;Password=123456;");// 设置报表中的数据源查询语句,这里的"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=.;Database=codepl;User Id=sa;Password=123456;");// 设置报表中的数据源查询语句,这里的"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。具体详细就以后再细细写文档了(大部分都有资料。可以去官网看看。)。

http://www.lryc.cn/news/396247.html

相关文章:

  • C++11中重要的新特性 Part one
  • VB 关键字
  • Linux——多线程(四)
  • InetAddress.getLocalHost().getHostAddress()阻塞导致整个微服务崩溃
  • 在 Qt6 中,QList 和 QVector 统一 成qlist了吗?
  • 第三期书生大模型实战营 第1关 Linux 基础知识
  • 架构设计(1)分布式架构
  • 机器学习笔记:初始化0的问题
  • JavaWeb—js(3)
  • PLSQL Day4
  • git合并报错:git -c core.quotepath=false -c log.showSignature=false merge r
  • 云原生存储:使用MinIO与Spring整合
  • 等保测评新趋势:应对数字化转型中的安全挑战
  • 使用esptool工具备份ESP32的固件(从芯片中备份下来固件)
  • JS进阶-解析赋值
  • Java虚拟机面试题汇总
  • C++休眠的方法
  • 选择排序(C语言版)
  • 基于CentOS Stream 9平台搭建FRP内网穿透
  • Redis管理禁用命令
  • RFID智能锁控系统在物流安全运输中的应用与效益分析
  • WPF设置全局样式
  • 【福利】代码公开!咸鱼之王自动答题脚本
  • ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建技术
  • 使用clion刷leetcode
  • 图解HTTP(5、与 HTTP 协作的 Web 服务器 6、HTTP 首部)
  • JS之防抖和节流
  • Open3D 点云PCA算法配准(粗配准)
  • Transformer中的编码器和解码器结构有什么不同?
  • 【深度学习】第5章——卷积神经网络(CNN)