Winform RDLC报表(数据库连接、报表函数使用、动态表头)

文章目录

NuGet安装库

报表相关

数据库相关

安装完后

数据库连接

其中Sql执行语句是选择报表所需要的字段。

csharp 复制代码
 /// <summary>
        /// 数据库连接与SQL语句执行
        /// </summary>
        /// <param name="connectionString">连接语句</param>
        /// <param name="strSql">Sql执行语句</param>
        /// <returns></returns>
        public DataSet ConnReadSql(string connectionString,string strSql)
        {
            DataSet dataSet = new DataSet(); 
            using (SqlConnection connection = new SqlConnection(connectionString))
            {               
                try
                {
                    connection.Open();
                    SqlDataAdapter command = new SqlDataAdapter(strSql, connection);
                    command.Fill(dataSet, "ds");
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    throw new Exception(ex.Message);
                }
               
            }
            return dataSet;
        }

报表设计

报表引用

扩展------联机

搜索RDLC

如果下载太慢,点击"详细信息",在浏览器下载,或者更快的可以在迅雷下载,下载完成后关闭所有VS进程 ,进行安装包的安装。

添加报表

右击项目------添加------新建项------报表

数据集设计

方法一手动添加

在工具箱中找到数据集工具,拉一个DataTable到数据集

"Ctrl+L"快捷创建DataTable行数,添加字段需要与数据库获取字段一致。

方法二------连接数据库添加

在工具箱中找到数据集工具,拉一个DataTable到数据集,会弹出来配置向导。
点击新建连接

输入服务器后,在下拉框中选择所需数据库,点击测试连接,显示成功后,点击确定。

点击下一步

点击确定

点击下一步

这里直接点击"查询生成器"

点击添加

点击完成

http://t.csdnimg.cn/cks1x


关联报表与数据集

在工具栏的报表项目下面拉取表

之后会出现报表数据窗口,如果没有,快捷键ctr +alt+D

点击数据集------添加数据集

1.名称是后续代码要用到的参数名字

2.点击该项目设计的数据源,下方会出现对应可用数据集,选择需要的数据集,点击确定。

表格数据与数据集数据设计

表格格式、字体设计

右击表格------文本框属性

  1. 设置字体------微软雅黑(否则后期中文会出现乱码)

  2. 根据需求设置对其样式

    3.报表表格格式在数量众多的时候可以设计一个,后面的进行复制粘贴也会把格式带过去,或者在插入列或者插入行等操作时,沿用最近一个的所有格式

报表数据字段绑定

右击表格框------表达式------点击字段(如果字段没有,尝试刷新数据集之后重新点开字段)------双击值列表下的字段

Winform 使用报表控件

点击工具箱拉去ReportViewer 到窗体显示报表位置,本文该控件名称为reportViewer2

数据库填充数据集

从数据库获取与数据源相同字段的数据

Sql语句执行函数

csharp 复制代码
         /// <summary>
        /// 数据库连接与SQL语句执行
        /// </summary>
        /// <param name="connectionString">连接语句</param>
        /// <param name="strSql">Sql执行语句</param>
        /// <returns></returns>
        public DataSet ConnReadSql(string connectionString,string strSql)
        {
            DataSet dataSet = new DataSet(); 
            using (SqlConnection connection = new SqlConnection(connectionString))
            {               
                try
                {
                    connection.Open();
                    SqlDataAdapter command = new SqlDataAdapter(strSql, connection);
                    command.Fill(dataSet, "ds");
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    throw new Exception(ex.Message);
                }
               
            }
            return dataSet;
        }

数据库填充数据集

csharp 复制代码
 private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                string connectionString = "Server=.;Integrated Security=SSPI;Database=BRL_measurement_DB";
                string sql = "SELECT dateTime,normName,param1,param2,param3  FROM View_Data_Qualification";
                DataSet dataSet = new DataSet();
                dataSet = ConnReadSql(connectionString, sql);





                ///---向报表绑定数据源
                this.reportViewer2.ProcessingMode = ProcessingMode.Local;
                this.reportViewer2.LocalReport.DataSources.Add(new ReportDataSource("DataSet1001", dataSet.Tables[0]));
                ///---向报表查看器指定显示的报表
                this.reportViewer2.LocalReport.ReportPath = @"..\..\Report1.rdlc";
                this.reportViewer2.LocalReport.Refresh();
                this.reportViewer2.RefreshReport();
            }
            catch (Exception er)
            {

                MessageBox.Show(er.Message.ToString());
            }
        }

动态表头设计

项目中如果表头需要中英文转换等需求,可以考虑动态表头设计

添加表头参数

打开报表数据------点击参数------添加参数

注意:该部位添加的参数需要与程序中参数名相同

绑定表头参数

右击表格框------参数------双击索要显示值------表达式正确------确定

表头数据添加与绑定

csharp 复制代码
 private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                string connectionString = "Server=.;Integrated Security=SSPI;Database=BRL_measurement_DB";
                string sql = "SELECT dateTime,normName,param1,param2,param3  FROM View_Data_Qualification";
                DataSet dataSet = new DataSet();
                dataSet = ConnReadSql(connectionString, sql);

                Random random = new Random();
                int J = random.Next(18,21);
                //动态表头设计
                ReportParameter[] parameters=new ReportParameter[3];
                if (J%2==0)
                {
                    parameters[0] = new ReportParameter("ReportParameter1", "序号");
                    parameters[1] = new ReportParameter("ReportParameter2", "规格");
                    parameters[2] = new ReportParameter("ReportParameter3", "数据1");
                }
                else
                {
                    parameters[0] = new ReportParameter("ReportParameter1", "Num");
                    parameters[1] = new ReportParameter("ReportParameter2", "Specifications");
                    parameters[2] = new ReportParameter("ReportParameter3", "Data1");
                }
              
                ///---向报表绑定数据源
                this.reportViewer2.ProcessingMode = ProcessingMode.Local;
                this.reportViewer2.LocalReport.DataSources.Add(new ReportDataSource("DataSet1001", dataSet.Tables[0]));
                ///---向报表查看器指定显示的报表
                this.reportViewer2.LocalReport.ReportPath = @"..\..\Report1.rdlc";

                //动态表头设置
                this.reportViewer2.LocalReport.SetParameters(parameters);
                this.reportViewer2.LocalReport.Refresh();
                this.reportViewer2.RefreshReport();
            }
            catch (Exception er)
            {

                MessageBox.Show(er.Message.ToString());
            }
        }


表格常用函数

行数自增长

=RowNumber(Nothing)

表格颜色

选中一行更改颜色

表格颜色表达式

点击文本框属性------填充------点击函数Fx------点击函数IIF------选择要判断的字段------赋值颜色。

该函数表明:如果param1值为真则为第一个参数,为假则为第二个参数,为空不做判断

行、列可见性

单击一行或一列,选择属性------可见性------基于表达式显示或隐藏------点击Fx

=IIf(IsNothing(Fields!param3.Value),true,false)

相关推荐
tatasix18 分钟前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。31 分钟前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了32 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度33 分钟前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮36 分钟前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9991 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️2 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98762 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
苏-言2 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
Ljw...2 小时前
索引(MySQL)
数据库·mysql·索引