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

文章目录

  • NuGet安装库
  • 数据库连接
  • 报表设计
    • 报表引用
    • 添加报表
  • 数据集设计
    • 方法一手动添加
    • 方法二——连接数据库添加
  • 关联报表与数据集
    • 表格数据与数据集数据设计
      • 表格格式、字体设计
      • 报表数据字段绑定
  • Winform 使用报表控件
  • 数据库填充数据集
    • 从数据库获取与数据源相同字段的数据
  • 动态表头设计
    • 添加表头参数
    • 绑定表头参数
    • 表头数据添加与绑定
  • 表格常用函数
    • 行数自增长
    • 表格颜色
      • 表格颜色表达式
  • 行、列可见性

NuGet安装库

报表相关
在这里插入图片描述
数据库相关
在这里插入图片描述
安装完后
在这里插入图片描述

数据库连接

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

 /// <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语句执行函数

         /// <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;
        }

数据库填充数据集

 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());
            }
        }

在这里插入图片描述

动态表头设计

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

添加表头参数

打开报表数据——点击参数——添加参数
注意:该部位添加的参数需要与程序中参数名相同
在这里插入图片描述

绑定表头参数

右击表格框——参数——双击索要显示值——表达式正确——确定
在这里插入图片描述

表头数据添加与绑定

在这里插入图片描述

 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)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/279910.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于求定积分的反函数的导数【认清原函数x变量和反函数x变量】

如图碰到该题该怎么解&#xff1f; 在纸上按①②③的顺序写出这个&#xff0c;其中①是最主要的 第②步和第③步就是在用反函数时要用到的逻辑思维&#xff0c;不是一起用的&#xff0c;你需要用②才去用②&#xff0c;你需要用③才去用③ 在纸上先写出第①步&#xff0c;即 其…

【Linux操作系统】探秘Linux奥秘:操作系统的入门与实战

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS …

css实现一个斑马条纹动画,实现一个理发店门口的小转转,进度条动画同理!

css实现一个斑马条纹动画&#xff0c;实现一个理发店门口的小转转 前置基础知识 css背景background的重复渐变属性repeating-linear-gradient() 该属性类似于linear-gradient(),但他会在整个方向上重复渐变以覆盖整个容器 一、先写一个普通渐变例子linear-gradient() &…

leetcode贪心算法题总结(三)

本章目录 1.合并区间2.无重叠区间3.用最少数量的箭引爆气球4.整数替换5.俄罗斯套娃信封问题6.可被三整除的最大和7.距离相等的条形码8.重构字符串 1.合并区间 合并区间 class Solution { public:vector<vector<int>> merge(vector<vector<int>>&…

ZigBee案例笔记 - 无线点灯

文章目录 无线点灯实验概述工程关键字工程文件夹介绍Basic RF软件设计框图简单说明工程操作Basic RF启动流程Basic RF发送流程Basic RF接收流程 无线点灯案例无线点灯现象 无线点灯实验概述 ZigBee无线点灯实验&#xff08;即Basic RF工程&#xff09;&#xff0c;由TI公司提供…

第一讲:BeanFactory和ApplicationContext

BeanFactory和ApplicationContext 什么是BeanFactory 它是ApplicationContext的父接口它才是Spring的核心容器&#xff0c;主要的ApplicationContext实现都组合了它的功能 BeanFactory能做什么? 表面上看BeanFactory的主要方法只有getBean()&#xff0c;实际上控制反转、基…

Spring-5-切入点的高级使用

Spring提供了两个额外的Pointcut实现&#xff0c;分别是ComposablePointcut和ControlFlowPointcut,它们提供了所需的灵活性。 使用控制流切入点 由ControlFlowPointcut类实现的Spring控制流切入点类似于许多其他AOP实现中可用的cflow构造&#xff0c;尽管功能上没有那么强大。…

(self-supervised learning)Event Camera Data Pre-training

Publisher: ICCV 2023 MOTIVATION OF READING: 自监督学习、稀疏事件 NILM link: https://arxiv.org/pdf/2301.01928.pdf Code: GitHub - Yan98/Event-Camera-Data-Pre-training 1. Overview Contributions are summarized as follows: 1. A self-supervised framework f…

“产品经理必懂的关键术语“

产品经理是现代企业中非常重要的一个角色&#xff0c;他们负责制定产品策略、规划产品开发流程、管理产品质量和用户反馈等等。然而&#xff0c;对于产品经理来说&#xff0c;了解并掌握相关的专业术语是非常重要的。本篇文章会介绍一些产品经理需要掌握的专业术语&#xff0c;…

一篇文章掌握系统架构的演变和常见微服务框架

目录 前言 一、系统架构的演变 1、单体应用架构 优点&#xff1a; 缺点&#xff1a; 2、垂直应用架构 优点&#xff1a; 缺点&#xff1a; 3、分布式SOA架构 3.1 什么是SOA 3.2 SOA架构 优点&#xff1a; 缺点&#xff1a; 4、微服务架构 优点&#xff1a; 缺点…

eve环境虚拟机和电脑如何传送文件

一.桥接 &#xff08;实现电脑和虚拟机在同一网段&#xff09; 虚拟机上网盘设置 二.属性---文件共享设置 1打开属性&#xff0c;点击共享 2.添加共享人为全部人&#xff0c;并修改权限为读写模式 3.点击高级共享&#xff0c;选定此文件夹 4.点击网络和共享中心&#xff0c;划…

C++——智能指针和RAII

该文章代码均在gitee中开源 C智能指针hpphttps://gitee.com/Ehundred/cpp-knowledge-points/tree/master/%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88​​​​​​​ 智能指针 传统指针的问题 在C自定义类型中&#xff0c;我们为了避免内存泄漏&#xff0c;会采用析构函数的方法释…

2023年末,软件测试面试题总结与分享

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;得准备年后面试了&#xff0c;又不知道从何下手&#xff01;为了帮大家节约时间&#xff0c;特意准备了一份面试相关的资料&#xff0c;内容非常的全面&#xff0c;真的可以好好补一补&#xff0c;希望大家在都能拿到…

分享Python采集40个NET整站程序源码,总有一款适合您

分享Python采集40个NET整站程序源码&#xff0c;总有一款适合您 Python采集的40个NET整站程序源码下载链接&#xff1a;https://pan.baidu.com/s/1z54JHJkFYa4Kx2oBtPrn_w?pwd2ta4 提取码&#xff1a;2ta4 商品评论网站系统 小孔子内容管理系统XkCms V2.0 友间别墅整站程…

实现二叉树的基本操作与OJ练习

目录 1.二叉树的基本操作 1.1二叉树基本操作完整代码 1.2检测value值是否存在 1.3层序遍历 1.4判断一棵树是不是完全二叉树 2.OJ练习 2.1平衡二叉树 2.2对称二叉树 2.3二叉树遍历 1.二叉树的基本操作 1.1二叉树基本操作完整代码 public class BinaryTree {static…

【Unity】【FBX】如何将FBX模型导入Unity

【背景】 网上能够找到不少不错的FBX模型资源&#xff0c;大大加速游戏开发时间。如何将这些FBX导入Unity呢&#xff1f; 【步骤】 打开Unity项目文件&#xff0c;进入场景。 点击Projects面板&#xff0c;右键选择Import New Assets 选中FBX文件后导入。Assets文件夹中就会…

Python 内置高阶函数练习(Leetcode500.键盘行)

Python 内置高阶函数练习&#xff08;Leetcode500.键盘行&#xff09; 【一】试题 &#xff08;1&#xff09;地址&#xff1a; 500. 键盘行 - 力扣&#xff08;LeetCode&#xff09; &#xff08;2&#xff09;题目 给你一个字符串数组 words &#xff0c;只返回可以使用在…

东方甄选小作文事件最大的赢家是谁? 董宇辉还是俞敏洪

有人说东方甄选小作文事件没有赢家&#xff0c;小马识途营销顾问认为小作文事件最终也没有输家。就公司来讲&#xff0c;有机会培养更多优秀主播&#xff0c;未来发展更健康了&#xff1b;就俞老师来讲&#xff0c;是把宇辉的薪酬和职位提高了&#xff0c;这些也是宇辉本来就应…

3D视觉-结构光测量-线结构光测量

概述 线结构光测量中&#xff0c;由激光器射出的激光光束透过柱面透镜扩束&#xff0c;再经过准直&#xff0c;产生一束片状光。这片光束像刀刃一样横切在待测物体表面&#xff0c;因此线结构光法又被成为光切法。线结构光测量常采用二维面阵 CCD 作为接受器件&#xff0c;因此…

模型 安索夫矩阵

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。产品市场战略。 1 安索夫矩阵的应用 1.1 江小白的多样化经营策略 使用安索夫矩阵来分析江小白市场战略。具体如下&#xff1a; 根据安索夫矩阵&#xff0c;江小白的现有产品是其白酒产品&…