利用VB设计打印复杂报表

合集下载

用VB实现WinCC归档数据的复杂报表

用VB实现WinCC归档数据的复杂报表
摘要 本文主要讨论了将西门子组态软件 #$%&& 归档的过程数据,通过 2&&.-- 数据库的 7:"& 连接 ,利 用 !" 生 成 2&B &.-- 数据库,较好地解决了 #$%&& 归档数据灵活备份和复杂报表打印的问题。 关键词:#$%&&,2&&.-- 数据库,7:"&,453.6 报表
西门子公司的 #$%&& 是一个优秀的工控组态软件,广泛应 用于各种工业控制系统的数据采集及监控。#$%&& 本身也具有 报 表 和 曲 线 处 理 功 能 , 但 #$%&& !’() 以 前 的 版 本 没 有 嵌 入 !" 脚 本 功 能 ,且 其 归 档 数 据 不 能 直 接 被 *+, -./0./ 数 据 库 所 用 。对 于 一 些 较 复 杂 的 数 据 处 理 功 能( 如 数 据 查 询 、数 据 备 份 、报 表打印等)用 #$%&& 实现就显得力不从心。同 时 ,#$%&& 在 处 理报表时不能对历史数据进行任意查询和过滤,且报表格式设 计 也 不 够 灵 活 方 便 ,无 法 满 足 项 目 要 求 。 ! 系统概述
要 求 作 好 一 个 模 板(后 缀 为9M,+),对 于 报 表 中 不 固 定 的 部 分 ,需 要 Yc 程序动态生成。由于本项目过程变量数目及采样值较多, 在 Yc 程序中需同时控制 .M4-, 的 <:--+ 和 e1^-。整个过程都
置纸张尺寸为 ]# 8PfQ-[9Y*7*P,- I ‘O58Pf.Z9<:--+7@$A9eO*/+eO-l*-[ 8PfQ-[9Y*7*P,- I F1,78Pf.Z9<:--+7@$A9eO*/+a5+ 8PfQ-[9J*7H,1g],-O+7IF1,7-K8PfQ-[9o5*+ 8PfQ-[9J*7H,1g],-O+7I‘O5-K

基于VB实现复杂报表设计

基于VB实现复杂报表设计

基于VB实现复杂报表设计xx[摘要] 本文介绍了报表设计的几种方法和以往报表设计所存在的问题,并以实例介绍自动生成复杂报表的方法。

实例基于VB软件开发,并以word为模板,通过调用access数据库数据自动生成复杂报表。

[关键词]VB;数据库;Word; 复杂报表The Design Of Complex Reports Based VB[Abstract] This paper reports detailed description of several common methods, previous reports of the existence of the problem, and makes use of example to achieve a complex reporting by using of software. The example based on VB software and used word template, to achieve the common complex reporting software through reallocating database.[Key words] VB; Database; Word; Complex Statements1引言报表是人们在日常生活中对某类相关信息进行集中处理的重要手段,是企业信息化不可缺少的部分。

报表在各行各业中应用广泛,是信息浏览、分析和打印的有力工具。

传统报表系统均以国外简单报表模型为基础设计,不能适应复杂报表的开发。

特别是在处理复杂数据源报表时,常常需要编写代码准备数据或进行子报表拼接才能实现。

1.1传统报表系统存在的问题目前,国内外的报表系统种类繁多,功能界面各具特色,对这些报表系统的比较研究,有助于我们设计出更好的报表系统。

国外的报表系统的技术都比较成熟,适合制作样式简单的报表,但一般都为高端产品,价格不菲,并且在处理具有强烈中国特色的报表时,国外产品不仅报表处理能力相当不适应,甚至某些技术也略显落后,例如部分产品不能稳定地在UNIX上部署,只能支持IE浏览器,统计图输出仍采用原始的CGl方式等。

VC与VBA结合实现复杂报表

VC与VBA结合实现复杂报表

摘 要 介绍了在 )* && 中利用 +,-./01 技术调用 )2+ 对象来制作复杂报表的原理, 以及通过 )2+ 完成一个动态报表任务的具 体过程, 并给出了具体的实现方法。 关键词 )* && )2+ +,-./01 3456 复杂报表
%&$’()& "*+,’("$-&. %&,*%-/ !($ !" && $0. !#$
(Z)报表表头
7#(1J&*1’,"G? 7#(1J&O9’&? -1&G? ;&&X-1&G > G,;&&XL91’!"#$%&’( ‘从设置页眉页脚转换到正文 ;&2&#(1"’? 83A&8&Y( (&Y(: > 4射击训练成绩表4 式改为 “标题 H” ;&2&#(1"’? O9+9<+9AB0"+%9( ? 721<’%&’( > G,721<’O9+9<+9AB.&’(&+ ‘表头文字居中 ;&2&#(1"’? 83A&O9+9<+9AB ;&2&#(1"’? 0"’( ? ;1[& > HN ‘回车, 设置下一段落 ‘设置字体为黑体 ‘输出文字 ‘设置字体大小为四号 “黑体” ;&2&#(1"’? 0"’( ? C9%& > ;&2&#(1"’? 83A& 8&Y( (&Y(: > 44 ‘设置表头文字 ‘将表头文字样 (4标题 H4) ;&2&#(1"’? ;(32& > 7#(1J&!"#$%&’( ? ;(32&)

基于VB和WORD的报表设计及打印

基于VB和WORD的报表设计及打印

_ !
w dCe l l k= l
psii yt n s egoga ap ai otng Ss m ad o eoil pi tn i n o e m l c l o c
Do W hi No s 0. l e t r l EOF
‘ 对
和皮尺相比 ,将 G ’ I s这一先进空间测量技 术应用 在野外 区调 地 质填 图中 ,不仅 能 够快速 而高效地确定 地质点 的精 确坐标 ,
■: ■ = : _ l
称面性含ci 开:田. 为对文象,作s对 ., 象个征u器m个二 阿 的 档名所uc壕:嚣: 一更者 始对・以.一: 属例属 有从就1 ~ 瑟的对行Iae I蠹^ 内一象 D]0 ,: 性如性 0象L l : 容个的 n实n ; 个改该 首的后 …n : 是,对 先l创 誊 . 方 包 e … 椿 等特特 n例l … 。或,的Dj 要 一 在B对 ta象 Vc一 二然 sl 都中 j 建 口 簋 h
=w d l Ce l
a p o d. ee to M o e g t Unt p w r S l i n. v Ri h i : c
4Gs P辅助地质填图与传统地质填图
方法比较
与常规地 质填图常用的工具一一 罗盘
参考文献 r
。 … D oh A i o c nt t l l in . nn d t O h Gb x t t u i e o r o a
wd el Cl
w dCe l l
‘ 向右移动 一格
a p o d. l to M o e g t Un t p w r S e i n. v Ri h i : e c
a p o d. l t n. o e g t Unt p w r S e i M v Ri h i : e c o

利用VBA实现自动打印报表

利用VBA实现自动打印报表

利用VBA实现自动打印报表自动化报表打印是许多企业和机构所面临的一个重要任务。

为了提高工作效率和准确性,利用VBA(Visual Basic for Applications)编程语言可以实现报表的自动打印和批量处理。

本文将介绍如何使用VBA编写自动打印报表的程序。

一、编写VBA代码前的准备工作在开始编写VBA代码之前,我们需要确保计算机已安装Microsoft Office 套件,并打开需要进行自动打印报表的Excel文件。

在Excel文件中,我们需要确保报表数据已准备好,并已按照需要的样式进行整理。

二、进入VBA编辑器在Excel文件中,按下“Alt”和“F11”键,即可打开VBA编辑器界面。

在左侧的项目窗格中,双击需要编写代码的工作表(Sheet)或工作簿(Workbook)。

三、编写VBA代码1. 设置打印区域:在VBA编辑器中的代码窗格中,输入以下代码:```vbaSub SetPrintArea()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet1") '替换为需要打印的工作表名With ws.PageSetup.PrintArea = .UsedRange.AddressEnd WithEnd Sub```上述代码中,“Sheet1”是需要打印的工作表名称,你可以根据实际情况进行替换。

2. 自动打印报表:在VBA编辑器中的代码窗格中,输入以下代码:```vbaSub AutoPrint()Dim ws As WorksheetDim LastRow As LongDim i As LongSet ws = ThisWorkbook.Worksheets("Sheet1") '替换为需要打印的工作表名LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).RowWith wsFor i = 1 To LastRowIf .Cells(i, 1).Value <> "" Then.PrintOut '直接打印当前工作表End IfNext iEnd WithEnd Sub```上述代码中,“Sheet1”是需要打印的工作表名称,请根据实际情况进行替换。

VB编程中的报表和打印

VB编程中的报表和打印

VB编程中的报表和打印
蒋铁海
【期刊名称】《电脑知识与技术-经验技巧》
【年(卷),期】2003(000)029
【摘要】报表和打印是管理信息系统(MIS)开发中非常重要的一个环节。

现在,很多人用VB来开发MIS。

可是,几乎所有的VB教科书和参考书都没有介绍这方面的内容。

所以,本文就来讨论这方面的内容。

在VB编程中,报表和打印的主要方法有:把数据库记录输出到文本框、向Excel传递数据、利用Data Report、利用水晶报表等第三方控件。

限于篇幅.本文只介绍前面三种方法。

【总页数】3页(P47-49)
【作者】蒋铁海
【作者单位】无
【正文语种】中文
【中图分类】TP3
【相关文献】
1.在VFP报表打印中如何控制每页打印的记录数 [J], 何红玲;
2.关于操作系统升级导致VB程序中自定义报表格式无法打印问题的研究解决 [J], 李启华
3.在VB编程中用Excel打印报表的方法 [J], 缪仲翠;张宝霞
4.管理信息化中水晶报表的打印与精确打印的实现 [J], 艾灵仙
5.用VB编程实现非规范报表的打印 [J], 周旺基
因版权原因,仅展示原文概要,查看原文内容请购买。

VB导出Excel报表

VB导出Excel报表

VB导出Excel报表VB 是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。

因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。

但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。

一、 VB读写EXCEL表:能获取到表的行数的代码:edRange.Rows.CountVB本身提自动化功能可以读写EXCEL表,其方法如下:1、在工程中引用Microsoft Excel类型库:从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。

表示在工程中要引用EXCEL类型库。

2、在通用对象的声明过程中定义EXCEL对象:Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkBookDim xlSheet As Excel.Worksheet3、在程序中操作EXCEL表常用命令:Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表xlSheet.Cells(row, col) =值 '给单元格(row,col)赋值xlSheet.PrintOut '打印工作表xlBook.Close (True) '关闭工作簿xlApp.Quit '结束EXCEL对象Set xlApp = Nothing '释放xlApp对象xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。

VB调用EXCEL实现报表打印功能

VB调用EXCEL实现报表打印功能

VB调用EXCEL实现报表打印功能
刘永志;陈学煌;段新文
【期刊名称】《甘肃科技》
【年(卷),期】2005(21)7
【摘要】Visual Basic(简称VB)是设计Windows应用程序强有力的开发工具, Excel是目前使用最广泛的办公应用软件之一,它具有强大的报表打印、数学分析与计算功能.由于Excel的应用程序对象是外部可创建的对象,所以能从VB应用程序内部来程序化操纵Excel.本文结合我们的开发实例和体会,谈谈如何在VB6.0应用程序中调用Exce1实现报表打印功能,供大家参考.
【总页数】3页(P83-85)
【作者】刘永志;陈学煌;段新文
【作者单位】青海师范大学物理系,青海,西宁,810008;青海师范大学物理系,青海,西宁,810008;青海师范大学物理系,青海,西宁,810008
【正文语种】中文
【中图分类】TP334;F721.2
【相关文献】
1.VB调用EXCEL实现报表打印功能 [J], 盛晓蕾;刘晓梅;张玉军
2.基于VB/Excel的数据报表生成及打印功能实现方法 [J], 杨晓春;丁一
3.利用地址调用在Excel中实现报表打印功能 [J], 香丽芸
4.巧用VB调用Excel实现复杂报表设计与打印 [J], 畅育超
5.VB与EXCEL共享数据实现报表打印功能的初探 [J], 黄春华
因版权原因,仅展示原文概要,查看原文内容请购买。

VB利用DataReport做报表详解

VB利用DataReport做报表详解

VB利用Da‎t aRepo‎r t做报表首先介绍一下‎D a taRe‎p ort对象‎的几个常用属‎性。

一是Data‎S ource‎,用于设置一个‎数据源,通过该数据源,数据使用者被‎绑定到一个数‎据库;二是Data‎M ember‎,从DataS‎o urce提‎供的几个数据‎成员中设置一个特定的‎数据成员;三是Left‎M argin‎、RightM‎a rgin、TopMar‎g in、Bottom ‎M a rgin‎等,用于指定报表的左右上‎下的页边距;四是Sect‎i ons,即DataR‎e port的‎报表标头、页标头、细节、页脚注、报表脚注5个区‎域,如果加上分组‎(可以有多层分‎组),则增加一对区‎域,即分组标头、分组脚注。

其中DataS‎o urce一‎般是一个数据‎环境或是AD‎O DB.Connec‎t ion类型‎的变量,而DataM‎e mber则‎对应数据环境中的Com‎m and或是‎A D ODB.Record‎S et类型的‎变量,推荐使用数据‎环境及Com‎mand,页边界大家肯‎定都很清楚,下面我主要介‎绍以下Sec‎t ions,这也是Dat‎a Repor‎t的精髓所在‎。

Sectio‎ns是一个集‎合,您可以为每一‎个S ecti‎o n指定名称‎,也可以用其缺‎省的索引,从上到下依次为1、2…。

每个Sect‎i on均有H‎e ight和‎V i sibl‎e属性,您可以在一定‎条件下使一个‎S e ctio‎n不可见。

在Secti‎o n中可以放‎置各种报表控‎件,其中RptL‎a bel、RptIma‎g e、RptSha ‎p e和Rpt‎L ine可以‎放在任意的Sec‎t ion中,用于输出各种‎文字、图形及表格线‎;R ptTex‎t Box只能‎放在细节中,一般用于绑定输出Dat‎a Memeb‎e r提供的数‎据字段;RptFun‎c tion只‎能被放置在分‎组注脚中,用于输出使用‎各种内置函数计算出‎的合计、最大值、最小值、平均值、记数等等。

基于VB和WORD的报表设计及打印_栾亚华

基于VB和WORD的报表设计及打印_栾亚华
四、应用实例
本例子为开发固井投标计算机辅助系 统中打印标书其中一部分固井设备的完成 情况,首先建立一个固井设备标书模板 如下。模板文件名为 " 固井设备选择. doc"。
Private appword As Word. Application ‘定义一个 Word 应用
bl_wjm = " 固井设备选择.doc" appword.Documents.Open (App.Path + "\" + "bgmb" + "\" + " 固井设备选 择.doc") ‘打开模板文件
参考文献 [1] Dixonth. An introduction to the Global positioningS ystema nds omeg eologicala pplication [J]. Reviews of Geophys, 1991, 29: 249 ̄276. [2] 江在森, 马宗晋, 牛安福等. GPS 技术应用于中国地壳运动研究的方法及 初步结果[J]. 地学前缘. 2003, 10(1): 71 ̄79. [3] 吝全奎. GPS测量技术在滑坡监测中 的应用[J]. 西北水电. 2002, 2: 32 ̄33. [4] 冯仲科, 张志良, 郭学林. GPS基 本原理及其在水土保持工作中的应用[J]. 中国水土保持. 1999, 10: 36 ̄37. [5] 伍志刚,黄艳梅. 用 GPS 系统进行土 石坝变形监测[J]. 中国地质灾害与防治 学报. 1998, 9(2): 148 ̄154. [6] 陈清礼. 手持式GPS接收机在电法勘 探中的应用[J]. 石油物探. 1998, 37 (4): 128 ̄133. [7] 雷迎春. GPS实时动态测量技术在山 区地震勘探中的应用研究[J]. 西南交通 大学学报. 1999, 34(5): 565 ̄570. [8] 全立新. 手持GPS在铁路勘测中的应 用[J]. 铁路勘查. 2004, 3: 37 ̄42.

VB中多功能报表的实现方法

VB中多功能报表的实现方法

VB中多功能报表的实现方法一、前言VB中开发数据库系统,报表的打印是其中最重要的也是必须常用的功能模块这一。

按照报表实现的方法大至可分为三类:第1类是较原始的方法,直接控制打印机对象用Printer进行画线和打印;第2类是使用控件。

第3类是将需要打印的报表保存为其它应用程序可以读取的格式,或直接输入到其它程序,利用其强大的打印功能实行打印操作。

详细介绍:Data Report是VB自带的控件,使用Data report的情况大多数采用数据绑定的模式,也就是将此控件与数据库的数据表绑定起来以便可以不用编写代码就轻松完成报表的设计。

正因为Data Report大多是采用数据绑定模式,所以很难实现,内容较多格式复杂的报表。

Crystal Report就是人们常说的水晶报表,它是第三方控件是Seagate公司出品的报表打印浏览工具,在其8.0以上版本的功能就非常强大,控制灵活,堪称是为经典的报表设计工具。

它的不足之处就是体积较大,并且是以商业为目的而开发的,价格比较昂贵。

Active Report是Data Dynamic公司出品的优秀打印控件。

功能完备,控制灵活。

虽然和水晶报表相比,名气不那么大,甚至有很多人不知道它的存在,但是它在.net报表开发中表现十分出色。

使用外部工具实现报表打印,是指用VBA调用一些外部软件解决打印问题,其中office中的word的excel中的打印是常被借用到的。

这种方法的好处是控制十分简单,打印功能十分强大,不需要写打印的代码。

但它有一个唯一的缺点就是在用它之前必须安装这类软件,而且给人感觉总是在用其它人的东西。

使用Printer对象编程进行打印,最大的问题是就是要经常计算坐标,需要考虑很多琐碎的问题,代码量比较大,实现的打印预览功能简单。

优点是控制灵活,且打印效果比较好,在实应用中,对于一些灵活度较高,功能复杂的报表使用该方法是比较合适的。

本文也主要介绍了这种方法的实现过程。

VB6.0控制EXCEL进行报表设计及打印!

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利用DataReport做报表详解

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实现复杂报表的设计

用VB实现复杂报表的设计

用VB实现复杂报表的设计科技信息2012年第33期SCIENCE &TECHNOLOGY INFORMATION 报表在各行各业中广泛应用,是信息浏览、分析和打印的有力工具,它是信息集中处理的重要手段。

常见的报表就是用表格、图表等格式来动态显示数据。

报表的主要特点是数据动态化,格式多样化,并且实现报表数据和报表格式的完全分离,用户可以只修改数据,或者只修改格式,使用方便,灵活。

目前,国内外的报表系统种类繁多,功能界面也各具特色,国外的高端报表系统,国内的传统报表系统,都有各自的优缺点,在实际工作中应该根据实际需要选择合适的报表系统。

利用传统的报表系统制作报表维护量较大,一个需求对应一个报表文件,不同的组合则要求制作大量的报表文件,这样就使得开发过程变得极为繁琐,并难以实现用户的不同需求。

在设计复杂数据源的报表时,有时需要人工来转换数据格式,有时则要编写大量代码来将多个数据源转化为一个数据源再使用,有时又使用拼接子报表的方式来实现,但均未能从根本上解决问题,最终严重影响了报表的设计和使用效率。

因此如何快速制作复杂的数据源报表,减轻设计开发的工作量,已经成为报表系统开发的首要问题。

目前,我国的报表系统设计主要是使用Java 和Visual C++设计来实现的传统报表系统,传统报表系统一般是指一些主要以条带式设计为基础的开源软件以及国内的一些仿制产品。

这些报表系统的数学模型都是基于SQL /OLAP 理论设计的,虽然在不断地改进,但处理方案并没有本质的变化,因此无法满足国内复杂报表的制作需求。

目前最常见的报表工具有Excel ,UniversalForms ,Formula One等,国内常见的工具有润乾报表、帆表(FineReport)等。

对这些报表工具的比较和研究,有助于我们完成更好的报表工具的设计。

Excel 是历史最悠久的电子表格程序之一,功能强大,方便好用,后来出现的许多Windows 报表系统都受其影响,甚至在功能或界面都有所模仿。

VB报表打印

VB报表打印

VB在打印中的应用我是个80后,当时接触的编程语音,第一个是basic,第二个是C语音,第三个是VB,当初看VB的时候,很清晰的记得Bill Gates介绍VB的一句话,使用VB,你可以最快的达到你想要的效果,学着学着,一眨眼,就十多年过去啦。

VB & SQL基本上,可以满足基本的要求,当然了,如果,你想要什么换皮肤,很大工作量,多线程之类功能,VB是很难做到的,而且插件是VB最痛的地方。

好了,说到这里,我介绍一下,我使用VB在打印上面的一些经验吧。

VB本身是带了一个设计器功能的,但里面的功能不敢恭维,不方便,功能小。

在网上找了一段时间,测试了很多插件,终于找到了一个叫ACReport的控件,有一个插件和一个注册文件,ACRptEngineX.ocx,注册ACReport 引擎.bat。

这个插件可以利用SQL数据库内容打印操作,或者自定义打印的内容。

下面介绍一下控件的安装:首先双击ACRptEngineX.ocx,进行安装,,注意这两个文件,必须放在和程序开发的文件一齐,安装完ACRptEngineX.ocx,然后双击,注册ACReport 引擎.bat进行注册,见到*.bat结尾的文件,大家都知道,会弹出command窗口,类似DOS环境的界面,看到这个界面,就知道,为什么两个文件都要和开发的程序放在一齐了。

安装成功后,打开程序主体软件,添加部件,选择ACRptEngineX Library ,会出现ACRptEngineX这个插件,好了,在窗体上一划,就出现。

现在介绍一下属性:属性里面没有什么好修改的地方,一般我会将visible设置为flase,隐藏控件。

好了,可以进入里面去慢慢设计啦!在VB里面调用ACRptEngineX,必须写命令,好吧,我来介绍以下命令的语法吧。

Dim UserNameS As String …定义字符串变量UserNamesUserNameS = "fadsfa"‟赋值ACRptEngine1.AddSysVariable "Userns", UserNameS …这个是在打印文件中添加一个字符串变量Userns,内容是变量UserNameS的内容ACRptEngine1.AddSysVariable "开票日期", Format(Date, "yyyy") & "年" & Format(Date, "mm") & "月" & Format(Date, "dd") & "日" …也可以直接写内容ACRptEngine1.Init …初始化sql1 = "select * from 发票打印where 用户编号= '" & userp & "' order by 卡号"Dim mrc As ADODB.Recordset ‟在使用这句语句的时候,必须在工程->引用,添加Microsoft ActiveX Data objects Recordset 2.8 librarySet mrc = ExecuteSQL(sql1)‟这个函数,是我自己写的,后面补上代码,大家可以自己写,就是一般的SQL操作,add, delete,rename之类的。

Visual Basic报表打印技术

Visual Basic报表打印技术

报表打印技术1.数据报表设计器数据报表设计器(Microsoft Data Report designer)是一个多功能的报表生成器,以创建联合分层结构报表的能力为特色。

同数据源(如数据环境设计器(Data Environment designer))一起使用,可以从几个不同的相关表创建报表。

除创建可打印报表之外,也可以将报表导出到HTML货文本文件中。

数据报表设计器组成对象Data Report对象与Visual Basic窗体类似,Data Report对象同时具有一个可视的设计器和一个代码模块。

可以使用设计器创建报表的格局。

也可以向设计器的代码模块添加代码,以采用编程方式调整设计器中包含的控件或部分的格式。

Section对象代表数据报表设计器的一个部分。

可以使用对象及其属性在报表生成之前对其进行动态重新配置。

Data Report控件仅包含可在数据报表设计器上工作的特殊控件。

(注意:不能在数据报表设计器上使用Visual Basic的内部控件或任何ActiveX控件)。

这些控件可以在Visual Basic Toolbox中找到,但是它们被放置在一个独立的名为【数据报表】的选项卡上。

数据报表设计器的组成部分报表标头包含显示在一个报表开始处的文本,例如报表标题、作者或数据库名。

如果想把报表标头作为报表的第一页,设置它的ForcePageBreak 属性为rptPageBreakAfter.页标头包含在每一页顶部出现的信息,例如报表的标题。

分组标头/注脚包含数据报表的一个“重复”部分。

每一个分组标头与一个分组注脚相匹配。

标头和注脚对与数据环境设计器中的一个单独的Command对象相关联。

细节包含报表的最内部的“重复”部分(记录)。

详细部分与数据环境层次结构中最低层的Command对象相关联。

报表注脚包含报表结束处出现的文本,例如摘要信息或一个地址或联系人姓名。

报表注脚出现在最后一个页标头和页注脚之间。

基于VB和EXCEL的报表设计及打印

基于VB和EXCEL的报表设计及打印

基于VB和EXCEL的报表设计及打印作者:张翠萍来源:《电脑知识与技术》2011年第28期摘要:针对数据库应用系统中,报表处理的复杂性,提出了基于VB和EXCEL的报表设计及打印的解决方法,同时给出了实现这一功能的源代码。

实验证明,该方法使报表打印更方便和灵活。

关键词:VB;EXCEL;报表中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)28-6807-04Design and Printing of Data Report Based on VB and EXCELZHANG Cui-ping(School of Management, Fujian University of Traditional Chinese Medicine, Fuzhou 3501018, China)Abstract: In the database application system, report processing complexity, proposed based on VB and EXCEL report design and printing solutions, and gives the realization of the source code of this function. Experiments show that, this method makes statements Print more convenient and flexible.Key words: VB; EXCEL; report forms在数据库应用系统的设计过程中,报表的设计是很重要的一个步骤。

如果系统缺乏灵活适用的报表,那无疑会给用户带来不少的麻烦。

Visual Basic6.0是一门可视化语言,它是集应用程序开发、测试和查错功能于一体的集成式开发环境[1]。

它虽然不是专门的数据库语言,但它与其它的数据库语言有良好的兼容性和应用接口,可以方便地与Oracle,Access,SQL Server等多种数据库相连接,并存取其数据生成各种报表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用VB设计打印复杂报表 数据库管理系统的开发人员经常感叹的一个问题就是:我们中国人的 报表太复杂了!无规则、嵌套、斜线、交叉线等历来都是困挠开发人员的 最大问题。设计一个数据库固然有一定的技巧,设计数据操作也固然需要 一定的逻辑分析能力,但这些问题对一般的开发人员来说应该是不成为问 题的。用户可是不管你采用了多么灵活的算法多么方便的操作,他们最感 兴趣的是最后他们出来的报表如何漂亮,出报表的操作如何简单(最好是 一个按钮解决所有的问题)。笔者在开发数据库管理系统方面也稍有些经 验,从FoxPro、Delphi、PowerBuilder一直到现在用的VB,都遇到过设计打 印报表的问题,这些软件在设计报表的过程中可谓各有千秋,我这里不一 一细说。我在这里只向大家介绍一种我迄今为止最为满意的一种设计打印 报表的方法:利用VB操作EXCEL来生成复杂的报表。 一. 用VB创建外部EXCEL对象 大多数大型 ActiveX-enabled 应用程序和其它 ActiveX 部件,在它 们的对象层次中都提供了一个顶层外部可创建对象。该对象提供了对该层 次中其它对象的访问,并且还提供对整个应用程序起作用的方法和属性。 例如,每个 Microsoft Office 应用程序提供一个顶层 Application 对象。下面语句显示了对Microsoft Excel的 Application 对象的引用: Dim xlApp As Excel.Application Set xlApp = New Excel.Application 然后,可以用这些变量来访问在EXCEL应用程序中的从属对象、以及这 些对象的属性和方法。例如: Set xlApp = CreateObject("Excel.Application") ‘激活EXCEL应用程序 xlApp.Visible = False ‘隐藏EXCEL应用程序窗口 Set xlBook = xlApp.Workbooks.Open(strDestination) ‘打开工作簿,strDestination为一个EXCEL报表文件 Set xlSheet = xlBook.Worksheets(1) ‘设定工作表 二. 用EXCEL 97设计报表的模版文件 EXCEL 97是一个非常优秀的创建报表的工具。它提供的单元格任意合 并、拆分和绘图功能基本上能够满足设计所有复杂报表的需求。它对任意
一个单元格的格式随意控制,更为随心所欲地设计报表提供了强大的支 持。 根据用户提供的报表,我们可以很快在EXCEL里生成模版文件。所谓生 成模版文件只是为了满足用户多方面的需求而设计的。也是为了适合报表 以后的更改而做的一点预备工作。例如用户需要打印几百张职工履历表, 但其格式都是一致的,并且随着时间和实际情况的变化,表格格式有可能 需要改变,我们设计一个模版文件显然可以“以不变应万变”了。 生成工作表时我们应当记录下要填充内容的单元格编号和该单元格内 要填充的数据字段。这样形成一个表格,在写程序时一目了然。如: Cell(4,2) 职工姓名 Cell(6,6) 毕业学校 Cell(4,4) 职工性别 Cell(6,7) 所学专业 Cell(4,6) 职工民族 Cell(6,9) 工作时间 (表一) 在程序里我们当然不要对模版文件进行操作了,我们只需要对模版文 件的一个拷贝进行操作就行(这也是我们设计模版文件的一个目的和好 处)。如下面的例子: Dg strSource = App.Path & "\Excels\RegisterFee.xls" ‘RegisterFee.xls就是一个模版文件 strDestination = App.Path & "\Excels\Temp.xls" FileCopy strSource, strDestination ‘将模版文件拷贝到一个临时文件 三. 生成工作表内容 有了上述两步工作的铺垫,我们下面接着就只要根据(表一)的格式 给各单元格赋值了。如: datPrimaryRS.Recordset.MoveFirst ‘datPrimaryRS为Data控件 If IsNull(datPrimaryRS.Recordset!姓名) = False Then xlSheet.Cells(4, 2) = datPrimaryRS.Recordset!姓名 End If If IsNull(datPrimaryRS.Recordset!性别) = False Then xlSheet.Cells(4, 4) = datPrimaryRS.Recordset!性别 End If
If IsNull(datPrimaryRS.Recordset!民族) = False Then xlSheet.Cells(4, 6) = datPrimaryRS.Recordset!民族 End If ……………… 四. 打印报表 生成了工作表后,就可以对EXCEL发出打印指令了。 注意在执行打印操作之前应该对EXCEL临时文件执行一次保存操作,以 免在退出应用程序后EXCEL还提示用户是否保存已修改的文件,让用户觉得 莫名其妙。如下语句: xlBook.Save ‘保存文件 xlSheet.PrintOut ‘执行打印 xlApp.Quit ‘退出EXCEL 至此读者应该看到,我们设计的报表打印是通过EXCEL程序来后台实现 的。用户根本看不到具体过程,他们只看到一张张漂亮的报表轻易地被打 印出来了
相关文档
最新文档