当前位置:文档之家› 基于VB实现复杂报表设计

基于VB实现复杂报表设计

基于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 Statements

1引言

报表是人们在日常生活中对某类相关信息进行集中处理的重要手段,是企业信息化不可缺少的部分。报表在各行各业中应用广泛,是信息浏览、分析和打印的有力工具。传统报表系统均以国外简单报表模型为基础设计,不能适应复杂报表的开发。特别是在处理复杂数据源报表时,常常需要编写代码准备数据或进行子报表拼接才能实现。

1.1传统报表系统存在的问题

目前,国内外的报表系统种类繁多,功能界面各具特色,对这些报表系统的比较研究,有助于我们设计出更好的报表系统。国外的报表系统的技术都比较成熟,适合制作样式简单的报表,但一般都为高端产品,价格不菲,并且在处理具有强烈中国特色的报表时,国外产品不仅报表处理能力相当不适应,甚至某些技术也略显落后,例如部分产品不能稳定地在UNIX上部署,只能支持IE浏览器,统计图输出仍采用原始的CGl方式等。国内的传统报表系统更适合制作复杂的中国式报表,在报表设计和价格等方面国内报表系统也具有一些优势,但国内的报表系统在服务质量和产品本身的品质等方面还存在着一些不足和缺陷,有待进一步的改进和完善。无论是国外的高端报表系统,还是国内的传统报表系统,每一种报表系统都有各自的优点和缺点,都有各自擅长的领域,在实际工作中应该根据需要选择合适的报表系统。面对日益复杂的报表开发需求,尤其是复杂的中国式报表,这些报表系统或多或少都有些力不从心,其主要问题表现在以下三个方面:

(1) 复杂数据源的处理能力不足。报表需要从复杂的数据源或者多个不同类型的数据源中获得数据,获得的数据还可能需要统计,格式转换或其他处理,这些需求都是传统报表系统难于实现的。

(2) 报表的可维护性差。传统的报表系统生成报表的种类固定,使用方便,但很多软件系统无论在实施还是在维护阶段,报表都会进行频繁的新增和修改,而传统的报表系统缺乏无编码定制能力,系统扩展网难。一旦用户对报表样式的需求发生改变,就会给软件维护带来许多不必要的麻烦。

(3) 报表保存格式的通用性较差。报表保存格式不统一,保存格式理解困难,各种报表工具各自为政,报表模板无法兼容,行业也没有形成统一的标准,一旦用户选定了某一报表工具就意味着要一直使用。如果不幸选择失误,已经做的工作都要重新再来。

总之,利用传统的报表系统制作报表维护量相当大,一个需求对应一个报表文件,不同的组合要求制作大量的报表文件,使得开发过程变得极为繁琐,难以实现用户的需求。在设计复杂数据源的报表时,或者需要人工转换数据格式,或者要编写大量代码将多个数据源运算成为一个数据源再使用,或者使用拼接子报表的方式来实现,但都没有从根本上解决问题,严重影响报表的设计和使用效率。因此如何快速制作符合多层结构特点的复杂数据源报表,减轻开发工作量,已经成为报表系统开发的重要问题。

在计算机出现之前,数据需要以纸制文件等形式保存,数据处理是手工进行的,报表的编制也是手工实现的。随着计算机的广泛应用,人们开始使用计算机及计算机软件实现数据处理,使用数据库管理系统来管理数据,使用应用程序来完成具体的业务操作,报表的编制也开始使用软件来实现。完成报表编制工作的软件程序称为报表系统或者报表工具。报表系统的产生改变了报表编制的流程、方法以及编制手段。

报表是信息管理系统中各种数据信息的最终输出结果,是其重要的组成部分。在信息管理系统的开发过程中,软件设计人员常常需要设计大量的报表,其中相当一部分报表的结构比较类似,需要软件设计人员逐一定义每一个报表的报表对象、数据模型、显示格式等属性,同时还可能对数据存储、导入和导出等操作带来诸多不便,这些繁琐的重复性工作常常花费软件设计人员、操作人员、维护人员大量的精力和时间,影响系统的开发、使用效率。同时,报表还是信息管理系统中变化性很强的部分。应用系统交付用户后,随着时间的推移,用户可能需要新的报表,报表的格式、报表的数据要求都有可能发生变化,用户的各种各样的报表要求,仅依靠应用系统预先提供的报表是很难实现的。

从报表系统的发展历史来看,在应用系统进入数据共享的时候,比较专业的报表系统或控件就出现了,并且一直沿用至今。这些工具的理论模型和需求都出自于国外的需求,这种模型和需求比较符合国外用户的使用习惯,比较适合设计制作样式非常规整,没有表格线,没有斜线表头和分层分组的简单报表。然而中国人的报表习惯与国外用户存在很大差别,中国的报表也比国外的报表复杂许多。报表是由“报’’和“表"两部分组成,“报”指数据的汇总统计,即将数据从数据库中取出按一定规则运算统计后排列。“表”则指格式,数据需要放在单元格中,才能清楚定位,体现数据之间的层次与对应关系。目前市场上的报表系统大致分为两类,一类基本上能把数据库的数据取出来运算排列制作出动态的报表。但其格式设计功能不好,一般是采用控件拖放的方式编辑报表,靠一个个矩形边线重合对齐绘制表格,一条直线要拼接多条线段,而且还和分辨率相关,打印出来不整齐。还有一类仿制Excel

的产品,合并单元格、添加边框非常方便,可以快捷地设计出一个复杂格式的报表。但它们的缺点是数据处理能力太弱,除了简单的格内运算外,与数据库打交道的过滤、分组等统计运算都需要编程实现。

中国报表最困难的地方是数据统计。中国报表具有的多数据源、整表规则分片、不完全划分、跨行组运算及独立格间运算、行列对称等特征,是传统报表系统无法满足的,常常导致要求编写代码准备数据或拼接子报表才能完成一个复杂报表的制作。表样格式复杂也是中国报表比较麻烦的地方,中国报表均要求有整齐的表格线,多层表头层次分明。业内有名的报表系统一般采用控件式拖拽的绘制方案,制作表格非常烦琐,且还与分辨率相关,屏幕与打印不一致,而中国报表对打印样式要求向来很高。中国报表还会有填写的需求,前端需要支持各种填写控制,如编辑风格、自动计算、合法性校验等;填写好的数据能够方便地写入数据库以进行下一步的统计汇总。而很多报表软件不支持填写能力,一般的填报解决方案都不能自动处理数据入库的问题,导致相应的编程工作量仍然很大。

1.2国内外研究现状

大部分通用软件领域,国外产品都要相对优秀。早期的报表系统软件是由国外的公司和研究机构设计实现的,适合制作样式非常规整,没有格线,表头简单的国外报表。国外的报表系统都具有各自的原创技术,又经过了多年的发展和完善,其技术相对都比较成熟,但是国外的报表系统在报表样式绘制方面的能力比较弱,在价格上一般都比较昂贵,所以经常被称作高端产品。例如挪威QuSoR公司专门为Delphi编写的QuickRepon报表组件,使用QuickReport可以迅速设计出符合西方人习惯的报表,从功能和设计上来说,不失为一个较好的报表设计工具,但对于报表设计的灵活性,及在程序编译完毕后用户对报表的可修改性等方面还远远不能满足用户的需要。

国外典型报表系统中,著名的有Excel,Cwstal Report,Fo彻ula One等,随着.NET 技术的不断发展,近年来国外已经出现了一些基于.NET环境的报表系统,例如MicrosoR

的Reporting Services技术,Ⅵsual Studio 2005集成的报表解决方案,C搿stal Reports f1叫Visual Studio.NET,Developer Express公司开发的X仃aReports报表组件和ComponentOne公司开发的C 1 Reports报表组件等等。其中MicrosoR的Reportillg Services 技术是基于服务器的报表解决方案,可以用来创建和管理包含关系数据源和多维数据源中的数据的表格、矩阵、图形和自由格式的报表,并可通过网络连接来查看和管理报表。Reporting Services在报表的制作、分发和报表数据的安全性等方面都有很好的表现,功能比较全面,但是需要微软众多企业级解决方案的支持,并且价格相当昂贵。

国内的报表系统主要是使用Java和Visual C++设计实现的传统报表系统,传统报表系统是指一些主要以条带式设计为基础的开源软件以及国内的一些仿制产品。这些报表系统的数学模型都是基于SQL/OLAP理论设计的,虽然不断地进行改进,但根本处理方案并没有本质的变化,远远不能满足国内复杂报表的制作需求。近年来不断推出的新版本以及新报表系统都只是在技术上改进,如从C/S移植到B/S、支持JaVa等,而理论模型仍是原来的传统方式,所以仍然算是传统报表系统。传统报表系统最显著的特征是主编辑画面呈条带状,以模拟SQL中的seIect和Group运算;大部分报表系统采用繁琐的拖拽式编辑(有个别报表系统开始采用方便的表格式);交叉表要采用专门的类OLAP模型处理,样式和运算都比较死板。

国内比较有名的报表系统基本上都是Java报表系统,主要有用友华表(Cell)和润乾报表等。润乾报表是一个功能非常强大的纯Java报表产品,各方面都很出色,其新一代报表模型采用了革命性的多源分片、不规则分组、动态格间运算、行列对称等技术,能设计实现很多原来传统报表系统中很复杂,甚至很难实现的报表。但是由于润乾报表设计方式完全依赖手写表达式,对于没有编程基础的普通用户来说,学习使用润乾报表的难度较大。

1.3常见的典型报表工具及其介绍

目前常见的典型报表工具中,著名的有Excel,UniversalForms,Oracle9i Reports,Formula One等,国内也推出了许多报表工具。对现有报表工具的比较研究,有助于我们设计出更好的报表工具。

1.3.1 Excel

Excel是历史悠久的电子表格程序之一,功能强大。许多后来出现的Windows报表系统均受其影响,甚至在功能和界面上加以模仿。Excel具有如下特点:

(1)可视化界面:Excel提供工作簿和工作表,一个工作簿包括若干张工作表,一张工作表即是一张报表。每张工作表由若干单元格组成,每个单元格可以单独操纵:设计单元格的数据格式,定义数据公式等。对报表作出修改后,可以立即看到修改效果;

(2)丰富的格式支持:Excel报表中可以包括文字,数字,图形等多种内容;提供文字的字体大小、颜色,数字的显示格式等格式控制;

(3)丰富的数据处理功能:提供多种数据处理函数:数据库函数、日期与时间函数、工程函数、财务函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数;

(4)支持多种数据源,可访问的数据库包括:

Microsoft SQL Server OLAP Services、

Microsoft Access 2000、

dBASE、Microsoft FoxPro、

Microsofl Excel、

Oracle、Paradox、

SQL Server以及文本文件数据库,此外,还可以使用ODBC驱动程序或数据源驱动程序以获取其他类型数据库中的信息。

(5)WEB发布支持

Excel支持将报表放置到Web页上,用户不需要在计算机上安装Excel就可以访问报表。

(6)支持交互式报表

如果希望用户可以与报表中的数据进行交互,则可以将数据设置为交互式。在交互式报表中,用户可以进行以下操作:筛选,输入新值以进行计算或汇总和分析数据。

(7)提供编程环境

EXcel提供了Visual Basic for Applications(VBA)和Ⅵsual Basic编程环境,同时支持OLE。用户可以使用VBA编写自定义函数,实现对已有数据处理函数库

的扩充,满足实际需要,但有时编程相对比较复杂。

1.3.2 Crystal Report

Crystal Report是Crystal Decisions公司推出的比较著名的报表系统,使用Crystal Report是一种大型报表系统常用和推荐的解决方案。它能够实现对数据的检索、分组、分析,并把分析结果以表格的方式展现给用户,为用户解决现实中各种各样的商业问题。与其他的报表创建和分析软件相比,Crystal Report软件具有稳定性、可伸缩性以及应用平台广泛等优点。Crystal Report不仅有功能强大的Java版的Crystal Report报表引擎,而且也有直接集成到了Visual Studio开发环境当中来使用的Crystal Report for visual Studio.NET,开发人员可以从任何项目访问报表编辑器,完成显示、统计、分组和插入图表等多种操作,它也允许和各种主要的Java集成开发环境集成在一起。Crystal Report主要具备以下一些功能:

(1)形式多样的内容创建:允许用户添加图表、下拉式菜单、警示、参数提示以及超链接,并将报表转化为引入注目的交互式文件或Web内容,使用标志、图画、形状和色彩来定制报表。而且内置了广泛的公式,使得开发人员可以对于报表格式、综合业务逻辑和数据进行全面的控制;

(2)支持多数据源:可以直接编辑SQL,以便不受限制地控制数据库连接。数据源包括XML,OLAP或其它相关的内容。通过在Microsoft Excel和Access中的Crystal Reports Add-in功能,用户可以利用现有的Microsoft数据创建报表;

(3)提供分析工具:Crystal Report提供趋势判断、促进入际关系和保留重要论据的工具。另外附属报表、公式、总计运算,以及可自定义的交叉标签提供了更进一步的分析能力;

(4)支持Web应用:利用Web的权限设置功能,Crystal Report让所有在不同平台和地点的用户都可以访问报表。Crystal Report与Report Streaming技术相结合,以最优化处理报表在线需求(即时)和Web报表排序次序的效能。

Crystal Report帮助开发者做出了大量的报表,它的功能也在不断地加强。但是,开发人员也经历了很多时刻,不仅仅是费劲地去画格子,摆位置,更发现很多报表,需要先做一个复杂的视图,甚至写程序准备数据;发现许多报表运行起来的效率会很低;发现有些报表很难做出来。另外,Crystal Report for Visual Studio.NET未注册版本功能可用。在此之后的Save Option将不能使用。为了使用全部的功能,你不得不为之付费。

1.3.3 Fomula One

它是一个OLE ActiveX报表控制引擎,支持Excel电子表格的编辑与运行,Formuloone6以前为基于C/S环境,其后的版本(如Repert,SPreodsheet等)主要面向B/S环境。胡于进等(2004)在它的基础上设计新报表组件FIBOOKREPORT,其主要具有以下特点:

(1)可以嵌入到应用程序中提供报表功能,也可以独立使用;

(2)支持HTML格式输出:它包括一组API,能够将选定范围的表格输出到一个HTML文件中;

(3)内置计算器:具有强大的电子表格功能,且与Excel兼容;

(4)编程支持:Formula One包含了广泛而丰富的API函数,帮助开发者灵活自如地控制电子表格的制作,为程序员提供了便利的电子表格设计工具箱。

虽然,目前通用报表有了较大的发展,但是在实际应用中,既开源免费或价格便宜,又能满足用户要求通用报表系统能够简单灵活地实现连接数据源、设定报表样式等的报表很少,市场上的报表系统存在以下不足:

1.工作量大:企业的需求是动态、复杂、多变的。目前的报表系统中,出于数据的显示或打印格式都是由程序员根据客户需要直接在程序制作期间生成的。如果报表的科目稍有变化,都需重新编译程序发布,加重了程序员的维护工作量;

2。缺乏灵活性:目前的通用报表系统是不可以自定义取数据源与取函数或公式,而只能选择系统提供的有限的取数函数与公式来自定义报表,如果需要实现对这些取数函数或公式以外的数据资源的访问就十分不方便;

3.未实现跨平台连接多个数据源:目前的报表大部分只能实现连接单一目标数据源,未能实现跨平台连接多个数据源,即不能实现异构数据库。例如Excel,水晶报表等都只能连接多种数据源,但不能实现同时。

2在VB中利用word实现复杂报表

在数据库应用系统中开发word 文档自动生成程序,可以实现以下功能:文档自动生成;自动添加页眉页脚;目录自动生成;格式自动调整;文档格式大众化,便于传输与交流;对大文档、复杂表格处理具有明显优势:可依用户要求智能化地生成风格各异的文档等等。实践证明,在数据库应用系统开发中,用word文档自动生成程序取代传统的数据库报表输出,使得开发的数据库应用系统的报表处理大大改观,优点突出,很值得推广,本文就是基于word实现复杂报表的设计。

2.1 VB中Word对象模型

在VB调用Word之前,首先要引进对象库,然后才能以Word为对象编程。引进Word

对象库的方法是:在编程环境下,选择“工程”菜单,选中“引用”项,打开“引用”对话框,在“可用的引用”列表中选中“Microsoft Word11.0 Object Library”,即可在Word 中引进对象库。

Visual Basic支持的Word对象集合直接对应于Microsoft Word中的各个元素。例如,Document对象代表了一个打开的文档,Bookmark对象代表了一个文档中的书签,而Selection对象则代表了在一个文档窗口窗格中的选定内容。在Word中,每一类元素(文档、表格、段落、书签、域等等)都可以用Visual Basic的对象来表示。要在Word中自动执行任务,可以使用这些对象的方法和属性。

主要Word对象有以下6个:

(1)Application对象

当用户打开一个Word文档,也创建了一个Application 对象,它表示运行的应用程序。也可以把Application对象看成应用程序对象的容器,Application对象中包容了Word 的菜单栏、工具栏、Word命令等的相应对象以及文件对象等。菜单栏对象中包容了所有的菜单及菜单命令。工具栏对象中包容了各种命令按钮。文件对象中则包容了所有的文字、表格、图像等文件组成部分的相应对象。

用户可以利用Application对象的属性或方法来控制或返回应用程序范围内的特性、控制Word窗口的外观或调整Word对象模型的其它方面。例如

Application.PrintPreview=True 将从视图状态切换到打印预览状态。

Application对象的属性也可以访问处于对象层次中较低级的对象,比如Windows集合(代表了当前所有打开的窗口)和Documents集合(代表了当前所有打开的文档)。用户可以通过一些属性,从对象层次中最高一级的Application 对象向下访问到较低级的对象(Document对象、Window对象、Selection对象等)。

(2)Document对象

当用户在Word中打开或创建一个文件的同时,也创建了一个Document对象。在Word 中,Document对象表示一个打开的文档,而且所有的Document对象都是Application对象的Documents集合的成员。几乎所有的操作都要调用Document对象本身或其内容,用户可以使用Document对象或Documents 集合的属性或方法来打开、创建、保存、启动或者关闭文件。

每一个Document对象都具有Characters、Words、Sentences和Paragraphs四个集合。可以使用语法Documents(index)来返回作为一个Document对象的任何打开的文档,index 是该文件的名字或索引号。但是当用户添加或关闭多个文档时,某个特定文件的索引号会发生改变,所以最好使用文档的名字来对Documents集合中的Document对象进行索引。

要打开一个文档,可以使用open方法;要创建一个新文档,可以对Documents应用Add 方法;要保存文档可以使用SaveAS方法或是Save方法;要关闭一个文件,可以对Document 对象应用Close方法。可以使用Add方法来向文件中添加诸如表格、备注、注脚这样的对象。

要使一个文档成为活动文档,可以对Document应用Active方法启动它。具有焦点的文档称为活动文档,由Active-Document属性表示。使用Open方法打开的文档,或者使用Add方法创建的文档,都将成为用ActiveDocument属性表示的当前活动文档。

(3)Range对象

Range对象表示文件中的一块连续的区域。每一个Range对象都由一个起始字符位置和一个终止字符位置定义。这个连续范围可以小到只是一个插入点,大可到整个文档。在同一个文档中也可以定义多个Range对象。Range对象中的字符包含非打印字符,例如空格、回车符和段落标记。在确定Range对象后,就能够应用该对象的方法和属性来修改相应范围内的内容或格式。

可以通过使用Range方法在指定文档中创建一个Range对象。可以将Start和End参数设置为同一个数字,将创建一个不包含任何字符的Range,相当于一个插入点。也可以通过其它对象(例如Paragraph对象、Bookmark 对象、Character对象、Word对象、Sentences 对象或Selction对象)的Range属性来返回一个Range对象。

使用Range对象的Text属性可以返回或设置这个Range对象中的内容或格式。

可以使用SetRange方法来设置或重新定义一个已经存在的Range对象。也可通过使用Range对象的Start 属性或MoveStart方法指定或重新定义Range 开始的位置,或是使用Range对象的End属性或MoveEnd方法指定或重新定义Range结束的位置。可以使用Bookmark、Selection或Range对象的Start和End属性来指定Range方法的Start和End 参数。

(4)Selection对象

当用户想要自己的代码对选定内容做出响应或是改变选定内容,就可以通过Selection 对象来完成任务。Selection对象可以在Application对象,Window对象,Pane对象中使用。Selection对象就像在Word对话中交互式工作时的插入点或当前选项。所以Selection 对象可以收缩为插入点,也可以包括一个或几个字符和文件项目,甚至可以包括任何文档部分的内容。

用户可以在一个选定内容中控制操纵对象。

可以使用Selection属性来返回Selection对象,如果随同Application对象使用Selection属性,则该Selection对象表示活动的选定内容。如随同一个Windows对象或是Pane对象使用Selection属性,则返回一个在特定窗口或窗口窗格中Selection对象。

每个文件的每个窗口中都可以有Selection对象,但每个窗口中只能启动一个Selection对象,在任何时刻都只能有一个活动的Selection选项。

用户也可以通过MoveStart和MoveEnd方法,或者通过改变Selection对象的Start

属性及End 属性的值来移动或扩展选定内容。用户也可以通过GoToNext方法、GoToPrevious 方法或GoTo方法来移动选定内容。在一个文件窗口或窗格中只能有一个选定内容,因此用户也可以通过使用Select方法选择文档的另一个对象来移动选定内容。在使用Select方法之后,就可以使用Select属性返回一个Select对象。

(5)Find和Replacement对象

Find对象包含与“查找”和“替换”对话框(在“编辑”菜单中)里的选项有关的属性。可以使用Find和Replacement对象来查找并且替换文档中文字的特定范围。Replacement

对象表示查找-替换操作的替换条件。Replacement对象的属性和方法对应于“查找”和“替换”对话框(在“编辑”菜单中)里的选项。

Find对象可以在Selection对象或Range对象中使用(根据Find对象是从Selection 对象还是从Range对象返回的,查找操作也略有不同)。可以在Find对象中使用Replacement 对象。

如果是在Selection对象中使用Find对象,那么当找到符合选择条件的文本后选定内容将会改变。如果是在Range对象中使用Find对象,选定内容不会改变,但是当找到符合选择条件的文本时范围会被重新定义。

(6)Table、Column、Row、Cell对象

word对象模型包含了表格对象,也包含了表格中各种不同元素的对象。

软件调试流程图

VB设计报告

南京工程学院 课程设计说明书(论文)题目打字练习 课程名称VB语言课程设计 院(系、部、中心) 专业 班级 学生姓名 学号 设计地点图书馆基础教学机房 指导教师 设计起止时间:201x年x月x日至201x年x月x日 目录

一、设计任务 (3) 二、方法原理 (3) 三、总体设计思路 (3) 四、程序调试和解决问题 (4) 五、完善及存在的问题 (4) 六、收获体会 (4) 七、意见建议 (4) 八、示例截图 (5) 九、附录1(代码) (6) 十、附录2(主要参考资料) (10) 一、设计任务 1.题目介绍

在计算机及其他数码产品日益普及的今天,人们使用键盘应像用笔写字一样熟练。进行打字练习时熟悉键盘并提高打字速度的好方法。本体要求编制一个打字练习游戏程序,使用户在游戏过程中进行打字练习。 2.功能要求 (1)启动界面如图1 (2)选择难度和速度后,单击“开始”按钮,界面如图1。若选择简单,则落下字母;若选择复杂,单击开始后出现对话框,如图 2.单击确定,开始练习,落下单词。 (2)若用户在字符落到屏幕底部之前敲击了相应的键盘键,则该字符被“击中”然后消失。根据程序速度和难度的设置自动进行积分,实时分数时间正确率掉落个数显示在窗体的上部。 积分规则:正确击中一个字母或一个单词,加一分;反之,不得分,亦不扣分。(4)当游戏者单击“暂停”按钮时,程序停止运行,在单击“开始”按钮,程序继续运行;当单击“退出”按钮时,则弹出对话框(如截图示例3),单击“取消”按钮,程序继续运行,单击“确定”按钮,则弹出对话框(如截图4),此时对话框显示分数,单击“确定”按钮,退出程序。 (5)为了增加视觉效果,每个掉落的字符的颜色随机产生。 二、方法原理 根据题目要求,使用控件数组,用标签标题表示字符,键盘事件的处理判断打字正确与否,随机值的产生方法随机产生字符,用Timer控件属性反映时间、控制字符下落速度。 三、总体设计思路 首先在窗体上画出三个按钮标题分别为开始、暂停、退出。画六个标签分别表示已落字母个数、已花时间、得分与正确率。 画出一个含有五个元素的标签控制数组用以显示字符。 画出两个时间控件,一个用来返回已用时间,一个控制字符下落。 最后编写相关代码

[Excel图表]制作动态分析图表的三种方法

制作动态分析图表的三种方法 (文/ ExcelPro的图表博客) 动态图表是图表分析的较高级形式,一旦从静态图表跨入动态图表,则分析的效率和效果都会进入另一个境界,可以让用户进行交互式的比较分析。商业杂志上的图表都是静态图表,现在它们的在线杂志则经常提供交互式图表。作为分析人士,制作一个优秀的分析模型,必然不能缺少动态图表这个元素。 水晶易表比较适合于做动态图表,CX中可支持图表的切片、钻取等操作,如点击饼图的某个扇区、柱形图的某个柱子,可以让另外一个图表跟随变化。Excel中一般可以做到切片操作,钻取操作则难以做到,好像没有这种事件可以捕捉。好在是一般商业分析中,我们只需要做变化条件的切片操作就可以了。这篇日志就整理一下有关Excel动态图表的内容。 一、动态图表的做法 很多人觉得动态图表很高级、很神秘,其实它的制作原理也很简单,技巧只在于变化图表的数据源。Excel中常见的做法有3种。 1、辅助序列法。 这是最常用的办法,比较直观和容易理解。设置一个辅助数据区域,根据用户的操作选择,将目标数据从源数据区域引用到辅助数据区域,用辅助数据作图。当用户选择改变,辅助区域的数据随之变化,图表也就变化。

引用数据一般要用到几个函数,offset、index(+match)、Vlookup、choose等。这几个函数是excel的精髓之一,特别是Vlookup被称为查找函数之王,用得好可以完成很多分析任务,老外的书中有很多例子。 点这里查看上图的案例文件。 2、定义名称法。 与前述方法相比,省去辅助数据区域,直接用名称提供图表数据源。根据用户选择,将目标数据定义到名称中,用名称做图表的数据源。当用户选择改变,名称所指向的区域随之变化,图表也变化。 方法同前,一般使用offset函数。因需多一道脑筋,所以我一般用这种方法不多,今天暂不整理。 以上两种方法,如果需要详细了解,可参考这个帖子,snood版主整理的很好了,我也不啰嗦了。 3、图片引用法。 这种方法不多见,一般在人事管理应用中有用到,我把它用到图表的动态切换。 前两种方法都是通过切换同一个图表的数据源来实现图表的动态变化,这种方法则是通过引用不同的图表来实现动态图表,可以支持不同数据源、不同类型、不同图表格式的图表的动态切换。 关于这个方法说详细一点:

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对象的布局来设计报表。 3.DataReport控件 当一个新的数据报表设计器被添加到工程时,在窗体上控件箱出现“数据报表”和“General”(通用)选项卡,如图5-6-2所示。但在数据报表设计器上不能使用General的控件,即内部控件或ActiveX控件。数据报表选项卡中的控件仅包含可在数据报表设计器上工作的特殊控件。 图5-6-2

基于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 Statements

1引言 报表是人们在日常生活中对某类相关信息进行集中处理的重要手段,是企业信息化不可缺少的部分。报表在各行各业中应用广泛,是信息浏览、分析和打印的有力工具。传统报表系统均以国外简单报表模型为基础设计,不能适应复杂报表的开发。特别是在处理复杂数据源报表时,常常需要编写代码准备数据或进行子报表拼接才能实现。 1.1传统报表系统存在的问题 目前,国内外的报表系统种类繁多,功能界面各具特色,对这些报表系统的比较研究,有助于我们设计出更好的报表系统。国外的报表系统的技术都比较成熟,适合制作样式简单的报表,但一般都为高端产品,价格不菲,并且在处理具有强烈中国特色的报表时,国外产品不仅报表处理能力相当不适应,甚至某些技术也略显落后,例如部分产品不能稳定地在UNIX上部署,只能支持IE浏览器,统计图输出仍采用原始的CGl方式等。国内的传统报表系统更适合制作复杂的中国式报表,在报表设计和价格等方面国内报表系统也具有一些优势,但国内的报表系统在服务质量和产品本身的品质等方面还存在着一些不足和缺陷,有待进一步的改进和完善。无论是国外的高端报表系统,还是国内的传统报表系统,每一种报表系统都有各自的优点和缺点,都有各自擅长的领域,在实际工作中应该根据需要选择合适的报表系统。面对日益复杂的报表开发需求,尤其是复杂的中国式报表,这些报表系统或多或少都有些力不从心,其主要问题表现在以下三个方面: (1) 复杂数据源的处理能力不足。报表需要从复杂的数据源或者多个不同类型的数据源中获得数据,获得的数据还可能需要统计,格式转换或其他处理,这些需求都是传统报表系统难于实现的。 (2) 报表的可维护性差。传统的报表系统生成报表的种类固定,使用方便,但很多软件系统无论在实施还是在维护阶段,报表都会进行频繁的新增和修改,而传统的报表系统缺乏无编码定制能力,系统扩展网难。一旦用户对报表样式的需求发生改变,就会给软件维护带来许多不必要的麻烦。 (3) 报表保存格式的通用性较差。报表保存格式不统一,保存格式理解困难,各种报表工具各自为政,报表模板无法兼容,行业也没有形成统一的标准,一旦用户选定了某一报表工具就意味着要一直使用。如果不幸选择失误,已经做的工作都要重新再来。 总之,利用传统的报表系统制作报表维护量相当大,一个需求对应一个报表文件,不同的组合要求制作大量的报表文件,使得开发过程变得极为繁琐,难以实现用户的需求。在设计复杂数据源的报表时,或者需要人工转换数据格式,或者要编写大量代码将多个数据源运算成为一个数据源再使用,或者使用拼接子报表的方式来实现,但都没有从根本上解决问题,严重影响报表的设计和使用效率。因此如何快速制作符合多层结构特点的复杂数据源报表,减轻开发工作量,已经成为报表系统开发的重要问题。

html表格制作软件FineReport实例方案:采购部报表数据决策平台建设方案

案例企业介绍 福耀集团(全称福耀玻璃工业集团股份有限公司),1987年在中国福州注册成立,是一家专业生产汽车安全玻璃和工业技术玻璃的中外合资企业,也是名符其实的大型跨国工业集团。1993年,福耀集团股票在上海证券交易所挂牌,成为中国同行业首家上市公司,股票简称:福耀玻璃,股票代码600660。 福耀集团是国内最具规模、技术水平最高、出口量最大的汽车玻璃生产供应商,产品“FY”商标是中国汽车玻璃行业第一个“中国驰名商标”,自2004年起连续两届被授予“中国名牌产品”称号;福耀玻璃股票为上证红利指数样本股,于2009年被上海证券交易所授予“年度董事会奖”,并于2011年起,连续三年获颁“央视财经50指数”年度最佳成长性上市公司等等。福耀集团同时还是有评选以来连续三届的“中国最佳企业公民”、“2007CCTV年度最佳雇主”。 项目背景 随着福耀集团的生产规模扩张,伴随着福耀走向全球,全球范围采购越来越多。为支撑全球供应链管理,对于供应商的管理和采购过程的监控已经不局限于简单的交付以及价格的管理,目前采购及供应商管理各个环节的操作分别在不同的系统下进行,而各个数据源都独立存在,无法提供统一的数据支持;因此,为了实现对于数据分析以提供采购决策,建立报表数据决策体系成为必须。html5动态图表的功能性设计 权限管理 分级权限,按照管理层级+功能设置权限查询每一组报表 提报方式

1)主动查询:如封面设计,针对每个报表的查询和访问页面设计2)自动邮件发送,根据报表类型选择自动发送邮件,包括周期、接收对象,接受内容等。 浏览方式 web方式菜单,按钮选项。 报表系统的页面设计 1合同/订单审批时效 1.1每月合同/订单处理数量变化–>明细 1.2每月合同/订单处理结果 1.3各环节合同/订单处理时间(效率) 2横向/纵向价目表 2.1从物料角度对比不同供应商、制造部的各时期价格变化 2.2从供应商角度查询不同物料的变化趋势 2.3详细采购清单获取

vb报表分组

在VB中使用动态分组报表 在使用VB自带的报表过程中,我遇到了处理动态分组报表的问题。一般要使用分组报表要在VB中建立一个DataEnvironment,并在其中建立数据库联接和命令对象,在命令对象中设置分组字段,最后将这些分组字段加入到报表中。但是这种方法只能适应静态的数据源,当遇到数据表中的字段不固定,或数据表不能预先知道的情况时,这种方法就无能为力了。经过查阅各种资料,发现我们可以通过使用Data Shaping来动态创建分组信息。下面就详细介绍一下如何动态创建分组信息,并应用于VB报表。 要使用Data Shaping,程序必须使用ActiveX Data Object (ADO)连接数据库,解决问题的关键是使用Data Shaping的驱动程序代替通常使用的各种OLE DB的驱动程序,它的用法跟使用其它驱动程序类似,对于已有的数据访问代码不用作任何修改,只是简单的修改一下连接代码就可以支持Data Shaping了。具体做法如下: 将连接参数中的 Provider设置成"MSDataShape" 即 ConnectionString = "Provider=MSDataShape;Data Provider=通常的驱动程序;Data Source=…;其它的参数" 然后就可以和平常一样进行数据连接和各种数据操作了。如此连接的数据源出了具有用普通方法的所有特性以外,同时具有了我们即将使用的Data Shaping功能,下面就可以建立自己的分组信息了: 将用于打开记录集的SQL语句写成如下形式: SHAPE {select 字段1, 字段2, 字段3,…, 字段n from 现有的表} AS 新的名称1 COMPUTE新的名称1 AS新的名称2 BY 分组字段1, 分组字段2,…, 分组字段n 上面的语句中,需要注意的是分组字段必须同时在Select 中出现,否则运行时将报错。用该SQL语句打开的记录集中包含若干个字段,它们是:新的名称2、分组字段1-n。在使用时,将打开的记录集rs作为报表的DataSource,在报表的分组部分可以直接且只能使用

在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)对象:命令对象定义了从数据库连接中将取回什么数据的详细信息。命令对象可基于任何一个数据库对象(表、视图、存储过程或同义字)或是一个SQL 查询。 三、数据报表对象 数据报表设计器包括以下几个对象: 1. 数据报表(Data Report)对象:类似于Visual Basic表单,它包含一个可视化设计器和一个代码模块。设计器用来创建报表的布局,也可以往设计器的代码模块里添加代码,用程序对包含在设计器里的控件或区域进行控制。 2. 区域(Section)对象:数据报表设计器的每一个区域均由一个区域集对象中的一个区域对象来表示。在设计阶段,每一个区域都有一个标题,若要选择区域,只需用鼠标选择标题即可,并且在区域内可布置控件。在报表建立之前,使用区域对象及其属性调整报表。使用过报表的人都知道,报表可分为报头、报脚、页头、页脚、组头、组脚和细节等部分,在区域内也是一样的。

动态报表使用说明

本文章只对折线、柱状和饼形报表进行说明: 由于这几种报表只能利用XML文件进行配合使用,所以每个报表都将对应一个xml文件;如果要根据数据库中的数据动态生成报表时,可以根据C#程序动态配置xml文件或者AJAX 异步获取xml格式文本,这里例子就直接写死了。 1.柱形报表Column2D.swf 2.柱形报表3D效果对应文件Column3D.swf:

3.饼形对应文件.Pie2D.swf 4.饼形3D效果对应文件 .Pie3D.swf 实现步骤: 首先新建一个xml文件如data.xml文件里面配置节点如下:

//decimalPrecision为小数点后面的位数formatNumberScale值为1格式化数字如3000自动转为3k,为0时不转换 参数说明: 所有参数内容包含在中 encoding最好值为gb2312,否则里面的中文如“月份”可能在网页中出现乱码;Caption为报表名称,xAxisName对于横坐标的标注,yAxisName对于纵坐标的标注,showNames每个月份横坐标的标题的显示状态(0:隐藏、1:显示) set中的name:每个图块的名字,value每个图块的位置值,color每个段的图块颜色; 然后新建一个html页面,拖入jquery和FusionCharts包 脚本写入如下代码: //异步获取xml格式文本