当前位置: 首页 > 编程日记 > 正文

机房收费系统(VB.NET)——超具体的报表制作过程


        之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件。

刚開始当然对这块功能非常不熟悉,只是探究了一段时间后还是把它做出来了。

       以下把在VisualStudio(我用的是VisualStudio2013,假设与您使用的版本号不同,过程中如有不符还请考虑实际情况)中制作报表的过程尽可能具体地记录下来,供刚開始学习的人学习參考。


        做事要有全局观,先看一下成品,做好的报表例如以下图:

        

        事实上可以达到这种效果须要做双方面的工作:加入报表控件ReportViewer和加入编辑RDLC文件。

个人感觉RDLC文件的作用是绑定数据库中须要的数据,ReportViewer则是引用RDLC文件来显示RDLC文件从数据库中绑定的数据。

        1、加入报表控件ReportViewer:

         加入报表控件非常easy:工具箱—报表—ReportViewer控件。

        2、加入和编辑编辑RDLC文件:

       加入RDLC文件,有两种方法:1、鼠标左击一下刚刚加入的ReportViewer,会发现控件右上角会出现一个黑色的小三角,点击那个小三角→设计新报表:
       

       假设是第一次创建RDLC文件,那么出来的界面是这种:
       

         如图片左上角所看到的。系统默认新建的这个数据集名称为“DataSet1”,为了命名规范,我们先取消“数据源配置向导”这个窗口,又一次命名数据集名称,我的命名为DataSetCheckoutReport:
          
         
       命名之后。点击“新建”进入“数据源配置向导”窗体:

        

        在“ 应用程序将从哪里获取数据?”问题下。选择“数据库”,下一步:

        

        在“ 要使用哪种类型的数据库模型?”问题下,选择“ 数据集 ”。下一步:

        

        在“ 应用程序连接数据库应使用哪个数据库连接? ”后点击“ 新建连接 ”:

        

        如上图,分别选择或输入对应项,測试连接。假设測试成功。则确定,自己主动返回到“ 数据源配置向导 ”窗口。下一步:
        【拓展】
         这个步骤假设您出现了【未能载入文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”或它的一个依赖项。

系统找不到指定的文件】这个错误,那么能够下载安装SharedManagementObject.msi


        

        选择须要用到的数据库中的对象,设置DataSet名称,完毕,自己主动返回“ 报表向导 ”窗口,下一步:
        

       将须要的字段按顺序拖入行组或列组中,因为“值”中必须拖入字段。这里我们随便拖入一个字段(假设不须要的话后面还能够改)。一直点“下一步”。直到“完毕”,RDLC文件的雏形就出来了
        

        这里我们不须要用到对每列的sum,所以右键表格的每一个行和最后一列不须要的行和列删除,仅仅留下须要的行和列(或者直接把这个表删除。右键插入新的表,然后依据自己的须要编辑),我设计好的表为:
        
       第一行为列标题,第二行为数据关联行,即与数据库中数据的关联,鼠标放到第二行每一个单元格时,单元格右上角会出现一个小图标。点击则能够为该单元格以及该单元格所在的整列关联数据集中的数据。
      以下就開始设计报表的一些细节,如标题、參数、时间等等:
         

       加入文本框:加入标题 “机房收费系统结账单” 事实上就是在【工具箱】中加入文本框就能够。

其它文本如“開始时间:”、“结束时间:”等也是一样;

       加入内置字段:如上图。右下角的《Exp》就是报表中自带的函数。能够在【报表数据】的内置字段中加入,比方我在右下角的这个Exp就是要显示运行报表的时间,时间格式能够自己设定,右键《Exp》—表达式。在“为下面项设置表达式”下输入表达式就可以,如我想让它显示的时间格式为“2014-08-08 08:08:08”,则可输入“ =Format(Now,"yyyy-MM-dd hh:mm:ss") ”。
         加入參数:另外前面带有@的表达式,就是您的程序中将要传入报表中的參数,比方我想在报表左下角显示制作这个报表的操作员,而这个操作员的username仅仅能从程序中获取。上面的開始日期@startTime和截止日期@endTime也是须要从代码中传入。这类參数能够右击【报表数据】的“參数”,来加入參数。
     (注:假设您没有找到【工具箱】或【报表数据】那么就须要去【视图】中加入。)
       
       以下就到了最后阶段。加上代码,核心代码为(限于篇幅。在这仅仅贴上刷新button事件代码):
'在本代码层首先要加入下面引用
Imports System
Imports Microsoft.Reporting.WinForms

Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click'依据时间段查询结账记录Dim startTime As String = Format(dtpBegin.Value, "yyyy-MM-dd")Dim endTime As String = Format(dtpEnd.Value, "yyyy-MM-dd")Dim dt As New DataTable'对象【checkReportFacade】的【QueryCheckOut】方法功能是依据两个日期,查询此时间段的结账记录dt = checkReportFacade.QueryCheckOut(startTime, endTime)'声明一个报表数据源对象Dim rptDateSource = New ReportDataSource'设置报表数据集名称rptDateSource.Name = "DataSetCheckoutReport"'设置报表数据源实例rptDateSource.Value = dt'设置嵌入报表的资源名称reportViewer.LocalReport.ReportEmbeddedResource = "UI.CheckReport.rdlc"'清空报表数据源reportViewer.LocalReport.DataSources.Clear()'加入报表数据源reportViewer.LocalReport.DataSources.Add(rptDateSource)'设置报表中的參数集合(注意:这里的參数和报表中的參数大写和小写和数据类型都要一致)Dim strUserID As String = Entity.UtilUserEntity.UtilUser.UserIDDim params As ReportParameter()params = {New ReportParameter("startTime", startTime),New ReportParameter("endTime", endTime),New ReportParameter("userId", strUserID)}'传递报表中的參数集合reportViewer.LocalReport.SetParameters(params)'刷新报表Me.reportViewer.RefreshReport()End Sub

             温馨提示:代码中的数据集名称DataSetCheckoutReport一定要与刚開始创建RDLC文件时设定的数据集名称DataSetCheckoutReport一样,否则将会出现“尚未为数据源***提供数据源实例”的错误。

       最后,又一次单第一步加入的ReportViewer空间,点击右上角的小三角。在“选择报表”后选择您刚制作的报表就大功告成了。到此,一张简单的报表就制作好了
        
       假设步骤中有错误或不全面的地方。欢迎补充说明。


转载于:https://www.cnblogs.com/blfbuaa/p/6738592.html

相关文章:

微信小程序实现画布自适应各种手机尺寸

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文: 解决的问题: 画布,动画等js里面的操作,默认是px而不是rpx, 无法根据手机屏幕自适应 达到的效果: 让画布,动画在不同分辨…

网易新闻首页实现

http://www.2cto.com/kf/201409/330299.html IOS后台运行机制详解(二) http://blog.csdn.net/enuola/article/details/9148691转载于:https://www.cnblogs.com/itlover2013/p/4403061.html

阿联酋gitex_航空公司网站不在乎您的隐私后续行动:阿联酋航空以以下方式回应我的文章:...

阿联酋gitexby Konark Modi通过Konark Modi 航空公司网站不在乎您的隐私后续行动:阿联酋航空对我的文章进行了全面否认 (Airline websites don’t care about your privacy follow-up: Emirates responds to my article with full-on denial) Yesterday, The Regis…

微信小程序把缓存的数组动态渲染到页面

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文: 代码实现的目的:当页面销毁的时候,页面的参数状态还是能够保存。 show_img函数实现: 创建一个数组保存到缓存,遍历缓存的list_stutas对…

Find Minimumd in Rotated Sorted Array

二分搜索查最小数&#xff0c;from mid to分别为区间的第一个&#xff0c;中位数&#xff0c;和最后一个数 if(from<mid&&mid<to)//顺序&#xff0c;第一个即为最小值 return from; if(from>mid)//发现逆序&#xff0c;则最小值在这个区间&#xff0c;2分搜索…

在DataTable中更新、删除数据

在DataTable中选择记录 /*在DataTable中选择记录*//* 向DataTable中插入记录如上&#xff0c;更新和删除如下:* ----但是在更新和删除前&#xff0c;首先要找出要更新和删除的记录。* 一种方法是遍历DataRow&#xff0c;搜索想要的记录&#xff0c;* --〉然而更聪明的办法是使用…

使用TensorFlow进行机器学习即服务

by Kirill Dubovikov通过基里尔杜博维科夫(Kirill Dubovikov) 使用TensorFlow进行机器学习即服务 (Machine Learning as a Service with TensorFlow) Imagine this: you’ve gotten aboard the AI Hype Train and decided to develop an app which will analyze the effective…

浏览器加载、解析、渲染的过程

最近在学习性能优化&#xff0c;学习了雅虎军规 &#xff0c;可是觉着有点云里雾里的&#xff0c;因为里面有些东西虽然自己也一直在使用&#xff0c;但是感觉不太明白所以然&#xff0c;比如减少DNS查询&#xff0c;css和js文件的顺序。所以就花了时间去了解浏览器的工作&…

《转》java设计模式--工厂方法模式(Factory Method)

本文转自&#xff1a;http://www.cnblogs.com/archimedes/p/java-factory-method-pattern.html 工厂方法模式&#xff08;别名&#xff1a;虚拟构造&#xff09; 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类…

微信小程序去除左上角返回的按钮

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; 解决方法有两种&#xff1b; 1.把该页面设置为tab页面或者主页 ; 2.进入该页面使用 wx.reLaunch(); 示例 wx.reLaunch({url: ../detail/detail,}) 这样有一个弊端&#xff0c;就是…

我的第一个web_登陆我的第一个全栈Web开发人员职位

我的第一个webby Robert Cooper罗伯特库珀(Robert Cooper) 登陆我的第一个全栈Web开发人员职位 (Landing My First Full Stack Web Developer Job) This is the story of the steps I took to get my first job as a full stack web developer. I think it’s valuable to sha…

HTTP请求报文和HTTP响应报文(转)

原文地址&#xff1a;http://blog.csdn.net/zhangliang_571/article/details/23508953 HTTP报文是面向文本的&#xff0c;报文中的每一个字段都是一些ASCII码串&#xff0c;各个字段的长度是不确定的。HTTP有两类报文&#xff1a;请求报文和响应报文。 HTTP请求报文 一个HTTP请…

微信小程序用户未授权bug解决方法,微信小程序获取用户信息失败解决方法

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; bug示例图&#xff1a; 导致这个bug的原因是 wx.getUserInfo(OBJECT) 接口做了调整&#xff1b; 请看官方文档的描述&#xff1a; wx.getUserInfo(OBJECT) 注意&#xff1a;此接口有…

格式化json日期'/Date(-62135596800000)/'

日期经过json序列化之后&#xff0c;变成了/Date(-62135596800000)/字符串&#xff0c;在显示数据时&#xff0c;我们需要解释成正常的日期。 Insus.NET和js库中&#xff0c;写了一个jQuery扩展方法&#xff1a; $.extend({JsonDateParse: function (value) {if (value /Date(…

aws lambda使用_使用AWS Lambda安排Slack消息

aws lambda使用Migrating to serverless brings a lot of questions. How do you do some of the non-serverless tasks, such as a cronjob in a serverless application?迁移到无服务器带来了很多问题。 您如何执行一些非无服务器的任务&#xff0c;例如无服务器应用程序中的…

微信小程序模块化开发 include与模板开发 template

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; 1. include 是引用整个wxml文件&#xff0c;我通常会配合js&#xff0c;css一起使用&#xff1b; 使用场景&#xff0c;需要封装事件和微信 api 的公共模块。 2.template &#xff…

winform解析json

在使用C#开发爬虫程序时&#xff0c;会遇到需要解析json字符串的情况。对于json字符串可以使用正则表达式的形式进行解析&#xff0c;更为方便的方法是使用Newtonsoft.Json来实现。 Nuget添加应用包 在工程上右键——【管理Nuget程序包】浏览找到要安装的程序包Newtonsoft.Jso…

Oracle11g密码忘记处理方法

c:\>sqlplus /nolog sql>connect / as sysdba sql>alter user 用户名 identified by 密码;&#xff08;注意在这里输入的密码是区分大小写的&#xff09; 改完之后你可以输入 sql>connect 用户名/密码 as sysdba进行验证 转载于:https://www.cnblogs.com/imhuanxi…

hic染色体构想_了解微服务:从构想到起点

hic染色体构想by Michael Douglass迈克尔道格拉斯(Michael Douglass) 了解微服务&#xff1a;从构想到起点 (Understanding Microservices: From Idea To Starting Line) Over the last two months, I have invested most of my free time learning the complete ins-and-outs…

[python]关于字符串查找和re正则表达式的效率对比

最近需要在python中做大日志文件中做正则匹配 开始直接在for in 中每行做re.findall&#xff0c;后来发现&#xff0c;性能不行&#xff0c;就在re前面做一个基本的字符串包含判断 (str in str)&#xff0c;如果不包含直接continue 效率对比&#xff1a; 1、只做一次包含判断&a…

微信小程序客服功能 把当前页面的信息卡片发送给客服

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; 需求&#xff1a;微信小程序客服带详情页 &#xff0c; 场景&#xff1a;一个人通过微信小程序接入微信客服&#xff0c;聊天后带上入口链接 效果图&#xff1a; 写法&#xff1a; …

phpcms标签大全V9

转自&#xff1a;http://blog.csdn.net/cloudday/article/details/7343448调用头部 尾部{template "content","header"} 、 {template "content","footer"}{siteurl($siteid)} 首页链接地址 <a href"{siteurl($siteid)}/&q…

多伦多到温莎_我想要freeCodeCamp Toronto的Twitter来发布报价,所以我做了一个免费的bot来做到这一点。...

多伦多到温莎If you read About time, you’ll know that I’m a big believer in spending time now on building things that save time in the future. To this end, I built a simple Twitter bot in Go that would occasionally post links to my articles and keep my ac…

Linux常用命令汇总(持续更新中)

命令说明注意点cat access.log | wc -l统计行数awk命令可以做到同样的想过&#xff1a;cat access.log | awk END {print NR}grep vnc /var/log/messages查看系统报错日志等同于&#xff1a;sudo dmesg -T | grep "(java)"netstat -lnt | grep 590*查看端口状态 nets…

IOS问题汇总:2012-12-18 UIAlertView+UIActionSheet

UIAlertView/UIActionSheet UIAlertView * alertView [[UIAlertView alloc] initWithTitle:“添加场景模式” message:“请输入场景名称” delegate:self cancelButtonTitle:“取消” otherButtonTitles:“确定”, nil];alertView.alertViewStyle UIAlertViewStylePlainTextI…

PHP入门 1 phpstudy安装与配置站点

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 1&#xff0c; 一键安装 phpstudy &#xff1b; 点击跳转下载&#xff1b; 2.配置站点&#xff0c;点击MySQL 其它选项菜单的站点域名管理&#xff1b;再点击新增 2&#xff0c;点击其他选项菜单点击打开…

singleton设计模式_让我们研究一下Singleton设计模式的优缺点

singleton设计模式by Navdeep Singh通过Navdeep Singh 让我们研究一下Singleton设计模式的优缺点 (Let’s examine the pros and cons of the Singleton design pattern) Design patterns are conceptual tools for solving complex software problems. These patterns are si…

【转】MFC消息映射详解(整理转载)

消息&#xff1a;主要指由用户操作而向应用程序发出的信息&#xff0c;也包括操作系统内部产生的消息。例如&#xff0c;单击鼠标左按钮&#xff0c;windows将产WM_LBUTTONDOWN消息&#xff0c;而释放鼠标左按钮将产生WM_LBUTTONUP消息&#xff0c;按下键盘上的字母键&#xff…

php 2 往数据库添加数据

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 前端代码&#xff1a; function submit_result() { $.post("Controllers/ajaxController.php",{"name": $("#name").val(),"mobile": $("#mo…

设计模式:单例

传统的实现方法&#xff1a;两私一公&#xff0c;涉及线程安全问题&#xff08;即使有多重检查锁也可以通过反射破坏单例&#xff09;public class Singleton {private volatile static Singleton instance null;private Singleton () {}public static Singleton getSingleton…