2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程1中文VisualFoxPro9.0数据库应用与开发教程2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程2第2章VisualFoxPro9.0概述VisualFoxPro9.0是一个强大的快速关系数据库应用程序开发工具,它是Microsoft公司于2004年推出的VisualFoxPro系列中的最新版本,主要应用于Windows操作环境。它不仅可以创建和管理数据库,而且可以创建各种应用程序。由于它使用面向对象的编程语言,同时提供了可视化的编程方式,因此用户在编写程序的时候不必输入繁琐的程序代码就可以建立一个面向对象的数据库应用程序,大大简化了系统的开发过程,并提高了系统的模块性和紧凑性。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程32.1VFP数据库系统的发展历史微机关系数据库系统中,Xbase家族占有着重要的地位,从Dbase到FoxBase到FoxPro,再到如今的VisualFoxPro,Xbase家族在微机关系数据库系统中始终鹤立鸡群,拥有最大的用户群。VisualFoxPro已经成为当今微型计算机上最流行的数据库软件之一,下面来简单回顾一下它们的辉煌历史。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程42.1.1Dbase系列数据库20世纪70年代末,美国Ashton-Tate公司开发的Dbase数据库系统成为一个相当普遍而且备受欢迎的数据库管理系统。用户只需输入简单的命令,即可轻易完成数据库的建立、增添、修改、索引,以及产生报表或标签,或者利用其程序语言进行应用程序的开发。继DbaseⅡ之后,1984年和1985年,该公司又相继推出DbaseⅢ、DbaseⅢPlus,一时风靡微机市场,成为当时微机数据库的标准和典范。但是,Dbase存在一些缺点:(1)运行速度比较慢,特别是数据库记录多的时候,尤其明显。(2)早期的Dbase不带编译器,仅是解释执行,后来虽然增加了编译器,但编译与解释存在差异。(3)由于各版本之间不兼容,设计标准不统一。由于Xbase的这些缺陷,现在用户已经很少,后来,人们常用Xbase来表示这个系列的数据库管理系统。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程52.1.2FoxBase系列数据库美国FoxSoftware公司看到了Dbase在性能与速度上存在的问题,也预见到了PC平台上数据库管理系统的巨大市场潜力,在1984年推出了与Dbase完全兼容的FoxBase,其速度大大快于DBASE,并且在FoxBase中第一次引入了编译器。1986年,与DbaseⅢPlus兼容的FoxBase+推出,FoxBase逐渐取代了Dbase的市场主导地位。1987年之后FoxSoftware相继推出了FoxBase+2.0,FoxBase+2.10版本,这两个产品不仅速度上超越其前期产品,而且还扩充了对开发者极其有用的语言,并提供了良好的界面和较为丰富的工具。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程62.1.3FoxPro系列数据库人们预测,随着软件技术的快速发展,微机DBMS必将发生巨大变化,它将越来越易于使用,为各个层次的用户完成不同的复杂工作,它将提供更完整、更标准的Xbase语言和丰富的工具,并且具有面向对象的特点,在其中引入多媒体技术,人们可以通过建立分布式数据库来存取各种数据而无需考虑这些数据的物理位置。为了顺应这一发展趋势,FoxPro诞生了,宗旨在于创建XBASE语言的标准,它的每一个版本都向这一方向努力,其功能越来越完善。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程71989年下半年,美国FoxSoftware公司正式推出FoxPro1.0,它首次引入了基于DOS环境的窗口技术COM(面向字符的窗口),用户使用的界面再也不是圆点,而是能产生圆点提示下等效命令的菜单系统。它支持鼠标,操作方便,是一个与Dbase、FoxBase完全兼容的编译型集成环境式的数据库系统。随后该公司又在1991年推出FoxPro2.0,FoxPro2.0在性能上有了极大的提高,它除了支持FoxPro先前版本的全部功能外,还增加了100多条全新的命令与函数,从而使得FoxPro的程序设计语言逐步成为XBASE语言的标准。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程82.1.4VisualFoxPro系列数据库1992年微软公司收购了FoxSoftware公司,把FoxPro纳入了自己的产品中。它利用自身的技术优势和巨大的资源,在很短的时间里开发了FoxPro2.5及FoxPro2.6等大约20个软件产品及其相关产品,包括DOS、Windows、Mac和Unix四个平台的软件产品。1995年6月,微软公司推出了VisualFoxPro3.0版。这是一次巨大的变革,它首次将面向对象的思想应用到FoxPro数据库中,提供了可视化的编程界面,接着又很快推出了VisualFoxPro5.0及其中文版。1998年发布了可视化编程语言集成包VisualFoxPro6.0。2000年,推出了VisualStudio.net,包含了VisualFoxPro7.0,后来为了调整VisualStudio.net的市场战略,将VisualFoxPro7.0独立出来,形成了一个仍基于VisualStudio.net架构的独立软件产品。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程9随后,微软公司短时间内接连又推出了VisualFoxPro8.0和VisualFoxPro9.0,其中VisualFoxPro9.0是微软公司推出的VisualFoxPro系列产品中的最新版本,它是可以运行于Windows95/98、WindowsNT、Windows2000/XP平台的32位数据库开发系统。为了以后章节论述方便,本书后面章节将VisualFoxPro9.0简称为VisualFoxPro、VFP9.0或者VFP。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程102.2VFP9.0的新增功能VisualFoxPro9.0是一个非常强大的应用程序开发工具。它为数据库开发人员提供了一种以数据为中心、面向对象的开发语言环境,面向对象程序设计(OOP)提供了重用性和兼容性很高的应用程序。它不仅可以创建桌面数据库应用程序,还能创建Web数据库应用程序等其他类型的数据库程序。VFP9.0作为微软公司推出VisualFoxPro系列产品中的最新版本,出现了不少令人欣喜的新增功能,集成开发系统、数据处理方式以及报表设计器等都有了不同程度的增强,使得开发者可以进一步提高软件开发效率。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程112.2.1强大的集成开发系统1.字体和颜色做了很大调整项目管理器中的字体以及属性列表框中的字体都可以进行设置。属性列表框的另一项增强就是可以根据不同类别的属性,对不同的属性元素选择不同的颜色。用户可以为ActiveX控件属性、非缺省值、自定义属性和实例属性指定不同的显示颜色。2.类操作的增强VisualFoxPro9.0为类设计器加入了开发者渴望已久的特色。用户现在可以为用户的类的自定义属性设置缺省值。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程123.数据浏览器(DataExplorer)VisualFoxPro有很强的数据操控功能。VisualFoxPro9.0新增了一个名为数据浏览器的工具,使得用户在基于客服机器/服务器(Client/Server,简称C/S)模式的开发变得更方便。4.方便的代码查错VisualFoxPro9.0对它的程序编辑窗口也做了很大的增强。当FoxPro在代码中发现一处语法错误时,它会为相应代码画上下划线。这节约了开发者纠正Bug的时间,并且不必非要等到编译完成才发现错误。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程132.2.2新的数据处理方式1.增强的SQL语言取消了很多硬编码的限制,增强了子查询和关联查询的支持,支持更复杂的表达式,以及增强了对Union的支持。2.性能方面VFP9.0引进了一个新的索引类型——二进制索引,它可在任何逻辑表达式中被使用。同时增强了过滤型索引的性能,提高了TopN、Min()/Max()以及Like这些查询子句的性能。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程143.命令和函数对数据的操作更具灵活性,增强对SQL中showplan的支持,增加Icase()函数来代替IIF()函数。4.新的数据类型支持AutoInc、VarChar、VarBinary和Blob等新的数据类型,并提供相应的类型转换函数:Cast()。增强了现有函数对数据类型的控制和转换能力。5.远程数据VisualFoxPro9.0增强了事务控制的能力,游标(cursor)机制使得代码逻辑更加清晰,VFP从8.0增加了CursorAdapter基类,9.0中对该基类作了加强,使开发者只需几行代码就可以方便地访问远程视图。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程152.2.3强大的报表设计器1.报表系统的架构新的报表引擎把报表的功能分成了两部分,其中报表引擎只处理数据和对象定位;增加了报表监听器处理显示和输出的事务。由于报表监听器是一个类(Class),因此可以非常方便地与报表进程交互操作。2.新的报表语法VisualFoxPro9.0兼容旧的报表引擎运行报表,用户可以像从前一样使用REPORT命令。但是如果要使用新式的报表行为,必须使用Report命令的Object子句。Object子句可以指定报表监听器和指定报表样式。微软称之为对象辅助(Object-Assisted)报表。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程163.报表监听器报表监听器是提供新式报表行为的对象。报表监听器是基于VisualFoxPro9.0的新的基础类ReportListener的。为了让VisualFoxPro9.0使用报表指定的监听器,需要建立自己的监听器类对象,并在Report命令的Object子句中引用该对象。4.HTML和XML输出VisualFoxPro9.0提供了更多的报表输出类型,它包含了ReportListener的两个子类,分别叫做HTMLListener和XMLListener,用来提供HTML和XML格式的报表输出。5.自定义显示VisualFoxPro9.0不仅可以改变字段的外形,还可以在报表监听器中执行自己需要的任何事务。ReportListener的Render方法负责在报表页面上绘制每个对象。用户可以重载这个方法来实现各式各样的输出,真正实现报表自定义显示。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程172.2.4其他功能VisualFoxPro9.0为了适应软件发展的需要,还在其他方面做了改进,如增强向导功能、支持WindowsXP主题、智能感知脚本、新的NorthWind样例数据库等等,使用这些新功能可以使开发出来的应用程序具有更加强大的功能、更加方便的操作。2020年1月17日中文VisualFoxPro9.0数据库应用与开发教程182.3VFP9.0的操作界面2.3.1VFP的操作界面VFP9.0主窗口由以下部分组成。1.标题栏“标题栏”位于软件主界面的顶部,显示VisualFoxPro的系统图标,版本信息及常用的界面