自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/qq_36051316/article/details/140285413

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!