当前位置: 首页 > 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。具体详细就以后再细细写文档了(大部分都有资料。可以去官网看看。)。

相关文章:

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

FastReport 指定sql 和修改 数据库连接地址的 工具类 &#xff1a;FastReportHelper 介绍核心代码&#xff1a;完整代码&#xff1a; 介绍 在FastReport中&#xff0c;经常会遇到需要给 sql 加条件的情况&#xff0c;或者给数据库地址做更换。 &#xff08;废话不多说&#x…...

C++11中重要的新特性 Part one

序言 C11 是 C 编程语言的一个重要版本&#xff0c;于 2011 年由国际标准化组织 (ISO) 和国际电工委员会 (IEC) 旗下的 C 标准委员会 (ISO/IEC JTC1/SC22/WG21) 正式公布&#xff0c;并于同年 9 月出版。其正式名称为 ISO/IEC 14882:2011 - Information technology – Programm…...

VB 关键字

VB 关键字 Visual Basic(VB)是一种由微软开发的高级编程语言,广泛用于开发Windows桌面应用程序。在VB编程中,关键字是语言预定义的单词,具有特定的含义和用途。这些关键字不能被用作变量名或函数名,因为它们已经被编程语言赋予了特定的功能。 本文将详细介绍VB中的关键…...

Linux——多线程(四)

前言 这是之前基于阻塞队列的生产消费模型中Enqueue的代码 void Enqueue(const T &in) // 生产者用的接口{pthread_mutex_lock(&_mutex);while(IsFull())//判断队列是否已经满了{pthread_cond_wait(&_product_cond, &_mutex); //满的时候就在此情况下等待// 1.…...

InetAddress.getLocalHost().getHostAddress()阻塞导致整个微服务崩溃

InetAddress.getLocalHost().getHostAddress()阻塞导致整个微服务崩溃 import java.net.InetAddress;public class GetHostIp {public static void main(String[] args) {try {long start System.currentTimeMillis();String ipAddress InetAddress.getLocalHost().getHostA…...

在 Qt6 中,QList 和 QVector 统一 成qlist了吗?

是的&#xff0c;在 Qt6 中&#xff0c;QList 和 QVector 已经被统一了。具体来说&#xff0c;QList 现在基本上就是 QVector 的一个别名。这一改变意味着 QList 和 QVector 具有相同的性能和行为特性。 在 Qt5 中&#xff0c;QList 有自己的内部实现&#xff0c;对小型对象&a…...

第三期书生大模型实战营 第1关 Linux 基础知识

第三期书生大模型实战营 第1关 Linux 基础知识 第三期书生大模型实战营 第1关 Linux 基础知识InternStudio开发机创建SSH密钥配置通过本地客户端连接远程服务器通过本地VSCode连接远程服务器运行一个Python程序总结 第三期书生大模型实战营 第1关 Linux 基础知识 Hello大家好&a…...

架构设计(1)分布式架构

分布式架构 分布式架构是一种将系统中的不同组件分布在多台计算机或节点上&#xff0c;通过网络进行通信和协作&#xff0c;以实现系统功能的架构设计。分布式架构通常用于构建大型、复杂的软件系统&#xff0c;具有高可伸缩性、高可用性和高性能等优点。下面是关于分布式架构…...

机器学习笔记:初始化0的问题

1 前言 假设我们有这样的两个模型&#xff1a; 第一个是逻辑回归 第二个是神经网络 他们的损失函数都是交叉熵 sigmoid函数的导数&#xff1a; 他们能不能用0初始化呢&#xff1f; 2 逻辑回归 2.1 求偏导 2.1.1 结论 2.1.2 L对a的偏导 2.1.3 对w1&#xff0c;w2求偏导 w2同…...

JavaWeb—js(3)

Bom dom: document object model(文档对象模型), 是处理html、xml的标准编写接口。 节点和元素 整个页面也就是整个文档我们称之为文档节点; 文档节点使用document来表示; 页面中的所有标签我们称之为元素&#xff0c;使用element来表示; 如此处的文本、属性、注释等&…...

PLSQL Day4

--使用显式游标更新行&#xff0c;对所有salesman增加500奖金&#xff1a; declare cursor s_cursor is select * from emp where job SALESMAN for update; begin for e_s in s_cursor loop update emp set comm nvl(comm,0)500 where current of s_cur…...

git合并报错:git -c core.quotepath=false -c log.showSignature=false merge r

这个错误通常发生在 Git 尝试合并两个没有共同祖先的历史时&#xff0c;比如在合并不同的分支或仓库时&#xff0c;可以尝试以下几种方法&#xff1a; 允许不相关历史的合并: git merge release-3.6 --allow-unrelated-histories这个选项告诉 Git 允许合并两个没有共同历史的分…...

云原生存储:使用MinIO与Spring整合

在现代云原生应用开发中&#xff0c;高效、可靠的存储解决方案是至关重要的。MinIO是一个高性能、分布式的对象存储系统&#xff0c;它与Amazon S3兼容&#xff0c;非常适合在Kubernetes等云原生环境中使用。本文将详细介绍如何在Spring Boot应用中整合MinIO&#xff0c;并提供…...

等保测评新趋势:应对数字化转型中的安全挑战

随着信息技术的飞速发展&#xff0c;数字化转型已成为企业提升竞争力、优化运营效率的重要手段。然而&#xff0c;这一转型过程中&#xff0c;企业也面临着前所未有的安全挑战。等保测评&#xff08;信息安全等级保护测评&#xff09;作为保障信息系统安全的重要手段&#xff0…...

使用esptool工具备份ESP32的固件(从芯片中备份下来固件)

本文以Windows电脑为例 板子为esp32-c3 1下载python 可在官网中下载,此处不进行讲解 使用如下代码查看是否安装了 Python&#xff08;终端输入&#xff09; python 2下载esptool 在终端输入如下代码即可下载 使用 pip&#xff08;推荐&#xff09;: 在你已经安装的 Pyth…...

JS进阶-解析赋值

学习目标&#xff1a; 掌握解析赋值 学习内容&#xff1a; 解构赋值数组解构对象解构筛选数组filter方法&#xff08;重点&#xff09; 解构赋值&#xff1a; 解构赋值是一种快速为变量赋值的简洁语法&#xff0c;本质上仍然是为变量赋值。 分为&#xff1a; 数组解构对象解…...

Java虚拟机面试题汇总

目录 1. JVM的主要组成部分及其作用&#xff1f; 1.1 运行时数据区划分&#xff1f; 1.2 哪些区域可能会发生OOM&#xff1f; 1.3 堆和栈的区别&#xff1f; 1.4 内存模型中的happen-before是什么&#xff1f; 2. HotSpot虚拟机对象创建流程&#xff1f; 2.1 类加载过程…...

C++休眠的方法

Windows的API函数 Sleep(INFINITE); 休眠时间为永久 Linux的API函数sleep 没有直接表示无限时间的参数&#xff0c;根据POSIX标准&#xff0c;sleep() 函数的参数应该是 unsigned int 类型&#xff0c;因此最大可以接受的参数值是 UINT_MAX&#xff0c;即 4294967295 秒。sleep…...

选择排序(C语言版)

选择排序是一种简单直观的排序算法 算法实现 首先在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小&#xff08;大&#xff09;元素&#xff0c;然后放到已排序序列的末尾。 重复第二步&…...

基于CentOS Stream 9平台搭建FRP内网穿透

内网穿透方法很多&#xff0c;本文以github上很火的frp为例 1.frp官方 文档&#xff1a;https://gofrp.org/zh-cn/docs/overview/ 1.1 下载 https://github.com/fatedier/frp/releases 选中合适的版本 2. 服务端&#xff08;服务器&#xff09;搭建frps 需要公网IP服务器 选…...

tmphw16tc47

AgentMDT协作&#xff1a;多学科会诊前的信息整理能不能先交给 AI MDT 会诊前&#xff0c;技术系统最容易被抱怨的不是“模型不够聪明”&#xff0c;而是病历、检验、用药、既往记录分散在不同系统里&#xff0c;人工整理耗时且容易遗漏。本文只讨论技术架构和工程流程示例&am…...

别再死磕PSO了!用Python手把手教你实现GWO灰狼优化算法(附完整代码)

用Python实战GWO灰狼优化算法&#xff1a;告别传统优化方法的局限 在工程优化和机器学习领域&#xff0c;算法选择往往决定了问题求解的效率和质量。传统粒子群优化(PSO)算法虽然广为人知&#xff0c;但其参数调节复杂、易陷入局部最优的缺点也日益明显。灰狼优化算法(Grey Wol…...

Circuit Playground Express 硬件解析与四步编程实战:从创客入门到项目开发

1. 项目概述&#xff1a;为什么选择 Circuit Playground Express 作为创客起点 如果你对硬件编程、物联网或者智能设备感兴趣&#xff0c;但又被 Arduino Uno 上密密麻麻的杜邦线和面包板劝退&#xff0c;或者觉得树莓派 Zero 的 Linux 系统门槛太高&#xff0c;那么 Adafruit…...

Verilog数值转换:数字设计工程师必须掌握的底层规则与工程实践

1. 项目概述&#xff1a;为什么Verilog数值转换是数字设计的基石在数字电路设计和FPGA开发中&#xff0c;Verilog是我们描述硬件行为的主要语言。很多刚入行的朋友&#xff0c;包括我当年&#xff0c;都曾以为写Verilog就是写“另一种编程语言”&#xff0c;把C语言或Python的习…...

Vatee:风险管理理念的深度实践

伴随金融市场的不断成熟&#xff0c;越来越多的客户开始关注平台的专业水准与综合能力。Vatee在行业中的发展轨迹较为值得关注。本文从评测视角出发&#xff0c;对其在多个核心维度上的实践进行综合呈现&#xff0c;力图以客观、平衡的姿态展示该平台的整体面貌&#xff0c;便于…...

低压电工-电子技术常识

一、导体、绝缘体、半导体&#xff08;按电阻率划分&#xff09;1. 划分标准单位是 Ω・cm&#xff08;欧姆・厘米&#xff09;&#xff0c;不是单纯欧姆 (Ω)&#xff0c;是电阻率专用单位&#xff1a;欧姆・厘米 Ω⋅cm&#xff0c;也可以用 Ω⋅m&#xff08;欧姆・米&#…...

STM32 FSMC/FMC接口详解:地址映射、时序配置与实战优化

1. 项目概述&#xff1a;深入理解STM32的FSMC/FMC接口在嵌入式开发中&#xff0c;尤其是涉及大屏显示、高速数据采集或复杂外部设备交互的项目里&#xff0c;我们常常会遇到一个绕不开的“硬骨头”——如何让STM32单片机高效、稳定地与外部并行存储器或设备通信。这时&#xff…...

5分钟快速上手Figma中文界面:设计师必备的终极汉化插件指南

5分钟快速上手Figma中文界面&#xff1a;设计师必备的终极汉化插件指南 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma全英文界面而苦恼吗&#xff1f;FigmaCN中文插件是你…...

Kubernetes原生部署Jenkins:全栈方案与生产级实践指南

1. 项目概述&#xff1a;一个为Kubernetes而生的Jenkins全栈部署方案在容器化和云原生技术席卷全球的今天&#xff0c;Jenkins作为持续集成与持续交付领域的常青树&#xff0c;其部署形态也正经历着深刻的变革。直接将Jenkins部署在物理机或虚拟机上&#xff0c;虽然简单直接&a…...

CefFlashBrowser完全指南:2025年畅玩Flash游戏与存档管理终极方案

CefFlashBrowser完全指南&#xff1a;2025年畅玩Flash游戏与存档管理终极方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 在Adobe Flash正式退出历史舞台后&#xff0c;无数经典网页游…...