.NET下水晶报表传递数据的两种模式

VS2010下水晶报表的使用总结-从安装到使用到部署,有图有真相 VS2010下水晶报表的使用总结-从安装到使用到部署,有图有真相。 公司要做一个有关水晶报表的打印,让我自己研究怎么使用,整整折磨我好几天。做了有关winform和Web两种方式的。我的开发环境是VS2010,Vs2010的水晶报表在网上出现的也不多,下面将我做报表的整体过程详细介绍如下: 首先,根据网上的提示下载, 选择和下载一个安装包: 1)SAP Crystal Reports, v 阅读详情

摘自:http://hi.baidu.com/xbzhu/blog/item/95158d5066d3f16785352427.html

 

摘 要 本文介绍了水晶报表的数据传递的两种模式,指出了这两种模式的优缺点及适合的情况,最后实例的方式具体实现。
关键词 水晶报表,推模式,拉模式,数据集
    水晶报表(Crystal Reports)是世界领先的用于创建交互报表的软件包,报表可以发布在Web上或集成在应用程序中。水晶报表以其强大的报表功能、方便的设计工具和支持多种语言,现已成为Web及Windows报表编写器的主导者。
在向水晶报表传递数据时,有两种方式可以实现,分别是拉模式和推模式。在VS.NET2003及VS.2005中提供了水晶报表的设计工具,通过它可以方便的设计各种水晶报表。本文将对这两种模式分别作简要的介绍,并在VS.NET环境下举例实现。
一、 水晶报表中使用拉模式
    1.拉模式简介
    在拉模式中,数据库驱动程序连接到数据库,并根据用户预先设定好的查询语句,将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的SQL命令都同时由水晶报表本身处理。比如在选取数据源的时候选的Access/Excel、ODBC、OLEDB、数据库文件。
    在拉模式下,只要按照报表专家的向导来操作,水晶报表直接根据指定的驱动连接数据库然后组装这些数据,不需要开发人员编写代码。拉模式适用于不需要对数据库(或数据文件)中的数据进行额外的处理(如数值计算等)的情况,其优点是设计时非常方便,可以随时对设计的情况进行预览,但在应用程序部署时则比较繁琐(如需要设定数据库连接的数据源及驱动)。
    2.拉模式的实现
    举例说明:用水晶报表显示某公司员工的详细信息清单。首先新建一个项目,在项目中添加水晶报表,如图1所示:


图1 新建水晶报表
    点击确定,进入选择报表的创建方式,这里使用“使用报表专家”,选择“标准”类型(这里还可以选择其它类型的,在此不做举例)。接下来就是设置数据源,在可用的数据源列表中选择ODBC(RDO),如图2所示。在弹出的界面中选择一个已经设定好的ODBC,本例中是SQL Server2000中自带的Northwind数据库。


图2 选择数据源
    接下来就可以从已经连接好的数据库中选择具体的表来生成报表,如图3所示。这里以雇员信息表Employees为例,显示雇员的基本信息。


图3 选择表
    选中具体的表之后,选择在将要在报表中显示的字段,进行相关的分组、统计及按某种要求生成图形等设置,如图4所示。


图4 设置报表的显示格式
    设定好报表的显示格式后,在一个窗体中添加一个报表浏览器,并在报表浏览器的load事件中添加如下代码:
CrystalReportViewer1.ReportSource = New CrystalReport1
运行之后,显示的界面如图5所示。


图5 报表运行结果
    这是一个简单的运用拉模式向水晶报表传递数据的例子,当然还可以在此基础上做些复杂的显示,比如分组,统计,以图形报表的方式显示等。这些操作几乎不用编写任何的代码就能实现,而且功能非常强大。具体的操作方法,请参照相关的水晶报表编程书籍。
二、 在水晶报表中使用推模式
    1. 推模式简介
    与拉模式最大的区别,是使用推模式时需要开发人员编写代码以连接到数据库,执行SQL命令以创建与报表中的字段匹配的记录集或数据集,并且将产生的数据传递给报表。该方法要求将数据库连接的操作置入应用程序中,并在水晶报表收到数据之前先将数据筛选出来。此时开发报表不得不自己编写代码连接数据库获取数据,并组装成数据集,同时将它传送至报表。推模式一般是利用字段定义的数据集、ADO.NET数据集、ADO.NET(XML)等方式实现。
虽然使用推模式需要一定的编码量,也没有拉模式便捷的导向式设计,但当数据库中的数据是加密的无法直接显示,或数据需要进行处理后再进行显示的时候,推模式就体现出了它的优势。
    2. 推模式的实现
    使用推模式向水晶报表传递数据,其思路是:先设计一个能存放数据的数据集(在VS.NET中一般是强类型的DataSet),以此数据集作为水晶报表的数据源。报表的显示格式还是像拉模式那样,然后通过程序填充数据集,最后将生成的数据集绑定到水晶报表的数据源上。举例如下:用水晶报表生成一份试卷,试题是加密的,存放于数据库中,由于不能采用拉模式的方式传递数据,采用推模式最合适。
在原项目基础上(也可新建一个项目)新建一个强类型的数据集,如图6所示。


图6 新建一个数据集
    在这里新建一个自定义的数据集,内容是一份试卷,如图7所示。


图7 数据集元素
图8为其XML格式,该数据集也可从XML格式的文档转化而来。


图8 数据集的XML格式
     将数据集建立之后,新建一个水晶报表,制定报表的数据源为刚刚新建的数据集,如图9所示。


图9 选择报表的数据源
     接下来的操作与拉模式操作类似,设计报表的格式及显示风格,具体操作见图4。设计好报表之后,添加一个窗体及报表浏览器,在报表浏览器的load事件中添加如下代码:
'定义DataSet、DataRow 、DataColumn等变量
Dim mydr As SqlDataReader
Dim myds As New DataSet
Dim mydc As New DataColumn
Dim th, i, count As Integer

'依据选出的试题编号以及题目生成一个强类型dataset
Dim mydt As New temp_tb.temp_sjDataTable
Dim str As String
'从试题信息表中提取加密的试题信息
str = "select * from sjstxxb where kssj='" & kssj & "' and ksdm='" & ksdm & "' and sjbh=" & sjbh
mydr = dboper.DBRead(str)
If Not mydr.HasRows Then
MessageBox.Show("没有试卷信息,请检查!", "请检查", MessageBoxButtons.OK, MessageBoxIcon.Information)
Exit Sub
End If
'填充DataRow,将DataRow添加到DataTable中
While mydr.Read
Dim dr = mydt.NewRow
dr("kssj") = mydr.GetString(1)
dr("kskm") = mydr.GetString(2)
dr("ksdm") = mydr.GetString(3)
th = mydr.GetInt32(4)
dr("th") = th
dr("tm") = encrypt.Decrypt(get_stnr(th))
dr("stfs") = mydr.GetInt32(5)
dr("stlx") = mydr.GetString(6)

mydt.Rows.Add(dr)
End While
mydr.Close()

'将datatable绑定到dataset
count = mydt.Rows.Count
myds.Tables.Add(mydt)

rpt_paper.SetDataSource(myds) '将DataSet绑定到报表的数据源
rpt_paper.Refresh()
CrystalReportViewer1.ReportSource = rpt_paper
最后显示的报表如图10所示。


图10 生成报表
三、 结语
    水晶报表的功能非常强大,笔者只是根据实际应用中的经验写出来。在设计报表时,根据具体数据传递的情况来设计,但它们包含在推和拉这两种模式中。当然,很多报表细节方面的设计细节及技巧并未提及,大家可以参照水晶报表官方网站及相关的书籍。


参考文献:
[1] 李万红,王 军.Crystal Reports for Visual Studio .NET高级编程.清华大学出版社.2003,4
[2] 李行武,施妍然.Crystal Reports 9水晶报表设计与开发大全.清华大学出版社.2004,5
[3] 王健伟,李延如,王晓红.Crystal Reports水晶报表设计与开发实务.电子工业出版社.2003,1


MVVM水晶报表打印 开发工具与关键技术:Visual Studio 2015、WPF、水晶报表 作者:易金亮 撰写时间:2021.06.06 打印可以说是一个项目最基本的操作功能之一了,几乎每一个项目都会有打印这个功能,我们通过它来打印一些报表、基本数据等,而在.Net开发中,我们大多数情况使用了水晶报表,正好最近刚刚学了MVVM 框架,现在在实训阶段,实训项目中也有这个功能,下面我就来说说我是如何实现这一功能的。 首先我们需要创建一个打印的window窗口,如下截图所示: 如上截图所示,这是我创建的打印窗口,命名为WD_ 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化 第二百零一十一 软件开发模型01

编号类型模型领域模型中的知识点/因素/参数关联知识和法律法规1传统顺序模型瀑布模型 (Waterfall)通用软件开发、硬件紧密耦合系统、政府/军工项目、需求稳定的传统信息系统严格线性阶段:可行性研究→需求分析(SRS,含功能/非功能/接口/约束,使用IEEE 830模板)→系统设计(概要设计HLD:架构、模块划分、数据库ER图;详细设计LLD:伪代码、类图、接口定义)→实现(编码规范、代码审查、静态分析工具SonarQube)→测试(单元测试JUnit、集成测试、系统测试、验收测试UAT,测试计划提前编写

weixin_49199313的博客 159

打印水晶报表

开发工具与关键技术:VS 水晶报表 作者:听民谣的老猫 撰写时间:2019/5/7 17:15 写打印代码前必须安装水晶报表安装包。 点击打印按钮弹出提示框 设置一个新建项。选择数据,添加一个数据集。 添加数据源(可以通过数据库添加也可以添加数据表自己设计) TableAdapter:通过数据库添加 DataTable:添加数据表 假如数据库中没有符合你需求的表那你就可以自己设计一张...

猫老爷 268

C#Winform水晶报表实例教程

以实例讲解C#Winform水晶报表的基本设置,格式化,排序与分组,常用应用,子报表的使用,以推模式使用ADO.NET数据集

水晶报表CrystalReport实现报表打印和动态图片导入

在新弹窗中,选择"报表字段",在字段列表中找到封装了动态URL的字段,双击后,会自动带出到下方的输入框中,选择"保存并关闭"SAP网站是国外网站,是全英文的,网站资源很丰富,找个CrytalReport都费劲。或者可通过网盘下载链接下载相关jar依赖,直接放到maven仓库下的\com目录下解压。设计好报表的样式,把数据源的字段拖曳过来即可,这里主要详细介绍一下动态图片的配置。我用的水晶报表设计器是2008版本,有需要的可通过以下链接下载破解版。下载后傻瓜式的安装就可以了,破解安装后,打开的界面如下。

wusy001的博客 2679

立创EDA开源项目:小北极冰冰杯(夏)——基于ESP32-C3的智能半导体制冷杯硬件设计与功能解析

本文详细解析了基于ESP32-C3的智能半导体制冷杯——小北极冰冰杯的硬件设计与核心功能。项目利用半导体制冷片实现快速降温,并集成了PWM智能调速散热、四路温度监控、杯具检测及PD/DC双电源输入等实用功能。文章深入剖析了其硬件架构、控制逻辑及实战注意事项,为嵌入式开发与智能硬件爱好者提供了宝贵的参考。

weixin_33245447的博客 271

搭建适用于lammps中opls-aa力场的文件流程

现在我已经解决了以上问题,并且通过我的方法可以实现从空白文档到搭建完成以上全部内容,后期只要细心检查即可。需要的data文件最关键是获得相应阴阳离子的mmol文件,因此问题转化为构建一份mmol文件。主要用到的软件及程序:gaussian09,makemol程序(tranal),opls-aa的参数文件。二面角个数:成角原子序号及对应的参数(这里PF6的结构没有二面角,所以为0)参考文献个数:文献名(空够行数即可,这些是给自己的备忘))和自身体系对应的参考文献,修改或填入对应的参数即可。

baguette的博客 2888

初级学软件之ASP.NET 第六季 水晶报表

主讲内容:第一讲 水晶报表简介第二讲 水晶报表结构组成第三讲 水晶报表数据库访问模式-提取模式第四讲 水晶报表数据库访问模式-提取模式 2第五讲 水晶报表数据库访问模式-推入模式第六讲 分组和排序第七讲 数据筛选方式第八讲 “抑制显示”功能的使用第九讲 “选择讲师”-使用参数字段第十讲 图表的使用

MinerU安装指南:从源码到验证的完整流程

本文详细介绍了MinerU文档转换工具的安装流程,从源码获取、依赖安装到验证步骤,提供了完整的安装指南和常见问题解决方案。特别适合技术写作者和开发者快速部署这款高效的文档转换工具,提升工作效率。

weixin_29243279的博客 546

水晶报表

今天我要教给大家的内容是水晶报表,什么是水晶报表?水晶报表是一个可以打印数据的工具。当然在打印之前,我们要安装一下水晶报表软件。我用的水晶报表软件是编程软件——CRforVS_13_0_14。我就不教大家怎么安装了,只要在里面点击下一步再下一步就可以了。如果你们不知道是否安装成功,那么我教大家怎样判断一下是否安装成功了:首先来到项目解决方案,找到你要水晶报表的区域,在区域那里新建一个PrintRe...

weixin_44567381的博客 1万+

关于发那科机器人抓手及物料搬运阀配置

4:确保抓手阀岛和输入模块配网连接正常,MENU—SETUP—MH Valves—Details,详细界面进入到左上图所示,根据每组阀分配夹钳数量并应用。3:设置搬运有效,抓手是否带点焊可以自行选择,要设置应用选择,物料搬用工具数量,工具上阀岛的数量,夹钳存在数量,工具存在数量,以及真空吸盘,冷启动。​2:MENU—应用选择,将搬运置为有效,剩余其他项根据机器人实际用途进行选择。5:设置夹钳数量,检查打开夹钳,检查闭合夹钳,延迟时间要给选择配置应用。

dxs93的博客 4776

从零构建AXI接口的DDR3控制器:MIG IP核实战指南

本文详细介绍了如何从零构建AXI接口的DDR3控制器,重点解析MIG IP核的配置流程和优化策略。通过实战案例和仿真验证,帮助开发者掌握FPGA中DDR3控制器的AXI接口设计,提升高速数据传输效率。适用于图像处理、网络加速等高性能应用场景。

weixin_28256233的博客 451

c#水晶报表教程

【原文地址】 水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文以VS2005简称)集成在一起。喜欢水晶报表的朋友可以方便使用了。我把水晶报表在vs2005的使用方法总结一下,供大家参考。 首先介绍一下我用的软件环境:Microsoft Visual Studio 2005;Microsoft SQL Server 2005 【数据

周 1019

KV260-从开箱到人脸识别(小白入门)

波特率选择115200,数据为8位,停止位1位,无奇偶校验,点击链接即可完成通讯。空白的盘格式化之后及进行挂载,这时会被我们的操作系统接手管理,这时就具有了操作系统的属性,复制文件就是在操作系统下的文件系统基础上进行的操作,这个过程是相对的地址进行操作,因此,复制文件是在操作系统环境下完成的更高级的操作模式。空白的盘相当于一整块空白的存储单元,因为没有格式化也不具有文件系统的属性,只有当外部的硬件或者软件写进空白的区域,这种方式是对绝对物理地址进行的操作,因此,烧录文件是独立于操作系统的更低级的写入方式。

qq_53252845的博客 3815

水晶報表的兩種模式:拉模式與推模式

.NET下水晶报表传递数据的两种模式阅读数:2146摘自:http://hi.baidu.com/xbzhu/blog/item/95158d5066d3f16785352427.html 摘 要 本文介绍了水晶报表的数据传递的两种模式,指出了这两种模式的优缺点及适合的情况,最后实例的方式具体实现。关键词 水晶报表,推模式,拉模式,数据集    水晶报表(Crystal Reports)是世界领先...

chenjinchu1的博客 716

智能汽车嘚啵嘚 --- 智能座舱第七稿:智能座舱的升级OTA

智能汽车嘚啵嘚 --- 智能座舱第七稿:智能座舱的升级OTA

Soly_kun的博客 414

机器人中的数值优化(十五)——PHR增广拉格朗日乘子法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 2004

vb 水晶报表打印

vb里面的水晶报表打印控件:CrystalReportViewer 用到的dll文件: 水晶报表打印其实很简单,只要创建报表对象,再对其传递数据就可以打印出来。当然所传递的数据要与水晶报表设计里面的数据一致: Public Overloads Sub ShowDialog(ByVal netDs As DataSet, ByVal strPath As String, Optio...

weixin_34406061的博客 269

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

.Net 以报表的形式加载SAP里面的数据

最近真是累,杂七杂八的事情一大堆,还好明天就放假了,终于可以好好的放松一下了,祝大家国庆中秋愉快! 感觉园子里面搞SAP的貌似不多,很少看到有新的SAP方面的文章出现... 这帮文章写的是在VS里面设计水晶报表,以报表的形式加载SAP里面的数据,涉及到以下几点知识: 1.通过“数据库专家”给水晶报表设置数据源以及各个字段。 2.程序中动态将数据传递给报表。 3..Net连接到SAP并调用...

weixin_30765505的博客 97

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java程序员的第一次VB.NET开发

   最近被迫进行了一次VB.NET开发。作为一次痛苦的回忆,有必要记录下来。    项目是一个报表改造项目,客户提供了旧项目的水晶报表RPT模板文件和新项目的SQL语句。    第一次接触.net技术,经过请教后,制定了大概的思路与方向    读取数据源->转变成自定义DateTable->和水晶报表绑定    因为由于本次项目连接的是Oracle,采用了OLDDB.NET的方式,所以需要安装Oracle的驱动包(100多兆呢),但由于因为最终要做成WebForm形式,所以希望的依赖包相对要求精简

AIHUA的专栏 1614

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

五月份的实习完毕-JDAS_Site出世

测试版下载: 下载一 下载二 下载三 四月中已经打定主意,如果还没有心思找工作的话就帮老表的系统升升级,顺便拿点生活费。在帮老表写AC系统的后期就已经觉得有把他们的证件相保存入库的必要,由于时间的关系,搁置了。AC系统使用有一段时间,他们也有升级的需求。数据统计都没有做好,想

Kemin | 本博客独立到nakeman.cn 2450

软考——架构师笔记

该文章可作为系统架构设计师考试的参考笔记。

weixin_43930239的博客 704

Pull模式水晶报表

<br />以前书上有提到过,不过没用,全忘了<br />还是查查资料吧<br />水晶报表分pull(拉模式)和push(推模式)<br />PULL拉模式也就是最基本的水晶报表制作方法,直接连接数据库生成报表。<br />步骤:1.首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接。 <br />           2.拖放一个 CrystalReportViewer控件,设置它的ReportSource属性为所建立的rpt文件。<br />步骤详细图解:<br />【解决方案】上右键【

WaterShuiMiao的专栏 2199
上一篇: 学习水晶报表
下一篇: 强类型DataSet的基本知识
VS_URL
博客等级 码龄15年 12粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值