第一篇:基于VB实现复杂报表设计
陕西理工学院毕业设计
基于VB实现复杂报表设计
(陕西理工学院 物理系 电子信息科学与技术07级2班,陕西 汉中 723000)
[摘要] 本文介绍了报表设计的几种方法和以往报表设计所存在的问题,并以实例介绍自动生成复杂报表的方法。实例基于VB软件开发,并以word为模板,通过调用access数据库数据自动生成复杂报表。
[关键词]VB;数据库;Word;复杂报表
The Design Of Complex Reports Based VB
(Grade 2007,Class2, Major electronical information and technology,Physics Dept, Shaanxi University of Technology,Hanzhong 723000,Shaanxi)
[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中水晶报表使用
第一步:
在VB工程中Project菜单加入“Add Crystal Report 9”,报表名使用默认即可。这时Form2(Crystal Rerport自动添加的Form,假设名为Form2)被自动分配了如下代码:
Option Explicit dim Report as New Cystal1
Private Sub Form_Load()
Screen.MousePointer = vbHourglass '调用水晶报表时置鼠标为沙漏状
CRViewer91.ReportSource = Report '该语句的赋值将在后面被修改
CRViewer91.ViewReport Screen.MousePointer = vbDefault '调用水晶报表完成后置鼠标为默认形状
End Sub
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
Private Sub Form_Resize()
CRViewer91.Top = 0 CRViewer91.Left = 0 CRViewer91.Height = ScaleHeight CRViewer91.Width = ScaleWidth End Sub
第二步:
点击Crystal Report设计器的“数据库字段”,选定“数据库专家...”,然后点“创建新连接”,再点“仅字段定义”,创建“数据库定义”文件,字段名和宽度和原数据库表保持一致。最后,在数据库字段中获得了相应字段,将其置于报表上,按水晶报表的要求配置。
第三步:
该步骤非常关键,添加一个Modual到工程文件中,定义全局的ADODB变量,实现数据库和水晶报表的动态连接。代码如下:
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
Public conn As New ADODB.Connection Public rs As New ADODB.Recordset
第四步:
关于VB程序的ADO数据库连接注意事项,请看下面的打印按钮例程。
Private Sub Command1_Click()
Dim connstr As String
If conn.State = adStateOpen Then conn.Close
connstr = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & App.Path & “prtest.mdb;Persist Security Info=False” 'prtest.mdb是程序当前目录的测试Access数据库
conn.ConnectionString = connstr
conn.Open
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
conn.CursorLocation = adUseClient
If rs.State = adStateOpen Then rs.Close
rs.Open “test”, conn, adOpenKeyset, adLockReadOnly
' Report.Database.SetDataSource rs, 3, 1 '此行取消
Form2.Show 1 '数据库连接完成后,调用Form2水晶报表工程
End Sub
需要提请大家注意的是,上面代码中的Report.Database.SetDataSource rs, 3, 1是初用水晶报表的程序员容易犯的错误,使用该语句后将造成数据库和水晶报表的连接失败。如何动态调用水晶报表呢?请看第五步。
第五步:
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
创建水晶报表和数据库数据源的连接,需要修改上面Form2的代码。
Option Explicit 'dim Report as New Cystal1 '上面一行取消
Private Sub Form_Load()
Dim oApp As New CRAXDRT.Application Dim oRpt As CRAXDRT.Report Dim reportName As String '上面三行是新增加的
Screen.MousePointer = vbHourglass
reportName = “rptPr1.rpt”
'定义要引用的rpt文件
Set oRpt = oApp.OpenReport(App.Path & reportName, 1)
oRpt.Database.SetDataSource rs '连接水晶报表和数据源
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
oRpt.ReadRecords
CRViewer91.ReportSource = oRpt '启用水晶报表的预览功能
CRViewer91.ViewReport Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0 CRViewer91.Left = 0 CRViewer91.Height = ScaleHeight CRViewer91.Width = ScaleWidth End Sub
Private Sub Form_Unload(Cancel As Integer)
'Set Report = Nothing
精心收集
精心编辑
精致阅读 如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
Set rs = Nothing
Set conn = Nothing
Unload Form2 End Sub
上面介绍了在VB中使用水晶报表进行报表开发的一种方法,该方法简单易用,适合初学者上手。
[ 结 束 ]
VB.NET中使用水晶报表总结
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用和强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家。
一、在使用自带的水晶报表时,请注册,否则只能使用30次
二、使用CrystalReportViewer进行预览
CrystalReportViewer控件允许在应用程序中查看 Crystal Report。ReportSource 属性用于设置要查看哪个报表。该属性设置之后,报表显示在查看器中。报表源可以是ReportDocument、报表文件的路径,也可以是强类型报表。
1.打开“工具箱”,并将一个 CrystalReportViewer 拖到窗体上,我们命名为rptVew。
2.通过拖放操作将 Windows 窗体查看器调整到希望的大小并将其移动到所需位置。
3.当运行应用程序时,报表将显示在查看器中。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
三、创建新报表
1.指向“添加”,单击“添加新项”。
2.在“添加新项”对话框中,从“模板”区域选择 Crystal Report,将报表命名为rptClient,单击“打开”。
3.在 Crystal Report 库中,选择下列选项之一:
· 使用报表专家 — 指导您完成报表的创建过程,并将您的选择添加到 Crystal Report Designer。
· 作为空白报表 — 打开 Crystal Report Designer。
· 来自于现有的报表 — 创建新报表,它与指定的另一报表设计相同。
注意 Crystal Report 库包含许多专家,可以指导您完成数个特定类型报表的创建工作。您可能希望使用专家来创建最初的报表,以确定哪种报表构造方法适合您的需要。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
4.单击“确定”按钮。
如果选择使用“报表专家”,便会出现“报表专家”对话框,并带有数据资源管理器。为每个文件夹选择所需数据,完成“报表专家”选项卡界面上的操作,然后单击“完成”来访问 Crystal Report Designer 和您的报表
四、是否需要动态设置数据源?
Crystal Reports 通过数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。
拉和推模型
为了向开发人员提供最灵活的数据访问方法,Crystal Reports 数据库驱动程序被设计为可同时提供数据访问的拉模型和推模型。
拉模型
在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的 SQL 命令都同时由 Crystal Reports 本身处理,不需要开发人员编写
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
代码。如果在运行时无须编写任何特殊代码,则使用拉模型。
推模型
相反,推模型需要开发人员编写代码以连接到数据库,执行 SQL 命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在 Crystal Reports 收到数据之前先将数据筛选出来。
四、从 ADO.NET 数据集制作报表
从数据库创建数据集对象
1.在项目中新建一个架构文件:
a.在解决方案资源管理器中,右击项目名,指向“添加”,然后单击“添加新项”。
b.在“添加新项”对话框的“类别”区域,展开文件夹,然后选择“数据”。
c.在“模板”区域选择“数据集”。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
d.接受默认名称 DataSet1.xsd。
这就创建了一个新的架构文件(DataSet1.xsd),以后将用它来生成强类型数据集。该架构文件将显示在 ADO.NET 数据集设计器中。
2.指定数据库位置:
a.在服务器资源管理器中,右击“数据连接”并选择“添加连接”。
b.在“数据链接属性”对话框中,单击“提供程序”选项卡,然后选择一个提供程序(例如 Microsoft OLE DB Provider for SQL Server)。
c.单击“连接”选项卡,然后指定您的数据库所在位置。在所需位置输入服务器和登录信息。
d.单击“确定”按钮。
此时,您的数据库及其表和字段就出现在服务器资源管理器的“数据连接”节点下面。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
3.在解决方案资源管理器中,双击 DataSet1.xsd(如果它尚不是活动视图)。
DataSet1.xsd 现在应显示在“数据集”选项卡中。
4.若要为数据集建立架构,请将需要的表从服务器资源管理器中拖动到 DataSet1.xsd 的“数据集”选项卡上。
5.单击“保存 DataSet1.xsd”来保存“Dataset1.xsd”文件。
6.在“生成”菜单上,单击“生成”为项目生成数据集对象。
ADO.NET 数据集对象提供数据的描述,从它可以向 Crystal report 添加表。使用 Crystal Report Designer 中的“数据库专家”从 ADO.NET 数据集对象添加表。
请在使用“报表专家”创建新报表时调用“数据库专家”。或者,要从一个已经使用 ADO.NET 建立好的报表中访问“数据库专家”,请在 Report Designer 中右击,指向“数据库”,然后单击“添加/删除数据库”。
将报表连接到 ADO.NET 数据集对象
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
1.在“数据库专家”中,展开“项目数据”文件夹。
2.展开“ADO.NET 数据集”文件夹。
3.选择所需数据集对象。
例如,如果当时使用的是从项目“WindowsApplication1”的架构文件“DataSet1.xsd”中生成的数据集对象,则应该选择“WindowsApplication1.Dataset1”。
4.选择要向报表中添加的表,和使用其他数据源一样。
五、动态改变数据源的代码
Dim dsDataSet As New DataSet()
Dim oRpt As New rptClient()'已建立的报表rptClient
请读者自行填充数据集dsDataSet
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
'使用“报表引擎”对象模型将填充的数据集,传递给报表
oRpt.SetDataSource(dsDataSet.Tables(0))
' 将带有数据的报表对象绑定到 Windows 窗体查看器,rptVew(CrystalReportViewer控件)
rptVew.ReportSource = oRpt
注意 FillDataSet 方法可连接到指定的数据库,提取数据,然后断开数据库连接。如果您希望将数据库中的多个表添加到报表中,请使用 SQL JOIN 语句将这些表联接在一起;然后在 FillDataSet 方法中指定一个结果表
六、创建主从报表
在报表中,有许多报表是主从表结构,比如订单与订单商品明细,订单是一个表中的一条记录,而分录是另一个表中的多条记录,两个表通过一个字段关联起来,这种报表可利用其分组功能实现,1.新建一个工程
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
2.往FORM1中添加一个CrystalReportViewer控件
3.在服务噐资源管理器中连接到SQL SERVER 2000上的Northwind数据库
4.添加一个数据集DataSet1,将服务器资源管理器中的Orders和 Order Details加入到数据集中。
5.添加一个水晶报表,使用报表专家,在项目数据中选择“ADO.NET数据集”,插入表Orders和 Order Details,“链接”中是关联字段的链接,在“字段”中选择要显示的主表和明细表的字段,组中选择分组依据为Orders表OrdersID字段,总计,图表,选择(可进行筛选),样式(可设置报表标题),可自行设置。设置完后,点击完成。
6.在报表设计器中调整需要显示的字段的位置、宽度等。
7.在窗口中添加代码。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
Dim oRpt As New CrystalReport1()
Dim dsDataSet As New Dataset1()
Dim CN As New Data.SqlClient.SqlConnection(“data source=PMSERVER;initial catalog=Northwind;user id=sa;password=sa”)
CN.Open()
Dim daOrders As New Data.SqlClient.SqlDataAdapter(“select * from orders”, CN)
daOrders.Fill(dsDataSet, “orders”)
Dim daDetails As New Data.SqlClient.SqlDataAdapter(“select * from [Order Details]”, CN)
daDetails.Fill(dsDataSet, “Order Details”)
'使用“报表引擎”对象模型将填充的数据集,传递给报表
oRpt.SetDataSource(dsDataSet)
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
CrystalReportViewer1.ReportSource = oRpt
End Sub
8、运行程序
七、用程序改变报表中text的文本
代码如下:
Dim GetTextObject As TextObject
' 按名称获取 ReportObject,将其转换为 TextObject,并返回此对象。
GetTextObject = orpt.ReportDefinition.ReportObjects.Item(“text13”)
GetTextObject.Text = “XXXX系统”
总结:水晶报表具有非常强大的功能,还可进行导出WORD、EXCEL、RTF等文件,还可生成复杂、漂亮图表,是进行WEB和Windows报表开发的利器
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
使用5种不同的方法加载水晶报表(Windows 窗体)2008年01月19日 星期六 下午 04:081、用作 viewer.reportsource 的5种类型的报表:
-使用 Report 名(通过文本路径)使用非类型的 Report 组件(通过文本路径和 ReportDocument reportdocument1)使用强类型的 Report 组件()(通过 ReportDocument world_Sales_Report1)
注:Report 组件即“工具箱”-〉“组件”-〉“ReportDocument”
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
2、代码简介:
-使用 Report 名(通过文本路径)CrystalReportViewer1.ReportSource = “C:Crystalcrnetvbnet_win_simplepreviewreportWorld Sales Report.rpt” '------使用非类型的 Report 组件(通过文本路径和 ReportDocument reportdocument1)Dim reportdocument1 As New CrystalDecisions.CrystalReports.Engine.ReportDocument()reportdocument1.Load(“C:Crystalcrnetvbnet_win_simplepreviewreportWorld Sales Report.rpt”)CrystalReportViewer1.ReportSource = reportdocument1
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
'------使用强类型的 Report 组件()(通过 ReportDocument world_Sales_Report1)
CrystalReportViewer1.ReportSource = world_Sales_Report1
精心收集
精心编辑
精致阅读
如需请下载!
第三篇:ATM系统实现报告(VB)
面向对象方法设计与实现报告
—ATM机系统
软件0802班
高晓亮
200807040203
一、概要
根据ATM的需求分析,该系统设计为2个子系统:用户系统、银行工作人员系统。其中用户系统主要使用户在ATM上完成一些基本操作,例如:存款、取款、转账、查询余额、修改账户密码等银行工作人员系统主要用来管理用户账户、ATM机、事务。其具体功能和界面及代码将在下文叙述。
说明:该系统主要代码是用vb编写,数据库使用的是单机数据库access。
二、用户系统
A:主要界面介绍: 一)、待机界面:
1、功能:系统欢迎界面,点击模拟按钮开始模拟ATM机工作。
2、说明:由于没有找到合适的广告图片,所以待机默认先用蓝色背景代替。
3、界面文字动画代码如下:If Label5(0).Left > Me.ScaleWidth Then
Label5(0).Left = Me.Left100 End If
Label5(1).Move Label5(1).Left + 120
4、界面截图如下:
二)、登陆界面:
1、功能:a、密码框设置只能输入6位
B、密码输入3次错误,将冻结该账户
C、银行卡号不存在、冻结或密码错误,均不能进入系统
2、说明:因为各银行卡号位数不太一样,银行卡号位数并未设置。
3、登陆确认按钮代码如下: Private Sub Command27_Click()If Not Text7.Text = “" And Not Text8.Text = ”“ Then Dim sql As String sql = ”select * from 账户 where 银行卡号='“ & Trim(Text7.Text)& ”'“
Adodc1.RecordSource = sql
Adodc1.Refresh
If Adodc1.Recordset(”状态“)= ”冻结“ Then '判断该账户状态
MsgBox ”该账户已冻结!“
Text7.Text = ”“
Text8.Text = ”“
Else
sql = ”select * from 账户 where 银行卡号='“ & Trim(Text7.Text)& ”' and 密码=“ & Trim(Text8.Text)& ”“
Adodc1.RecordSource = sql
Adodc1.Refresh
If Adodc1.Recordset.EOF Then
MsgBox ”密码错误!“, 48, ”错误提示“
Text8.Text = ”“
count1 = count1 + 1
If count1 >= 3 Then '三次输入错误冻结该账户
Adodc1.Refresh
sql = ”select * from 账户 where 银行卡号='“ & Trim(Text7.Text)& ”'“
Adodc1.RecordSource = sql
Adodc1.Refresh
Adodc1.Recordset(”状态“)= ”冻结“
Adodc1.Recordset.Update
MsgBox(”三次输入错误,该账户已被冻结“)
End If
Else
Label10.Visible = False
Label11.Visible = False
Text7.Visible = False
Text8.Visible = False
Command27.Visible = False Command28.Visible = False Command14.Visible = True Command15.Visible = True Command16.Visible = True Command17.Visible = True Command18.Visible = True Command19.Visible = True Command24.Visible = True Ynum = Text7.Text Adodc2.Refresh ’添加事务 Adodc2.Recordset.AddNew
Adodc2.Recordset(”银行卡号“)= Ynum
Adodc2.Recordset(”事务类型“)= ”用户登录“
Adodc2.Recordset(”时间“)= Now()
Adodc2.Recordset(”事务描述“)= ”用户完成登陆“
Adodc2.Recordset.Update
Adodc2.Refresh Text7.Text = ”“ Text8.Text = ”“ End If End If Else MsgBox(”信息不全!请确认“)End If End Sub
4、界面截图如下:
三)、系统主界面
1、功能:ATM的主要功能陈列,供用户选择,其中包括存款、取款、转账、查询余额、修改密码、取卡、返回。当账户登录时,将在事务表中记录登录时间。
2、说明:由于所有按钮均只是用来调出对应的功能的界面,并没有实际功能,所以在此省略其按钮代码。
3、界面截图如下:
四)、存款界面
1、功能:a、只允许用户输入100的整数值
b、当文本框为空时报错
c、实现用户的存款功能
d、每存入一笔款,都将在事务表中记录该操作
2、存款代码如下:If Not Text12.Text = ”“ Then If Val(Text12.Text)Mod 100 = 0 Then Adodc1.Refresh Adodc1.Recordset(”余额“)= Adodc1.Recordset(”余额“)+ Val(Text12.Text)Adodc1.Recordset.Update Adodc1.Refresh Label15.Caption = ”存款成功“ ye = ye + Text12.Text Adodc2.Refresh Adodc2.Recordset.AddNew
Adodc2.Recordset(”银行卡号“)= Ynum
Adodc2.Recordset(”事务类型“)= ”存款“
Adodc2.Recordset(”时间“)= Now()
Adodc2.Recordset(”事务描述“)= ”用户存入“ & Text12.Text & ”元“
Adodc2.Recordset.Update
Adodc2.Refresh Text12.Text = ”“ Command33.Enabled = True Command32.Enabled = False Else MsgBox ”请输入100的整数“ End If Else Label15.Caption = ”无款可存“ End If End Sub
3、界面截图如下:
四)、取款界面
1、功能:a、用户按相对应数值的按钮进行取款
b、每个账户每天取款数不能超过2500
c、账户余额不足时,报错
d、用户每取走一笔款额,都将在事务表中记录取走金额和时间
2、说明:由于不同数值按钮的代码很相似,所以这里仅给出100按钮的代码
3、存款代码如下:Private Sub Command20_Click()Adodc1.Refresh If Adodc1.Recordset(”余额“)>= 100 Then Adodc1.Refresh Adodc1.Recordset(”余额“)= Adodc1.Recordset(”余额“)100 Adodc2.Refresh Adodc2.Recordset.AddNew
Adodc2.Recordset(”银行卡号“)= Ynum
Adodc2.Recordset(”事务类型“)= ”取款“
Adodc2.Recordset(”时间“)= Now()
Adodc2.Recordset(”事务描述“)= ”用户取走100元“
Adodc2.Recordset.Update
Adodc2.Refresh Else Label15.Caption = ”余额不足,取款失败“ End If End Sub
4、取款界面截图如下:
五)、查询余额界面
1、功能:实现用户查询对应账户的余额
2、查询余额代码如下:Private Sub Command17_Click()Command14.Visible = False Command15.Visible = False Command16.Visible = False Command17.Visible = False Command18.Visible = False Command19.Visible = False Label6.Visible = False Label7.Visible = False sql = ”select 余额 from 账户
where 银行卡号= '“ & Ynum & ”'“ Adodc1.RecordSource = sql Adodc1.Refresh Label8.Caption = Adodc1.Recordset.Fields(”余额“)Adodc2.Refresh Adodc2.Recordset.AddNew
Adodc2.Recordset(”银行卡号“)= Ynum
Adodc2.Recordset(”事务类型“)= ”查询余额“
Adodc2.Recordset(”时间“)= Now()
Adodc2.Recordset(”事务描述“)= ”查询余额“
Adodc2.Recordset.Update
Adodc2.Refresh Label9.Visible = True Label8.Visible = True End Sub
3、查询余额界面截图如下:
六)、转账界面
1、功能:a、实现用户转账
b、需2次确认账户信息,若信息输入不全,账户余额不足,2次输入不一样,均不可完成转账
c、用户每转一笔账,均将在事务表中记录转账金额和时间
2、转账代码如下:Private Sub Command30_Click()If Not Text11.Text = ”“ And Not Text10.Text = ”“ And Not Text9.Text = ”“ Then If Text10.Text = Text9.Text Then Adodc1.Refresh If Adodc1.Recordset(”余额“)>= Val(Text11.Text)Then Adodc1.Refresh Adodc1.Recordset(”余额“)= Adodc1.Recordset(”余额“)Me.picLOAD.Width)/ 2 'Me.picLOAD.Top = Me.ScaleHeight / 2Me.picLOAD.Width)/ 2 'Me.picLOAD.Top = Me.ScaleHeight / 2Me.picLOAD.Width)/ 2 'Me.picLOAD.Top = Me.ScaleHeight / 2-Me.picLOAD.Height Me.picLOAD.Visible = True 'DoEvents '释放控制权
Me.ListView1.ListItems.Clear Dim addLIST As ListItem Dim ss As String Dim sql As String ss = App.Path + ”datadata.mdb“ Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=gxl;Persist Security Info=False;Data Source=“ & ss Adodc1.CommandType = adCmdText sql = ”select * from ATM“ Adodc1.RecordSource = sql Adodc1.Refresh '连接数据库
Do While Not Adodc1.Recordset.EOF Set addLIST = ListView1.ListItems.Add(, , Adodc1.Recordset!ATM机编号, , i)addLIST.SubItems(1)= IIf(IsNull(Adodc1.Recordset.Fields(”状态“).Value), Adodc1.Recordset.Fields(”状态“).Value)addLIST.SubItems(2)= IIf(IsNull(Adodc1.Recordset.Fields(”余额“).Value), Adodc1.Recordset.Fields(”余额“).Value)Adodc1.Recordset.MoveNext Loop Me.picLOAD.Visible = False End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Index
Case Is = 2 '
ZhZCfrm.Show 1
Case Is = 3
' ZHZXfrm.Show 1
Case Is = 4
Call addLIST End Select End Sub
3、界面截图:
”“, ”“,六)、单位信息界面
1、功能:显示单位信息
2、代码: Private Sub cmdBC_Click()'修改银行信息 Dim s As String If Not Text1(0).Text = ”“ And Not Text1(1).Text = ”“ And Not Text1(2).Text = ”“ And Not Text1(3).Text = ”“ And Not Text1(4).Text = ”“ Then
s = ”update 银行信息 set 银行名称='“ & Text1(0).Text & ”',银行地址='“ & Text1(1).Text & ”',邮政编号='“ & Text1(2).Text & ”',负责人='“ & Text1(3).Text & ”', 联系电话='“ & Text1(4).Text & ”'“
Adodc1.RecordSource = s
MsgBox(”修改成功“)
Adodc1.Recordset.Update
Else
MsgBox ”修改信息不全,请检查!“
End If End Sub
Private Sub Form_Load()Dim ss As String Dim sql As String ss = App.Path + ”datadata.mdb“ Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=gxl;Persist Security Info=False;Data Source=“ & ss Adodc1.CommandType = adCmdText sql = ”select * from 银行信息“ Adodc1.RecordSource = sql Adodc1.Refresh '连接数据库 End Sub
3、界面截图:
七)、下面给出数据备份还原的代码 Private Sub a14_Click()On Error GoTo ERR_line newname = App.Path & ”datadata.mdb“ datapath = App.Path & ”backup“ & Date & ” 备份卡.bak“ FileCopy newname, datapath MsgBox ”数据已备份到
“ & datapath, 64, ”提示“ Exit Sub ERR_line: MsgBox ”不能完成数据备份!“, 48, ”运行错误“ End Sub
Private Sub a15_Click()On Error GoTo ERR_line
Me.CommonDialog1.ShowOpen
snewname = Me.CommonDialog1.FileName
sdatapath = App.Path & ”datadata.mdb“
If snewname <> ”“ Then
If MsgBox(”还原后将覆盖原有数据,确定还原吗?“, vbInformation + vbYesNo, ”提示“)= vbYes Then
FileCopy snewname, sdatapath
MsgBox ”数据已经成功还原!请重新登陆 “, 48, ”提示“
Unload Me
Formload.Show
Else
Exit Sub End If
End If Exit Sub
ERR_line: MsgBox ”不能完成数据还原,请进入系统后未做任何操作时进行!“, 48, ”运行错误" End Sub
四、数据库
本系统使用的是access数据库。数据库密码为gxl。本系统共有5张表,分别为:ATM,事务,系统用户表,银行信息,账户。
下面给出数据库的相关截图。
1、表图:
2、ATM的设计视图
3、事务的设计视图
4、系统用户表的设计视图
5、银行信息的设计视图
6、账户的设计视图
第四篇:Vb设计实验报告
Vb设计实验报告
一、设计内容和目的
这次实验设计,我做的是学生信息管理系统,主要功能是提供学生信息保存和查询功能。
主要分为个窗口,其具体功能如下:
1、登录窗口:提供学生和管理员登录。
2、信息管理窗口:主操作窗口,可以进行重登陆、注销、退出、用户查询、管理员管理、系统信息的操作。包括一个下拉菜单和工具栏。
3、用户查询窗口:可以查询数据库中保存的学生信息。
4、管理员管理窗口:只有管理员可以进入,显示数据库中所有的学生信息,并且可以添加修改。
5、系统信息窗口:是系统的信息内容。
另外,根据网上的代码,我又制作了俄罗斯方块小游戏和画图工具。
二、设计过程:
1、实验构思:在系统设计之前,对实验内容和结构的构思占据了相当一部分时间。最终决定做一个“学生信息管理系统”,这样比较贴近自身情况,也有比较多的内容可以设计。
2、技术实现:在制作过程中主要使用了vb2005和数据库技术实现系统的设计、实现和运行。Photoshop等技术使程序的界面看起来更加友好。
3、运行调试:在系统制作中的运行调试过程中,出现了很多问题,比如各窗口之间的调用和访问,如何退出,控件的背景设置、字体颜色设置等,都需要经过一遍遍的调试发现、解决。
4、系统打包:在打包的时候,我按照老师给的方法一步步设置,可是由于粗心等原因,总是达不到满意的效果,直到第三次才真正成功。
三、系统结构:
如一所述,系统分为5个模块,各个模块之间可以自由访问。
四、实验结果: 该系统能够提供学生和管理员两种类型的登录,可以实现学生信息的查询、管理员对信息的修改,等。
五、设计心得:
在设计过程中,遇到了许多困难,比如:数据库无法连接、窗口无法正常访问、控件背景与窗体背景不协调等。后来通过查看课本和访问网络将这些问题解决了。
在这个过程中,我深深体会到大作业的用意:将所学理论知识用于实践。正是因为这样,许多理论上的知识才能真正得到理解。处理问题的过程,也就是学习的过程。背课本何其简单,真正的能力却是将课本运用到实践中去!
第五篇:VB顺序设计
VB顺序设计
教学目的:
1、熟悉结构化程序设计的三种基本结构及其特点。
2、掌握VB中顺序设计常用的语法规则。教学重点:1、2、3、4、结构化程序设计方法概念的理解。Print方法的应用及格式特点。
VB中的赋值语句功能及特点。
VB中的inputbox()输入函数及msgbox()输出函数应用。
课时安排:
理论教学安排6课时,上机练习8课时
一、程序设计三大基本结构:
1、顺序(按语句的书写顺序执行)
2、分支
3、循环
二、赋值语句 格式:
[let] 变量名 = 表达式 功能:
计算表达式的值,并把结果送给“=”左边的变量。
Let a1=3*4---------语句执行后,变量a1的值为12 Let ab1=”你好”-------语句执行后,变量ab1的值为字符串“你好” 语句说明:
1、变量与表达式的数据类型必须一致。
2、“=”有方向性。需要动态理解
Let a1=a1+1-------将a1的当前值加1送给a1。语句执行后,a1的值自动累加1
3、VB中对象的属性名等同于变量名。
Private Sub Command1_Click()Dim a As String, b As String Let a = Text1.Text Let b = Text2.Text Label1.Caption = a + b End Sub 上机练习: P47-49 例1到例3 P78 上机调试题1
产生随机数公式:
Int(n*rnd)+1
用来产生1到n之间的随机整数
1)2)定义变量(n,x1,x2,x3)
取得n值(通过文本框送值给n)
n=val(text1.text)3)产生x1,x2,x3三个随机数 4)x1,x2,x3分别送给指定的标签。
Dim n as integer,x1 as integer
Dim x2 as integer,x3 as integer
N=val(text1.text)
randomize X1=int(n*rnd+1): X2=int(n*rnd+1)
X3=int(n*rnd+1)
Label2.caption=x1
Label3.caption=x2
Label4.caption=x3
三、print方法
1、格式:
对象名.print [输出项列表] 具体语句如下:
Form1.print 输出项表
Picture1.print 输出项表 例如:
Form1.Print “我的程序”, 23-------在窗体上显示两个数据项。Form1.Print “23+14=”, 23 + 14 Picture1.Print “我的图片框”---------在图片框上显示一个数据项。Picture1.Print “23+14=”;23 + 14
2、功能:
在指定的对象上输出结果。
注意:对象为窗体时,对象名可以省缺。
3、输出项表的格式
(1)逗号分隔符---------输出项以标准格式输出。(输出项之间有固定的间隔)
Print 1 Print “1”
‘两行的输出有区别。上一行输出数值1,前面有符号位。而下一行输出字符1,顶格显示。Print 1, 2
(2)分号分隔符---------输出项以紧凑格式输出。输出多个字符时,直接连接输出。
输出数值时,产生一个分隔位,用来将数据隔开。Print “1”;“2”;“3” Print 1;2;3 注意:print方法中,逗号与分号可以混用。Print “1”;“2”;“3”, 1;2;3 Print “1”;“2”;“3”, 1;2, 3(4)特殊的print语句
分隔符出现在print的末尾--------表示下一个print语句与本行的print在同一行显示。Print “1”;A=2 Print “2”;“3”, Print 1;2;3
分隔符之间的数据项可以省缺。-------标准输出时会产生更大的分隔空间。Print 1;;;2 Print 1;2
效果相同 Print 1, , 2 Print 1, 2
效果不同
空print语句---------产生换行或空行 Print 1,2, Print
‘功能为换行 Print 1,2,3 Print
‘功能为空行 Print 1;2;3(5)在print语句中使用定位函数
空格函数spc(n)-------在分号分隔符输出项之间产生指定个数的空格。Print “中国”;”湖北”
print“中国”;spc(1);”湖北” print“中国”;spc(2);”湖北” print“中国”;spc(3);”湖北”
print“中国”;spc(4);”湖北”
列定位函数tab(n)-------在分号分隔符输出项之间,指定随后的输出项的输出位置。Print “中国”;”湖北” print“中国”;tab(10);”湖北” print“中国”;tab(12);”湖北”
print“中国”;tab(14);”湖北” print“中国”;tab(16);”湖北”
格式串输出函数format(表达式,格式串)------常用于数值的输出。上机练习: P51-54 例3.4,3.5 P79 上机调试2 Private Sub Command1_Click()Dim a As String a = Text1.Text Text1.Text = Text2.Text Text2.Text = Text3.Text Text3.Text = a End Sub
Private Sub Command2_Click()Text4.Text = Text1.Text & Text2.Text & Text3.Text End Sub
四、对话框的使用
1、输入对话框 格式:
变量名=inputbox(“提示字符串”,”标题”,“默认值”,输入框的位置坐标)
Private Sub Form_Click()Dim x As String x = InputBox(“请输入你的姓名”)Print “你的名字是” & x End Sub
Private Sub Form_Click()Dim x As String x = InputBox(“请输入你的姓名”, “姓名输入框”)Print “你的名字是” & x End Sub 注意:
1)字符串的分行显示
Chr(13)---------回车
Chr(10)---------换行
Print “你的名字是” & chr(13)& chr(10)& x------print 语句将产生两行输出效果。2)inputbox()的值是字符串。转换成数值使用val()函数。
2、输出消息框 格式:
变量名=msgbox(“提示串”,“对话框类型”,“对话框标题”)对话框类型如下:
x = MsgBox(“你的名字是” & x, 16, “姓名输出框”)对话框类型值=按钮值+图标类型值+默认按钮值 按钮值:0,1,2,3,4,5 图标类型值:16,32,48,64 默认按钮值:0,256,512 注意: 1)2)例如:
MsgBox “你的名字是” & x, 49 + 256, “姓名输出框” 上机练习:
1、P69 例3.8
2、P80 上机调试题7(1)msgbox “在这里显示提示信息”,4,“请确认”
x= msgbox(“在这里显示提示信息”,4,“请确认”)
„两种语句格式均可,前一种无返值,后一种返回一个数值送给x变量。
(2)(3)msgbox “在这里显示+chr(13)+chr(10)+提示信息”,3,“请确认” msgbox “在这里显示+chr(13)+chr(10)+提示信息”,18,“请确认” Msgbox()的返回值为一个数值(也可以是符号常量),代表了不同的按钮。Msgbox可以有无返值格式。结构如下: Msgbox “提示串”,”类型”,”标题栏”
Private Sub Command1_Click()MsgBox “欢迎” + Text1.Text, 68, “消息框” End Sub 系统登录界面设计:
Private Sub Command1_Click()Dim a As Integer a = MsgBox(“欢迎” + Text1.Text, 49, “消息框”)If a = 1 Then Unload Me
‘用来卸载窗体,执行完后窗体1消失.Form2.Show
„显示窗体,执行完后窗体2显示.Else Text1.Text = “" Text2.Text = ”“ End If End Sub
小结顺序程序设计:
一、程序结构语句
1、赋值语句
[let] 变量名=表达式
2、[let] 对象名.属性=表达式 常用语句 1)end 2)rem(„)rem 这是我写的程序 ‘这是我写的程序
3、print方法
form1.print 输出项表
picture1.print 输出项表
重点:输出项表的格式
1)2)标准分隔“,” 紧凑分隔“;”
3)定位函数spc(n),tab(n)
3、对话框
1)输入对话框
变量名=inputbox(“”,“”,“”,„„)2)消息框
变量名=msgbox(“”,“”,“”,„„)msgbox“”,“”,“”,„„
二、控件对象
1、对象的公共属性
Name,caption,enabled(可用),visible(可见)
2、标签(label)
常用属性:label1.caption
事件:单击,双击
3、按钮(command)
常用属性:
事件:单击
4、文本框(text)
常用属性:text1.text,passwordchar,„„
事件:单击,双击,change 上机练习: P79、上机练习5、6 上机练习5
Private Sub Cmd1_Click()Lab1.Visible = True Lab1.Caption = ”您已下达显示命令!“ End Sub
Private Sub Form_Click()Cmd1.Visible = True End Sub
上机练习6 课本37页(字符串函数)
1、求字符串长度len()-----求字符串的长度。
2、取子串函数
Left(字符串,n)-----从字符串左边开始取n个字符组成新字符串。
right(字符串,n)-----从字符串右边开始取n个字符组成新字符串。
mid(字符串,p,n)-----从字符串左边开始数,第P个位置取n个字符组成新字符串。N可以省缺,表示取到字符串的末尾。
3、两个字符相关的转换函数
Chr(x)------求数值x对应的字符。
Asc(x)------求X字符对应的ASCII码值 Private Sub Form_KeyPress(KeyAscii As Integer)‘窗体的按键事件。用户按键盘激活事件。
Print ”输入字符为:“;Chr(KeyAscii), ”ASCII码为:";KeyAscii End Sub Private Sub Form_KeyPress(KeyAscii As Integer)‘将输入的字符显示在文本框内
Text1.Text = Text1.Text + Chr(KeyAscii)‘将文本框中已有的内容与本次输入的字符连接作为文本框的新内容。End Sub 上机练习3 四位数(1000-9999)Int((9999-1000+1)*rnd+1000)产生一个四位随机整数。数与字符串转换函数:
Val(x)--------将X数据串变成数值。
Str(x)--------将数值x变成对应的数字串。
Trim(Str(x))-------先将x变成数字串再去掉两边的空格。Trim(x)用来去掉x两边的空格。假设s=3456: Val(right(s,1)+mid(s,3,1)+mid(s,2,1)+left(s,1))完成对s倒序过程。作业:
1、简述VB中常用的标签、按钮及文本框控件的常用属性及事件。
2、总结print方法中输出项列表的格式。
3、P78三填空题(1)--(6)