• 关于FastReport在winform中的使用(包含FastReport.net的安装步骤链接)


    一、FastReport的简介

    FastReport是功能齐全的报表控件,使开发者可以快速并高效地为·NET/VCL/COM/ActiveX应用程序添加报表支持。

    二、FastReport的安装(推荐网址:https://www.cnblogs.com/yoyo-524/p/6116884.html

    感觉写的安装步骤很详细了,在这就不赘述了。另外提一个小问题,就是按照步骤我们安装好的是英文,怎么转成中文呢?

    大家不用再去网上找中文破解包之类的,直接在菜单里找到“File”——>“Select Language”,然后选择我们需要的中文简体就OK了。

    三、在Winform中使用FastReport

    1、新建一个窗体,给窗体拖入

    这个控件,

    然后设置属性,最终成这样

    2、新建一个frx报表,打开我们新安装的,打开之后选择“文件”——>“新建”,选择空报表。

    然后给空报表选择数据源,如果不选则会报这个错

    菜单“数据”——>“添加数据源”,然后就是一系列的选择数据库,写用户名,密码这类的,填写好后点击“下一个”,然后出现这个页面。

    我需要的数据是用紫红色标出来的那四个字段,这里需要注意那个红色圈出的按钮“添加SQL查询...”(注:如果你需要的只是一个表里的全部或部分数据,那么直接点“完成”即可)

    【这里修改一下哈,可以不勾选表里面的字段,然后直接点击“添加sql查询...”按钮的,这样在下面的数据源里就不会出现UserInfo和Dept这两个表了,直接一个Table就OK了】

    点击这个按钮,然后“下一个”到这个页面

    然后一直点击“下一个”直到完成。

     然后就会发现报表右侧的数据源里多了个Table

    然后将Table里面的字段直接拖入报表你想要显示数据的位置即可。

     

    这个数据区显示的数据源,决定你报表显示的数据。这就是为什么非要把两个表里的字段整合到一个表中的原因。(有兴趣的自己试试,选择不同的数据区,导出的数据有什么区别)

    【其实这个时候,你点击报表中的预览按钮已经能够显示出里面的数据了,当然,参数time的值除外。所以到这里我就迷惑了,都已经把数据源搞定了,我在代码里还折腾啥呢?但是一旦在报表中不给数据源,那里面的字段怎么拖进去?后续应该怎么做?这个有知道的希望能够留言解惑,拜托啦~】

    报表模板就算做完了,然后保存,自己选个路径。然后我是又把它复制到了Reports这个文件夹里。在VS中打开frx报表,会以xml文件的形式打开。如果想要再次修改报表模板,可以选中

    报表,右键选择打开方式,找到就OK了。还有一点需要注意,就是报表放进文件夹后需要右键属性,然后在“复制到输出目录中”一定要选成“始终复制”。

    ,要不然编译

    report.Load(filename);//找不到文件,报错

    的时候在binDebug...文件目录下找不到报表文件,会报错。

    3、代码,这里给报表附数据源,datatable和dataset都可以。

     private void FormFR_Load(object sender, EventArgs e)
            {
                DataSet data = null;
                string conStr = "Server='127.0.0.1';database=demo;UID='sa';PWD='wsn******';";
                try
                {
                    SqlConnection con = new SqlConnection(conStr);
                    con.Open();
                    string sql = @"select Dept.DeptID,Dept.DeptName,UserInfo.UserName,UserInfo.Salary from 
    dbo.Dept left join dbo.UserInfo on Dept.ID=UserInfo.DeptID
    "; SqlCommand sqlcmd = new SqlCommand(sql, con); SqlDataAdapter sda = new SqlDataAdapter(sqlcmd); data = new DataSet(); sda.Fill(data); con.Close(); sda.Dispose(); } catch (Exception err) { MessageBox.Show(err.StackTrace); } try { FastReport.Report report = new FastReport.Report(); string filename = @"Reportsfr一览.frx"; report.Load(filename); report.Preview = this.previewControl1;//让报表显示在窗体的控件中
    
                    report.RegisterData(data);
                    report.SetParameterValue("time", DateTime.Now.Date.ToString("yyyy-MM-dd"));//报表里的参数赋值
                    report.Prepare();
                    report.ShowPrepared(); 
                }
                catch (Exception err)
                {
                    MessageBox.Show(err.Message);
                }
            }

    最后报表显示的数据(因为页面太大,不能把前边的数据和操作时间截在一起,只能两张图了):

  • 相关阅读:
    Qt-网易云音乐界面实现-4 实现推荐列表和我的音乐列表,重要在QListWidget美化
    Qt-网易云音乐界面实现-3 音乐名片模块的实现
    Qt-网易云音乐界面实现-2 红红的程序运行图标,和相似下方音乐条
    Qt-网易云音乐界面实现-1 窗口隐藏拖拽移动,自定义标题栏
    Qt 利用XML文档,写一个程序集合 四
    promise的简单理解
    toast弹框组件的封装-插件方式
    vuex自动获取当前的时间
    用vue对tabbar的封装
    子组件与父组件的各种传递关系
  • 原文地址:https://www.cnblogs.com/wsn1203/p/8920507.html
Copyright © 2020-2023  润新知