在VB中用数据报表设计器创建报表
在VB中用数据报表设计器创建报表
在VB中用数据报表设计器创建报表数据环境设计器(Data Environment designer)与数据报表设计器(Data Report designer)均是Visual Basic 6.0的新增功能,它们的出现大大增强了Visual Basic处理数据的能力。
在以往的Visual Basic版本中,制作报表都是通过第三方产品来完成并通过ActiveX控件输出的。
这两种设计器的出现,使得Visual Basic程序员再也不用考虑选择一个什么样的第三方工具设计报表了,所有的设计全部在Visual Basic内部完成,再加上Visual Basic 6.0新增的开发IIS应用程序和开发DHTML应用程序功能,使得Visual Basic 6.0是一个名副其实的装备齐全的集成开发环境了。
下面我们以一个比较简单的报表为例,详细阐述如何使用数据环境设计器和数据报表设计器来设计一个数据报表。
一、数据环境设计器与数据报表设计器数据环境设计器提供了一个交互式的设计环境。
通过设置Connection对象和Command 对象的属性,可以快速完成到一个数据源的连接。
对于设置好的数据环境设计器,可以将它的对象拖放到表单上或是报表上,它会自动创建并完成数据绑定控件的设置。
数据报表设计器是一个极为灵活的设计报表的工具。
它以数据环境设计器作为数据源,能创建有层次的、汇总若干个关系型数据表数据的复杂报表。
除了像传统的报表设计工具那样能将报表通过打印机输出以外,数据报表设计器还能以HTML或文本文件的格式输出报表。
二、数据环境对象数据环境设计器包含以下几个对象:1. 数据连接(Connection)对象:连接对象表示到一个作为数据源的远端数据库或本地数据库的连接。
在数据环境中必须至少包含一个连接对象,要使用数据环境存取数据,必须首先创建连接对象。
2. 数据命令(Command)对象:命令对象定义了从数据库连接中将取回什么数据的详细信息。
VB6中实现动态统计报表
在利用VB开发MIS系统的过程中,经常需要制作动态统计报表。
本文就如何实现动态数据源下的分组交叉统计报表进行阐述,并结合实例给出编程指导。
在VB6.0的数据环境设计器中,我们可以利用“添加命令”一项来连接报表所需的数据源,同时利用“添加命令”属性中的分组与合计功能设计分组交叉统计报表的数据源,至此我们可以设计简单的数据存在于单一表静态数据源下分组交叉报表,对于数据存在多表的复杂的动态数据源下的分组交叉报表来说,仍实现不了,实现该功能的关键在于构造一个符合动态数据源要求的中间表。
下面以一管理系统中工程成本统计报表的实例来说明如何实现动态数据源下的分组交叉统计报表。
一、报表要求与分析该报表要求列出在指定的时间段内实施的各项工程所耗器材明细、数量、费用,并且计算各项工程的成本,最终计算所有工程的累计成本。
需求分析后可知该报表是个典型的动态数据源下分组统计报表,分组项为工程名称,要求对每个分组进行子汇总和对所有分组进行总汇总。
由于在该系统中的出库单和出库单明细分别存放在不同的表中,因此必须根据报表的要求预先构造一个成本统计中间表,命名为EquipMentCost。
相关表结构如图1。
通过对表OutBill和OutBillDetail的分析,发现两者通过关键字OutBill 相联,下面通过SQL语句生成中间表EquipmentCost,语句如下:Insert into EquipmentCost(Project,Name,Standard,Type,Num,Cost)select a.project as 'Project', as 'Name',b.standard as 'Standard', b.type as 'Type',b.num aswhere a.OutDate>=date1 and a.OutDate<=date2date1 和date2 变量用来指定时间,注意插入前要先清空该中间表的所有数据。
vb报表设计
第六节报表设计对一个完整的数据库应用程序来说,制作并打印报表是不可缺少的环节。
VB 6.0 提供了DataReport 对象作为数据报表设计器(DamReport designer),DataReport对象除了具有强大的功能外,还提供了简单易操作的界面。
DataReport对象可以从任何数据源包括数据环境创建报表,数据报表设计器可以联机查看、打印格式化报表或将其导出到正文或HTML页中。
一、报表设计器数据报表设计器由DataReport对象、Section对象和DataReport控件组成。
1.DataReport对象DataReport对象与VB的窗体相似,同时具有一个可视的设计器和一个代码模块,可以使用设计器创建报表的布局,也可以在代码模块中添加代码。
在“工程”菜单上,单击“添加DataReport”命令,将数据报表设计器添加到工程中,则出现如图5-6-1所示的DataReport1对象,由“报表标头”、“页标头”、“细节”、“页注脚”和“报表注脚”组成。
图5-6-1·报表标头:指显示在一个报表开始处的文本,例如用来显示报表标题、作者或数据库名。
·页标头:指在每一页顶部出现的信息,例如用来显示每页的报表标题。
·分组标头、注脚:指数据报表中的“重复”部分。
每一个分组标头与一个分组注脚相匹配,用于分组。
·细节:指报表的最内部的“重复”部分(记录),与数据环境中最低层的Command 子对象相关联。
·页注脚:指在每一页底部出现的信息,例如,用来显示页码。
·报表注脚:指报表结束处出现的文本,例如,用来显示摘要信息或一个地址或联系人姓名。
报表注脚出现在最后一个页注脚之前。
2.Section对象数据报表设计器的每一个部分由Section对象表示,如图5-6-1中的Section1~Section5。
设计时,每一个Section由一个窗格表示,可以单击窗格以选择页标头,编程改变其外观和行为,也可以在窗格中放置和定位控件,对Section对象及其属性进行动态重新配置,更改每一个Section对象的布局来设计报表。
VB利用DataReport做报表详解
VB利用DataReport做报表首先介绍一下DataReport对象的几个常用属性。
一是DataSource,用于设置一个数据源,通过该数据源,数据使用者被绑定到一个数据库;二是DataMember,从DataSource提供的几个数据成员中设置一个特定的数据成员;三是LeftMargin、RightMargin、TopMargin、BottomMargin等,用于指定报表的左右上下的页边距;四是Sections,即DataReport的报表标头、页标头、细节、页脚注、报表脚注5个区域,如果加上分组(可以有多层分组),则增加一对区域,即分组标头、分组脚注。
其中DataSource一般是一个数据环境或是ADODB.Connection类型的变量,而DataMember则对应数据环境中的Command或是ADODB.RecordSet类型的变量,推荐使用数据环境及Command,页边界大家肯定都很清楚,下面我主要介绍以下Sections,这也是DataReport的精髓所在。
Sections是一个集合,您可以为每一个Section指定名称,也可以用其缺省的索引,从上到下依次为1、2…。
每个Section均有Height和Visible属性,您可以在一定条件下使一个Section不可见。
在Section中可以放置各种报表控件,其中RptLabel、RptImage、RptShape 和RptLine可以放在任意的Section中,用于输出各种文字、图形及表格线;RptTextBox只能放在细节中,一般用于绑定输出DataMemeber提供的数据字段;RptFunction只能被放置在分组注脚中,用于输出使用各种内置函数计算出的合计、最大值、最小值、平均值、记数等等。
上述报表控件中常用公共属性有用于控制位置及高度宽度的Top、Left、Height、Width和控制可见性的Visible;其中RptTextBox还有DataField、DataMember、DataFormat及Font属性;其他属性不再多说。
VB6报表生成器让轻松报表轻松打
VB6报表生成器让轻松报表轻松打日期:2005年7月13日人气:352 查看:[大字体中字体小字体]VB提供了多个网格控件,如DBGrid,FlexGrid等,在程序中可以用来显示、录入数据,而且可以直接显示数据库里的数据,但是这些网格控件没有提供打印功能,用这些网格控件只能在屏幕上显示表格数据,这是网格控件功能上的一个缺憾。
如何才能把网格控件显示的表格数据从屏幕上搬到打印机上呢,使用VB 6.0提供的报表生成器,就能实现数据报表的生成和打印。
本文将介绍打印数据报表的几个技巧。
数据报表设计器Microsoft数据报表设计器(Microsoft Data Report designer)是一个多功能的报表生成器,其特色是创建联合分层结构报表。
同数据源(Data Environment designer数据环境设计器)一起使用,可以从几个不同的相关表创建报表。
除创建可打印报表之外,还可以将报表导出到 HTML 或文本格式文件中。
采用如下方法调用数据报表设计器,单击[工程]?[添加 Data Report],向工程中添加一个数据报表设计器,在一个工程中可以添加多个数据报表设计器,用于设计多个报表。
如果“添加Data Report”没有在“工程”菜单上列出,则单击[部件],出现“部件”对话框,单击“设计器”选项卡。
并单击[Data Report]把设计器添加到菜单上。
在“工程”菜单上只列出四种ActiveX设计器,其余的设计器放在“工程”菜单的“更多 ActiveX 设计器”子菜单中。
有关上述控件的使用方法请参阅VB的联机帮助。
实现数据报表打印我们摸索出了几个VB的联机帮助中没有介绍的技巧,但是在编程中非常实用,供大家参考。
(一)数据源动态选择数据库文件我们为数据环境设计器(Data Environment designer)的“Connection1”设置相关数据库时,把数据源定在了一个数据库文件上,这样就不能实现一个数据报表设计器动态选择相关数据库。
vb报表设计
VB 报表设计1、 工程->添加Data Report2、 工程->添加Data Environment3、 打开Data Environment (默认名为DataEnvironment1,可以修改),右击->添加连接,默认生成一个连接Connection14、 右击Connection1->选择属性->提供程序->选择Oracle OLE DB5、 连接属性设置如下,并测试连接。
6. 连接成功后,右击Connection1->添加命令,默认生成Command17. 右击Command1->属性,出现如下设置界面,选择数据库对象(表、视图、过程等)8. 建立DataReport 与Data Environment 的关联点击DataReport1,在属性设置中,将DataSource 设置为DataEnvironment1,DataMember为Command1.9. 设置检索结构在DataReport1上单击鼠标右键,选择“检索结构”命令,出现对话框“用新的数据层次代替现在的报表布局吗?” ,单击“是”按钮,将向报表设计器添加新的分组,分组与数据环境中的Command1命令对象有“一对一”的对应关系。
10.设置DataReport1的各个section(标头,细节等)。
在页标头(PageHeader)下,从控件箱中选择RptLabel控件,将Caption属性设置为“****明细”;·从数据环境设计器中将所需显示的字段拖放到细节(***_Detail)其中住院号:住院号。
前一表示标签(固定文本),后一项表示数据源中的字段·设置DataRe port1属性的“GridX”和“GridY”都为5;使用控件箱中的RptLine在分组注脚添加直线。
在页标头标签添加直线;11. 显示数据报表使用程序代码显示数据报表,在“工程资源管理器”窗口,双击“form1”窗体图标,并窗体上放置一个按钮cmdShow。
Vb 6.0 中DATAREPORT 的使用
Vb 6.0 中DATAREPORT 的使用一、打开VB6.0新建一“标准EXE”工程二、在“工程”菜单上,单击“添加DATA ENVIROMENT”向工程中一个设计器,此处为添加DATA ENVIROMENT1数据环境。
三、在弹出的工程1窗口中右键点击“CONNECTION1”,在弹出菜单中选择“属性”弹出数据链接属性窗体,在“提供程序”中选择自己的数据库环境。
如MICROSOFT OLE DB PROVIDER FOR SQL SERVER,点选下一步,选择自己的服务器、用户和密码,数据库等。
四、右键单击“CONNECTION1”,在弹出的菜单中选择“添加命令”,添加一个命令为COMMNAD1,右键单击“COMMNAD1”,在弹出菜单选择属性,在属性窗口的“通用”中对命令进行命名和连接的设置。
对数据源进行表的选择,“数据库对象”选择“表”,“对象名称”中选择你数据库中的表。
点击确定完成。
五、右键单击“COMMNAD1”,在弹出菜单中选择“添加子命令”,添加子命令为COMMAND2,右键单击“COMMNAD2”,在弹出菜单选择属性,在属性窗口的“通用”中对命令进行命名和连接的设置。
对数据源进行表的选择,“数据库对象”选择“表”,“对象名称”中选择你数据库中的表,再在“关联”项中对COMMAND1与COMMAND2的关联项进行设置,也就是此两表都有的关联字段,点“添加”进行添加。
最后点击确定完成。
六、创建数据报表DATAREPORT。
在“工程”菜单上,单击“添加DATA REPORT”向工程中一个数据报表DATAREPORT1。
在DATAREPORT1的属性窗口中,更改其DATASOURCE 为DATAENVIRONMENT1,DATAMEMBER 为COMMAND1。
七、右键单击数据报表设计器窗体,在弹出菜单上单击“检索结构”。
八、从数据环境设计器DATA ENVIROMENT1中拖动COMMAND1中几个需要的字段到DATA REPORT的“分组标头”中。
在VB6.0中用数据报表设计器创建报表
在VB6.0中用数据报表设计器创建报表
刘宇君
【期刊名称】《智能计算机与应用》
【年(卷),期】2002(000)001
【摘要】介绍在VB6.0中用数据环境设计器和数据报表设计器创建报表的方法.【总页数】2页(P25-26)
【作者】刘宇君
【作者单位】华北工学院分校,太原,030008
【正文语种】中文
【中图分类】TP31
【相关文献】
1.通过VB6.0数据报表对象创建多记录集报表 [J], 邵伟;翁文兵;顾开春
2.数据报表设计器在多层结构开发中的应用 [J], 孙孟乐
3.不固定数据源如何使用报表设计器设计报表 [J], 仝强
4.用数据报表设计器创建报表 [J], 陶杨
5.数据报表设计器使用技巧 [J], 杨春;李小青
因版权原因,仅展示原文概要,查看原文内容请购买。
VB利用DataReport做报表详解
VB利用Dat aRepor t做报表首先介绍一下D a taRep ort对象的几个常用属性。
一是DataS ource,用于设置一个数据源,通过该数据源,数据使用者被绑定到一个数据库;二是DataM ember,从DataSo urce提供的几个数据成员中设置一个特定的数据成员;三是LeftM argin、RightMa rgin、TopMarg in、Bottom M a rgin等,用于指定报表的左右上下的页边距;四是Secti ons,即DataRe port的报表标头、页标头、细节、页脚注、报表脚注5个区域,如果加上分组(可以有多层分组),则增加一对区域,即分组标头、分组脚注。
其中DataSo urce一般是一个数据环境或是ADO DB.Connect ion类型的变量,而DataMe mber则对应数据环境中的Comm and或是A D ODB.RecordS et类型的变量,推荐使用数据环境及Command,页边界大家肯定都很清楚,下面我主要介绍以下Sect ions,这也是Data Report的精髓所在。
Sections是一个集合,您可以为每一个S ectio n指定名称,也可以用其缺省的索引,从上到下依次为1、2…。
每个Secti on均有He ight和V i sible属性,您可以在一定条件下使一个S e ction不可见。
在Sectio n中可以放置各种报表控件,其中RptLa bel、RptImag e、RptSha p e和RptL ine可以放在任意的Sect ion中,用于输出各种文字、图形及表格线;R ptText Box只能放在细节中,一般用于绑定输出Data Memebe r提供的数据字段;RptFunc tion只能被放置在分组注脚中,用于输出使用各种内置函数计算出的合计、最大值、最小值、平均值、记数等等。
在VB6.0中用数据报表设计器创建报表
检索数据 。在 数据 环境设计器 中可 以 台若干个数 据连接 包 (o 吐 ) c聃e 对象 . 但最少 要包 台一个连接 对象 。 一个连 接 对 象表示 与一个 作为数据潺 使用 的一个敷据库 的连 接 。 通
过 设置连接对 象的属性 , 以建 立与一 个数据源 的连接 。 可 在创建好一个 连接对象后 .还要在 数据环境 设计器中
Ho t e t p r t aa Re o t De in r i 6 0 w o Cr a e Re o t h D t p r sg e n VB .
l Yuil 血 du o i
Al z e  ̄ ' t a T i a e r ̄ ns te meh d o rai  ̄ rp r i sa r n d sg e l aa e vrn n e i e hs p p rpe t h to fc et n e ot w t d, e e i r a d d t n i me ta sO.r s h t n l o
() 4 有击 cn et ̄ 对象 , 弹出的捷捷菜 单中选 择 o neo i 在 添加命令 项, 舔加 一个 emu a l o d 对象; ( )右 击  ̄m s d 5 m J I对象 , a 在弹 出 的快捷 菜单 中选择 “ 属性 ” , 项 打开 “ m m n l e ad 属性 ” 话框 i 对 在 om a d o m n I属性 ”对话框 中, 将龠辱 对象 的名称 设 置为 em l d t选择 eml t J 为连接对象 . o mt S . l a o e l ̄ eo 基于表对象
N me D耻 k∞ t a =
上, 自动创建并完成数据绑定控件的设置。 下面以在 A o 2∞ 中创建 时数据库 为例 ,详细介绍 c蝴 o
利用VB和Excel制作统计报表
D tG i1 tb o . ou s 2 . at n= aa r (a n }C l d mn ( )C pi 治疗次数 o
的特点在于其功能强大 、编程 简单 的数 据库操作能力。可视化 的开发环境以及丰富 的数据 库访问控件 的支持 使得 V B成为数 据库应用程序重要 的开发 工具 。而对于任何一个数据库应用程
序 而 言 ,制 作 报 表 始 终 是 应 用 程 序 所 必 需 的 功 能 。 V B尽 管 提
一 i 囊
| _
t _
| j
t誊 8 。 稳
黼 辕
| 麓 l ≥ | |
畏 | | _
l 誊霉 i
。 一
_。 ≈ 嚣 警 。 毒
武洪萍鬻 孙穗永
摘
要
本 文 介 绍 了在 V 中利 用 E cl实现 统 计 报 表 的制 作 与 输 出。借 助 于 O B ,使 B xe D C
供了数 据报 表设计器 ,但对 于复杂而数 据统计量庞大的报表来
说 ,它 的功 能还 是显 得 捉 襟 见 肘 。 特别 是 动 态 报 表 的 处 理 更 是 力 不从 心 。 程 序 员 在 V 中设 计 报 表 时 总 显 得 困难 重 重 ,不 是 B
那 么得 心 应 手 。
四 、相 关Βιβλιοθήκη 界 面 在图 2的窗体 中 ,利用 Ta tb组件 和 D tGi aa r d控件实 现 了
每 位 医 生 某 一 天进 行 的各 种 眼 科 检 查 的 次数 ,操 作 方 便 ,修 改 简 单 。 实 现代 码 如 下 :
P iaeSu O 1 t ae( r t bF m i t ) v Ac v
合 二 为 一 。在 V B中 访 问 E cl 件 可 以通 过 两 种 方 法 ,一 种 xe 文 是 通 过 O B 与 E cl 作 簿 连 接 ,另 一 种 方 法 是 通 过 E cl DC xe 工 xe 引用 ,对 Ecl 的对 象 进 行 操 作 。 本 文 利 用 V 6 0设 计 实现 xe 中 B. 了某 眼 科 医 院医 生 工 作 量 统 计 系 统 ,其 中报 表 数 据 的处 理 就是 通过第二种方法实现的。
Visual Basic6.0下数据库报表制作技巧
Visual Basic6.0下数据库报表制作技巧在运用Visual Basic编制MIS系统前台程序时,往往会需要处理大量的报表。
而这些报表的制作,在Visual Basic6.0出现之前,要么需要使用Print语句编写大量程序代码,要么选择诸如Seagate等第三方公司所提供的诸如Data Report等软件,而一旦真正使用这些没有本地化的软件或控件,程序员往往会遇到各种各样令人头疼不已的问题——或者是中文字体显示有所限制,或者是报表数据无法动态及时更新,或者所提供的数据处理或统计功能并不怎么适用。
所幸的是,MicroSoft推出的Visual Basic6.0专业版和企业版中包含一个全新的组件——Data Report Designer (DRD),运用这个报表设计器,我们可以将报表与数据环境对象或者是ActiveX数据对象直接关联,使得Visual Basic6.0下的报表设计效率得到空前提高。
下面,就本人在运用DRD进行报表程序设计所获得的心得与大家共同探讨一下。
一将DRD与DED(Data Enviroment Designer)结合。
这是运用DRD解决Visual Basic6.0报表处理最常用的一种方法,在Samples中有一个名为Prjnwind工程就是专门介绍如何使用结合使用DRD和DED的例子程序。
我们可以通过选择新工程中的Data Project类型就可以自动增加一个空的DED和DRD实例到Project explorer中,打开一个空DataReport实例将禁止工具栏中的General 窗体并在工具栏底添加一个DataReort按钮。
如下图:可以看到,DataReport的专用控件——RptLabel、RptTextBox、RptImage、RptLine、RptShape和RptFunction。
除了RptFunction,每个Rpt控件都可以在固有Visual Basic工具面板中找到对应的控件。
VB利用DataReport做报表详解
首先介绍下DataReport对象几个常用属性是DataSource用于设置个数据源通过该数据源数据使用者被绑定到个数据库; 2是DataMember从DataSource提供几个数据成员中设置个特定数据成员;3是LeftMargin、RightMargin、TopMargin、BottomMargin等用于指定报表左右上下页边距; 4是Sections即DataaReport报表标头、页标头、细节、页脚注、报表脚注5个区域如果加上分组(可以有多层分组)则增加对区域即分组标头、分组脚注其中DataSource般是个数据环境或是ADODB.Connection类型变量而DataMember则对应数据环境中Command或是ADODB.RecordSet类型变量推荐使用数据环境及Command页边界大家肯定都很清楚下面我主要介绍以下Sections这也是DataReport精髓所在Sections是个集合您可以为每个Section指定名称也可以用其缺省索引从上到下依次为1、2…每个Section均有Height和Visible属性您可以在定条件下使个Section不可见在Section中可以放置各种报表Control控件其中RptLabel、RptImage、RptShape和RptLine可以放在任意Section中用于输出各种文字、图形及表格线;RptTextBox只能放在细节中般用于绑定输出DataMemeber提供数据字段;RptFunction只能被放置在分组注脚中,用于输出使用各种内置计算出合计、最大值、最小值、平均值、记数等等上述报表Control控件中常用公共属性有用于控制位置及高度宽度Top、Left、Height、Width和控制可见性Visible;其中RptTextBox还有DataField、DataMember、DataFormat及Font属性;其他属性不再多说然后介绍下我使用经验是对想控制报表Control控件按类型有规律命名; 2是用RptShape矩形框做表格线框比用RptLine画框省事多了只有斜线才使用RptLine; 3是报表标题及报表中表头文字、日期及页码用RptLabel其中Caption属性支持转义%D为长格式日期%d为短格式日期%P为总页数%p为当前页码(注意:D和d,P和p大小写的区别); 4是对固定报表在设计窗口直接将报表Control控件摆放到位对于活报表应首先考虑报表最大情形将足够Control控件分别放置在区别区域位置大小可以不必深究然后在报表输出前用VBA代码对所有Control控件属性进行调整包括位置、高度、宽度、字体、对齐方式、显示格式、可见性等等相应对Section也应根据情况调整其高度和可见性最后用个例子模板来介绍说明其使用思路方法连接数据库With 数据环境.rsCommand名If .State = adStateOpen Then .Close .Source = SQL语句.Open 打开想输出数据库数据项以便输出End WithWith 报表名.DataSource=数据环境.DataMember=Command名这两行也可固定设好而不必每次设置设置页表头部分(RpttLabel…为报表Control控件名).Sections(2).Controls("RptLabelPage").Caption = "共%P页第%p页".Sections(2).Controls("RptLabelDate").Caption = "打印日期:%D".Sections(3).Controls("RptLabel1").Left=……设置细节部分(RptShapeX、RptTextBoxX为报表Control控件名).Sections(3).Controls("RptShape1").Left=….Sections(3).Controls("RptShape1").Top=….Sections(3).Controls("RptShape1").Height=….Sections(3).Controls("RptShape1").Width=….Sections(3).Controls("RptTextBox1").DataMember=Command名.Sections(3).Controls("RptTextBox1").DataField=字段1.Section s(3).Controls("RptTextBox1")=…….Sections(3).Controls("RptShapeN").Visible=False.Sections(3).Controls("RptTextBoxN").Visible=False…. Sections(3).Height=计算出或固定细节高度动态调整报表标题(RptLabelTitle为报表标签Control控件名).Sections(2). Controls("Rpt LabelTitle").Left=…….Sections(2). Controls("RptLabelTitle").Alignment=……调整完毕后.Show 或 .PrReportEnd With这样做优点是报表设计时简单调整方便、随意只需更改点代码而不必为了点点修改而费神在设计窗口调整半天vb6.0 中,用"datareport" 报表控件制作报表,纸张定义 A4 A3 <上一篇 | 下一篇> '在vb6.0中,用"datareport" 报表控件制作报表,当使用报表预览功能时,"datareport"'报表控件将使用"windows系统的当前默认打印机"的打印设置,若该打印设置纸张尺寸(如A4纸)小于"datareport"'报表控件所需纸张尺寸(如A3纸),则"datareport" 报表预览时将会出现"打印纸张尺寸小于报表宽度"错误,'请教如何用代码设置"windows系统的当前默认打印机"的打印机纸张尺寸,而不需用"公共对话框"的打印设置方法?Option ExplicitPublic Enum PrinterOrientationConstantsOrientPortrait = 2OrientLandscape = 1End Enum'Printer.PaperSize = vbPRPSA3Private Type DEVMODEdmDeviceName As String * 32dmSpecVersion As IntegerdmDriverVersion As Integer dmSize As IntegerdmDriverExtra As IntegerdmFields As LongdmOrientation As IntegerdmPaperSize As IntegerdmPaperLength As IntegerdmPaperWidth As IntegerdmScale As IntegerdmCopies As IntegerdmDefaultSource As Integer dmPrintQuality As Integer dmColor As IntegerdmDuplex As IntegerdmYResolution As IntegerdmTTOption As IntegerdmCollate As IntegerdmFormName As String * 32 dmUnusedPadding As Integer dmBitsPerPel As IntegerdmPelsWidth As LongdmPelsHeight As LongdmDisplayFlags As LongdmDisplayFrequency As Long End TypePrivate Type PRINTER_DEFAULTSpDataType As StringpDevMode As LongDesiredAccess As LongEnd TypePrivate Type PRINTER_INFO_2pServerName As LongpPrinterName As LongpShareName As LongpPortName As LongpDriverName As LongpComment As LongpLocation As LongpDevMode As LongpSepFile As LongpPrintProcessor As LongpDataType As LongpParameters As LongpSecurityDescriptor As LongAttributes As LongPriority As LongDefaultPriority As LongStartTime As LongUntilTime As LongStatus As LongcJobs As LongAveragePPM As LongEnd TypePrivate Const DC_PAPERNAMES = 16Private Const DC_PAPERS = 2Private Const DC_PAPERSIZE = 3Private Const DM_IN_BUFFER = 8Private Const DM_OUT_BUFFER = 2Private Const DM_ORIENTATION = &H1Private Const DM_PAPERSIZE = &H2&Private Const DMPAPER_A3 = 8 ' A3 297 x 420 mmPrivate Const DMPAPER_A4 = 9 ' A4 210 x 297 mmPrivate Const PRINTER_ACCESS_ADMINISTER = &H4Private Const PRINTER_ACCESS_USE = &H8Private Const STANDARD_RIGHTS_REQUIRED = &HF0000Private Const PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _ PRINTER_ACCESS_ADMINISTER Or PRINTER_ACCESS_USE)Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)Private Declare Function OpenPrinter Lib "winspool.drv" Alias _"OpenPrinterA" (ByVal pPrinterName As String, phPrinter As _ Long, pDefault As Any) As LongPrivate Declare Function ClosePrinter Lib "winspool.drv" _(ByVal hPrinter As Long) As LongPrivate Declare Function DocumentProperties Lib "winspool.drv" _Alias "DocumentPropertiesA" (ByVal hWnd As Long, ByVal hPrinter As Long, _ByVal pDeviceName As String, pDevModeOutput As Any, pDevModeInput As Any, _ByVal fMode As Long) As LongPrivate Declare Function GetPrinter Lib "winspool.drv" _Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _pPrinter As Any, ByVal cbBuf As Long, pcbNeeded As Long) As LongPrivate Declare Function SetPrinter Lib "winspool.drv" _Alias "SetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _pPrinter As Any, ByVal Command As Long) As LongPrivate Declare Function DeviceCapabilities Lib "winspool.drv" _Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, _ByVal iIndex As Long, ByVal lpOutput As String, lpDevMode As DEVMODE) As LongFunction SetDefaultPrinterOrientation(ByVal eOrientation As _PrinterOrientationConstants, ByVal strPaperSize As String) As BooleanDim bDevMode() As ByteDim bPrinterInfo2() As ByteDim hPrinter As LongDim lResult As LongDim nSize As LongDim sPrnName As StringDim dm As DEVMODEDim pd As PRINTER_DEFAULTSDim pi2 As PRINTER_INFO_2' Get device name of default printersPrnName = Printer.DeviceName' PRINTER_ALL_ACCESS required under' NT, because we're going to call' SetPrinterpd.DesiredAccess = PRINTER_ALL_ACCESS' Get a handle to the printer.If OpenPrinter(sPrnName, hPrinter, pd) Then' Get number of bytes requires for' PRINTER_INFO_2 structureCall GetPrinter(hPrinter, 2&, 0&, 0&, nSize)' Create a buffer of the required si zeReDim bPrinterInfo2(1 To nSize) As Byte' Fill buffer with structurelResult = GetPrinter(hPrinter, 2, bPrinterInfo2(1), _nSize, nSize)' Copy fixed portion of structure' into VB Type variableCall CopyMemory(pi2, bPrinterInfo2(1), Len(pi2))' Get number of bytes requires for' DEVMODE structurenSize = DocumentProperties(0&, hPrinter, sPrnName, _ 0&, 0&, 0)' Create a buffer of the required si zeReDim bDevMode(1 To nSize)' If PRINTER_INFO_2 points to a DEVMOD E' structure, copy it into our bufferIf pi2.pDevMode ThenCall CopyMemory(bDevMode(1), ByVal pi2.pDevMode, Len(dm))Else' Otherwise, call DocumentProperties ' to get a DEVMODE structureCall DocumentProperties(0&, hPrinter, sPrnName, _bDevMode(1), 0&, DM_OUT_BUFFER)End If' Copy fixed portion of structure' into VB Type variableCall CopyMemory(dm, bDevMode(1), Len(dm))With dm' Set new orientationSelect Case strPaperSizeCase "A3".dmPaperSize = DMPAPER_A3 Case "A4".dmPaperSize = DMPAPER_A4 End Select.dmOrientation = eOrientation.dmFields = DM_ORIENTATION + DM_PAPERSIZE End With' Copy our Type back into bufferCall CopyMemory(bDevMode(1), dm, Len(dm))' Set new orientationCall DocumentProperties(0&, hPrinter, sPrnName, _ bDevMode(1), bDevMode(1), DM_IN_BUFFER Or _ DM_OUT_BUFFER)' Point PRINTER_INFO_2 at our' modified DEVMODEpi2.pDevMode = VarPtr(bDevMode(1))' Set new orientation system-widelResult = SetPrinter(hPrinter, 2, pi2, 0&)' Clean up and exitCall ClosePrinter(hPrinter)SetDefaultPrinterOrientation = TrueElseSetDefaultPrinterOrientation = FalseEnd IfEnd Function''''----------------------------------''''---njx:窗体调用的代码:打印纸选用:1:纵向 2.横向'''SetDefaultPrinterOrientation 2, "A3"''''-----------------------------------1.报表的概念利用报表可以把数据表中的数据按一定的格式输出到屏幕上或打印到纸上。
vb 6之数据报表使用技巧
vb 6之数据报表使用技巧vb 6.0专业版和企业版中的数据报表设计器与数据环境设计器是数据访问的新内容。
msdn 所提供的prjnwind.vbp 示例工程在设计阶段(design time)就已将dataenvironment设为datareport的数据源,并将打印格式也设好,这种做法不太利于程序的通用性。
当然,我们也可以对dataenvironment编程,在运行阶段(run time)控制数据源。
其实,datareport可以完全脱离dataenvironment,而打印由动态sql生成的recordset。
实现代码如下:private sub datareport_initialize()…dim adoconnectionx as new adodb.connectiondim adorecordsetx as new adodb.recordsetadoconnectionx.open″provider=microsoft.jet.oledb.3.51;persist securityinfo=false;data source=″&app.path &″\xxx.mdb″adorecordsetx.open ″select *from表名″, adoconnectionxset datareportx.datasource = adorecordsetx′设置datareport 的数据源…由vb 6 所提供的datareport.sections.item(index).controls.item(index)...这样的语法不太利于编程控制数据报表设计器的专用控件的位置、大小等各种属性。
但是,我们可以编程根据控件所在区域(section)和所属类别等将它们分成若干集合(collection),然后通过控制集合的元素来控制其所代表的控件。
当然,在设计阶段我们要将足够多的控件绘制到datareport上备用。
VB生成Excel报表
Visual Basic中制作报表,通常是用数据环境设计器(Data Environment Designer)与数据报表设计器(Data Report Designer),或者使用第三方产品来完成并通过ActiveX控件输出.但对于大多数习惯于Excel报表的用户而言,用以上两种方法生成的报表在格式和功能等方面往往不能满足他们的要求. 由于Visual Basic的可扩展性,使用和融入Office97的特性,包括Excel是相当方便的.Excel可以用作OLE服务器,向外部输出某些属性,方法和事件.Visual Basic可以利用这些功能,实现与Excel的集成.下面,我们来具体阐述一个用VB来创建Excel报表的例子.一.Excel对象微软的Excel对象模型包括了128个不同的对象,从矩形,文本框等简单的对象到透视表,图表等复杂的对象.下面我们简单介绍一下其中最重要,也是用得最多的四个对象.1. Application对象Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境.2. Workbook对象Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件.3. Worksheet对象Worksheet对象包含于Workbook对象,表示一个Excel工作表.4. Range对象Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格.二.一个实例1.在Excel中做一个模板在用Visual Basic生成Excel报表之前,应先按照用户的要求在Excel中做好一个模板(文件后缀为.xlt).当然,对于那些格式不固定,需要动态生成的报表,也可在程序中控制其格式.本例需要为用户提供一个工程师工作的评价报告,我们所做的模板Engineer.xlt2.在Visual Basic程序中生成Excel报表我们的例子中使用ADO从数据库中获取工程师工作的有关信息,然后按照模板Engineer.xlt的格式将数据写入Excel工作表中.(1)创建一个新的标准EXE工程文件。
VB基础教程:第九章第六节报表制作
9.6 报表制作1. 报表的概念 利⽤报表可以把数据表中的数据按⼀定的格式输出到屏幕上或打印到纸上。
2.制作报表的⽅法 在VB6.0中可以利⽤报表设计器来制作报表,从“⼯程”中选择“添加data report”,将报表设计器加⼊到当前⼯程中,报表由5部分组成: 报表标头——每份报表只有⼀个,可以⽤标签建⽴报表名。
页标头——每页有⼀个,即每页的表头,如字段名。
细节——需要输出的具体数据,⼀⾏⼀条记录。
页脚注——每页有⼀个,如页码。
报表脚注——每份报表只有⼀个,可以⽤标签建⽴对本报表的注释、说明。
使⽤报表设计器处理的数据需要利⽤数据环境设计器创建与数据库的连接,从“⼯程”菜单中选择 “添加Data Enviroment”,在连接中选择指定的数据库⽂件,完成与数据库的连接,然后产⽣Command对象连接数据库内的表。
制作报表的步骤: (1)新建⼯程,在窗体上放置两个命令按钮; (2)从“⼯程”菜单中“添加Data Enviroment”,右击Connection1,在属性中选择“Microsoft Jet 4 OLE DB Provider”,在“连接”中指定数据库; (3)再次右击Connection1,选则“添加命令”,创建Command1对象,右击Command1,在属性中设置该对象连接的数据源为需要打印的数据表; (4)在从“⼯程”菜单中“添加Data Report”,在属性窗⼝中设置DataSource为数据环境DataEnviroment1对象,DataMember为Command1对象,即指定数据报表设计器DataReport1的数据来源; (5)将数据环境设计器中Command1对象内的字段拖到数据报表设计器的细节区; (6)利⽤标签控件在报表标头区插⼊报表名,在页标头区设置报表每⼀页顶部的标题; (7)利⽤线条控件在报表内加⼊直线,利⽤图形控件和形状控件加⼊图案或图形; (8)利⽤DataReport1对象的Show⽅法显⽰报表,在窗体Click事件加代码:DataReport1.Show; (9)利⽤预览窗⼝按打印按钮可以打印报表; (10)利⽤预览窗⼝⼯具栏上的导出按钮可以将报表内容输出成⽂本⽂件或Html⽂件;也可以利⽤DataReport1对象的ExportReport⽅法将报表内容输出成⽂本⽂件或Html⽂件。
VB6.0控制EXCEL进行报表设计及打印!
VB6.0控制EXCEL进行报表设计及打印!在工控程序的开发中,经常涉及到数据信息的分析、加工,最终还需把统计结果形成各种形式的报表打印输出。
在Visual Basic中制作报表,通常是用数据环境设计器(DataEnvironment Designer)与数据报表设计器(Data Report Designer),或者使用第三方产品来完成。
但对于大多数习惯于Excel报表的用户而言,用以上方法生成的报表在格式和功能等方面往往不能满足他们的要求。
由于Excel具有自己的对象库,在Visual Basic工程中可以加以引用,通过对Excel使用OLE自动化,可以创建一些外观整洁的报表,然后打印输出。
这样实现了Visual Basic应用程序对Excel的控制。
本文将针对一个具体实例,阐述基于VB和EXCEL的报表设计及打印过程。
1)创建Excel对象Excel对象模型包括了128个不同的对象,从矩形、文本框等简单的对象到透视表,图表等复杂的对象。
下面简单介绍一下其中最重要,也是用得最多的五个对象。
(1)Application对象:Application对象处于Excel对象层次结构的顶层,表示 Excel自身的运行环境。
(2)Workbook对象:Workbook对象直接地处于Application 对象的下层,表示一个Excel工作薄文件。
(3)Worksheet对象:Worksheet对象包含于Workbook对象,表示一个Excel工作表。
(4)Range对象:Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。
(5)Cells对象:Cells对象包含于Worksheet对象,表示Excel 工作表中的一个单元格。
如果要启动一个Excel,使用Workbook和Worksheet对象,下面的代码启动了Excel并创建了一个新的包含一个工作表的工作薄:Dim zsbexcel As Excel.ApplicationSet zsbexcel = New Excel.Applicationzsbexcel.Visible = True如要Excel不可见,可使zsbexcel.Visible = Falsezsbexcel.SheetsInNewWorkbook = 1Set zsbworkbook = zsbexcel.Workbooks.Add2)设置单元格和区域值要设置一张工作表中每个单元格的值,可以使用Worksheet对象的Range属性或Cells属性。
试论在VB程序中制作Excel报表
容易 的在VB 用程序 中生 成E cl 表 , 应 xe 报 但要 VB 用程 序 会 产 生 自动化 错 误 。 应
注意 使用 它们 之前 要 先声 明。 () p l ai n 1A pi t 对象是 对象 模型 的顶 层 , c o 表示 整个 E c l 用 程 序 。 x e应
r. p n ” l t c O e s e 学号 , ec 姓名 , 性别 , 班级 ,
出生 年月 , 庭住 址 , 家 入学 时 间fo r m XS B J
XX.o c rm
关 cl 释放 E e对 象时 , xc l 些对 象所提 供的 属性 、 方法和 文件 , 就可 以很 它操 作 , 闭Ex e文 档 ,
Di suSo c suDt As St i m t ur e,t t rng
S tUSOU r ee= A PP .Pat h & ”
r M ove r t c. Fis
Do W hie l Not c. EOF r
() r b o 对 象表示E cl 应用程序 x j x 表 , 括 学 号 、 名 、 别 、 级 、 2Wok o k xe sb x 包 姓 性 班 出
St e xl p No hi g S t x1 o =N Ap = t n / e Bo k
Se c rm=Ne AD0DB . o t o w c nne to c i n c rm. e n ” o i r o Op Pr v de =M ir s t.e . c o of J t O LEDB . 0l t ou c = ” App. t & 4. Da aS r e & Pa h ”t s ud . db ” m &
信 息 技 术
试论在 M B程序 中制作 E 表 c l x 报 e
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在VB中用数据报表设计器创建报表
数据环境设计器(Data Environment designer)与数据报表设计器(Data Report designer)均是Visual Basic 6.0的新增功能,它们的出现大大增强了Visual Basic处理数据的能力。
在以往的Visual Basic版本中,制作报表都是通过第三方产品来完成并通过ActiveX控件输出的。
这两种设计器的出现,使得Visual Basic程序员再也不用考虑选择一个什么样的第三方工具设计报表了,所有的设计全部在Visual Basic内部完成,再加上Visual Basic 6.0新增的开发IIS应用程序和开发DHTML应用程序功能,使得Visual Basic 6.0是一个名副其实的装备齐全的集成开发环境了。
下面我们以一个比较简单的报表为例,详细阐述如何使用数据环境设计器和数据报表设计器来设计一个数据报表。
一、数据环境设计器与数据报表设计器
数据环境设计器提供了一个交互式的设计环境。
通过设置Connection对象和Command 对象的属性,可以快速完成到一个数据源的连接。
对于设置好的数据环境设计器,可以将它的对象拖放到表单上或是报表上,它会自动创建并完成数据绑定控件的设置。
数据报表设计器是一个极为灵活的设计报表的工具。
它以数据环境设计器作为数据源,能创建有层次的、汇总若干个关系型数据表数据的复杂报表。
除了像传统的报表设计工具那样能将报表通过打印机输出以外,数据报表设计器还能以HTML或文本文件的格式输出报表。
二、数据环境对象
数据环境设计器包含以下几个对象:
1. 数据连接(Connection)对象:连接对象表示到一个作为数据源的远端数据库或本地数据库的连接。
在数据环境中必须至少包含一个连接对象,要使用数据环境存取数据,必须首先创建连接对象。
2. 数据命令(Command)对象:命令对象定义了从数据库连接中将取回什么数据的详细信息。
命令对象可基于任何一个数据库对象(表、视图、存储过程或同义字)或是一个SQL 查询。
三、数据报表对象
数据报表设计器包括以下几个对象:
1. 数据报表(Data Report)对象:类似于Visual Basic表单,它包含一个可视化设计器和一个代码模块。
设计器用来创建报表的布局,也可以往设计器的代码模块里添加代码,用程序对包含在设计器里的控件或区域进行控制。
2. 区域(Section)对象:数据报表设计器的每一个区域均由一个区域集对象中的一个区域对象来表示。
在设计阶段,每一个区域都有一个标题,若要选择区域,只需用鼠标选择标题即可,并且在区域内可布置控件。
在报表建立之前,使用区域对象及其属性调整报表。
使用过报表的人都知道,报表可分为报头、报脚、页头、页脚、组头、组脚和细节等部分,在区域内也是一样的。
3. 数据报表控件:这些控件只能与Data Report designer(数据报表设计器)一起使用(注意:在数据报表设计器内不能使用Visual Basic的标准控件或者任何其他的ActiveX控件)。
这些控件位于Visual Basic工具箱上的“DataReport”标签内。
由于这些控件外观及功能与Visual Basic某些标准控件很类似,所以不再单独讲述。
四、一个实例
我们使用Data Environment designer(数据环境设计器)作为数据报表的数据源,由Visual Basic自带的NWind.mdb数据库提供数据,设计一个简单的报表。
设计好的报表如图1所示。
1. 创建数据环境设计器
(1)创建一个新的标准EXE工程文件。
(2)在工程菜单上,选择添加数据环境。
如果在工程菜单中没有列出这一项,那么选择组件—设计器标签—选中数据环境,选择确定。
(3)在数据连接属性对话框中,选择Microsoft Jet 3.51 OLE DB Provider。
(4)选择“下一步”按钮,这样就进入了Connection标签。
(5)选择第一个文本框旁的“...”按钮。
(6)在存取数据库对话框中浏览并选择数据库文件Nwind.mdb。
(7)选择“确定”关闭该对话框。
(8)用鼠标右击Connection1图标,然后选择Rename,将名字改为Northwind。
(9)用鼠标右击Northwind图标,然后选择Add Command,再用鼠标右击Command1,选择“属性”命令,弹出属性对话框,在对话框中,按下表所示设置属性值。
Command Name
Customers
Connection
Northwind
DataBase Object
Table
Object Name
Customers
(10)选择“确定”关闭该对话框。
(11)用鼠标右击Customers命令,选择Add Child Command,再用鼠标右击Command1,选择“属性”命令,弹出属性对话框,在对话框中,按下表所示设置属性值。
Command Name
Orders
Connection
Northwind
DataBase Object
Table
Object Name
Orders
(12)选择Relation标签,选中Relate to a Parent Command Object检查框。
在Parent下拉框中选中Customers;Parent域和Child域中均已包含了CustomerID。
(13)选择添加,按“确定”关闭对话框。
(14)在属性窗口中按下表设置工程文件和设计器的属性值,然后保存工程文件。
Project Name
prjNwind
DataEnvironment Name
deNwind
Form Name
frmShowReport
2. 创建数据报表
一旦创建了数据环境设计器,就可以创建一个数据报表了。
由于不是所有在数据环境设计器内的字段都会用于设计报表,因此下面的过程只创建了一个显示几个字段的报表。
创建一个新报表的步骤如下:
(1)在工程菜单上,选择Add Data Report命令,Visual Basic会在工程中添加一个新的数据报表。
(2)在属性窗口中按下表设置数据报表的属性。
Name
rptNwind
Caption
Northwind Data Report
(3)在属性窗口中,将DataSource设置为deNwind,DataMember设置为Customers。
(4)用鼠标右击数据报表设计器,选择Retrieve Structure。
(5)用鼠标将数据环境设计器的CompanyName字段(在Customers命令下)拖放到组标题为Customers_Header的区域。
(6)删除标签控件Label1。
(7)用鼠标将数据环境设计器的OrderDate字段(在Orders命令下)拖放到Orders_Detail 区域,并删除标签控件。
(8)调整数据报表设计器的各个区域,如图2所示。
(9)保存工程文件。
3. 用Show方法预览数据报表
现在数据环境和数据报表对象都已建立,可以准备运行程序了。
我们要做的最后一件事情就是编写代码以显示数据报表。
(1)在工程浏览器窗口中,用鼠标双击frmShowReport以显示表单设计器。
(2)在工具箱上,点击General标签。
(3)点击CommandButton图标,然后在表单上画一个命令按钮。
(4)在属性窗口中按下表设置命令按钮控件的属性。
Name
cmdShow
Caption
Show Report
(5)在按钮事件中,键入以下代码:
Private Sub cmdShow_Click()
rptNwind.Show
End Sub
(6)保存并运行工程文件。
点击Show Report以打印预览模式显示报表。