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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 16:54:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 16:54:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 16:54:02       58 阅读
  4. Python语言-面向对象

    2024-07-14 16:54:02       69 阅读

热门阅读

  1. 多线程编程中的条件变量及其优化

    2024-07-14 16:54:02       15 阅读
  2. STM32F103控制0.96寸OLED显示

    2024-07-14 16:54:02       15 阅读
  3. GESP C++ 三级真题(2023年9月)T1 ⼩ 杨储蓄

    2024-07-14 16:54:02       14 阅读
  4. 2024年交安安全员考试题库及答案

    2024-07-14 16:54:02       19 阅读
  5. 2024年高校辅导员考试题库及答案

    2024-07-14 16:54:02       25 阅读
  6. VMM、VMI、VIM的简介

    2024-07-14 16:54:02       16 阅读
  7. Python 面试热门问题五

    2024-07-14 16:54:02       22 阅读
  8. TCP流量控制是怎么实现的?

    2024-07-14 16:54:02       24 阅读
  9. C#开发翻译较好的API

    2024-07-14 16:54:02       19 阅读
  10. C语言西蒙说游戏

    2024-07-14 16:54:02       25 阅读