Visual FoxPro 数据库全套课件_第1页
Visual FoxPro 数据库全套课件_第2页
Visual FoxPro 数据库全套课件_第3页
Visual FoxPro 数据库全套课件_第4页
Visual FoxPro 数据库全套课件_第5页
已阅读5页,还剩445页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VisualFoxPro实用教程

第一章VisualFoxPro概述1.1表、关系模型和数据库1.2VFP是数据库管理的简单语言1.3

FoxPro的历史地位、VFP8.0,9.0版本和展望1.4VFP的窗口、菜单及其它1.5用命令窗口(Command)工作第一章VisualFoxPro概述简介:

1、数据库管理系统是美国微软公司(Ashto-Tate)推出的,属于Xbase范畴。该系统对数据的收集、保存、使用等作出了重大的贡献。

2、数据库管理系统的发展:

dBASEⅡ—dBASEⅢ—dBASEⅣ—FoxBase—FoxPror(1989年)—VisualFoxPro(关系数据库管理系统较Xbase更上一层楼). 3、VisualFoxPro关系数据库(简称VFP)3.0、5.0、6.0、7.0、8.0版本集Zizerds技术和Rushmore技术于一体,使用户可直观地运用界面:菜单、设计器、生成器、向导、精致的窗口及鼠标操作,使原来十分困难的工作例如:查询、报表、邮标、菜单等的制作变得容易。 4、同时与Xbase数据库语言完全兼容。

5、至今,数据库技术已成为计算机领域最重要的技术之一,它是软件学科中一个独立分支(即研究数据库的结构、存贮、设计和使用的一门软件学科)。已广泛地应用到工业、农业、商业、国家机关、大专院校、科研单位、金融、财贸和国防军事、情报等各行各业的管理信息系统(MIS)、办公自动化系统(OA)、决策支持系统等领域中。1.1表、关系模型和数据库一、数据库(Database,即DB)

存贮在一起的相关数据的集合,是存贮数据的“仓库”。由一个或多个数据表组成。

1.表文件(扩展名.DBF)从上表所知数据是以一定规定存放在一个表中,这个表叫数据表,以文件形式保存就叫表文件,扩展名为.DBF。

表文件数据表文件:由数据库进行管理的表文件。自由表文件:末加入或从数据库中释放出来的表文件.数据是如何存贮于数据库中的呢?我们来看下面例子:

STU1.DBF学号 数学 计算机基础马列原理体育总分平均分96210190.0090.00 88.0094.00362.00 90.5096210290.0087.00 87.0078.00342.00 85.5096210391.0080.00 89.0084.00344.00

86.0096210492.0094.00 90.0092.00 368.0092.0096210578.0076.00 65.6090.00 309.6077.40例如:有一学生信息数据库文件STU.DBC,其中含有二个数据表文件:STU1.DBF(学生成绩表文件)、STU2.DBF(学生档案表文件),显示如下:观察表可见:(1)一个表中存放的数据之间是具有相关的属性。(2)大量的数据是按照规定有组织地放在表中,是以二维表形式。(3)一个表文件由行和列组成,行叫表的记录,列叫表的字段。即在表中,描述对象的项目称为数据项(又称字段),所有数据项组成一个记录,若干个同类记录构成表文件。

STU2.DBF学号姓名 性别出生日期就读方式平均分操行成绩奖学金备注962101 李蓉 女20/05/78统招 0.00优 962102 张天明 男07/09/77 统招 0.00良962104 王小菲 女08/09/76统招 0.00优962105 党力 男23/12/77 统招 0.00及格4.数据库系统由数据库、数据库管理系统以及支撑数据库管理系统的软、硬件构成。数据库系统是实现有组织地、动态地存贮大量的相关数据,方便用户访问的计算机软、硬件资源组成的系统。3.数据库管理系统(DatabaseManagementSystem即DBMS)操作和管理数据库中的数据记录的软件。它能合理地组织和存贮大量数据,并支持对于数据库表中数据的各种操作,如:更新、排序、索引、查询、列表、打印等。2.数据库文件(扩展名为.DBC)数据库组织、存贮、管理表属性描述文件。一个数据库可包含了一个表或多个表,如上STU.DBC数据库文件有二个表文件.二、关系模型数据模型:描述客观事物及其联系、反映数据之间和记录之间的联系。常用的三种数据模型:层次模型(hierarchicalmode)

网状模型(networkmode)

关系模型(relationalmode),即:数据之间的关系是一个二维表关系。上面所讲的数据库就是建立在关系模型上的,所以又叫关系数据库。分析二维表可知:

1、每一行为一条记录,无完全重复的行(主关键字不同)。

主关键字:用于区分不同记录的属性(字段),如:编号、学号、准考号、产品号等。

2、每一列是一个字段,具有相同的属性。

3、每一项是最小的(不可分的)数据项。 STU1.DBF学号 数学 计算机基础马列原理体育总分平均分96210190.0090.0088.0094.00362.0090.5096210290.0087.00 87.0078.00342.0085.5096210391.0080.00 89.0084.00344.00

86.0096210492.0094.0090.0092.00 368.0092.0096210578.0076.00 65.6090.00 309.6077.40 STU2.DBF学号姓名 性别出生日期就读方式平均分操行成绩奖学金备注962101 李蓉 女20/05/78统招 0.00优 962102 张天明 男07/09/77 统招 0.00良962104 王小菲 女08/09/76统招 0.00优962105 党力 男23/12/77 统招 0.00及格如:以“学号”为关键字,可查询二个表中任一学生的情况。结论: 数据库系统与文件系统不同,其数据是独立于程序而存在的,并可提供给多用户共享使用。对所有数据实行统一的、集中的、独立于程序的管理。数据表STU1STU2应用程序学生成绩统计表(程序1)学生个人简历情况(程序2)学生奖学金评定(程序3)获取数据1.2VFP是数据库管理的简单语言一、一个数据库管理的简单语言

VFP语言由两部份组成:

1.数据定义语言DDL(datadefinitionlanguage),建立命名的数据库(表)和管理列(字段)名字和属性,还可进行索引等。

2.数据管理语言DML(datamanipulationlanguage),主要涉及查询和修改以及数据语句的增删等。

VFP有超过400条命令和300多个内部函数,还包括类SQL(StructuredQuerylanguage)数据库标准语言命令。 例题:编写程序完成:按字段“学号”查询某一个学生。程序如下:usestu1indexon学号toxh-1setindextoxh-1accept“请输入查询学生的学号:”tonolocateallfor学号=nodisplay学号,数学,计算机基础,马列原理,体育,总分,平均分closeall执行该程序后屏幕显示:请输入查询学生的学号:用户从键盘上输入需查询的学生的学号“962104”,然后按Enter查询结果显示如下:学号数学计算机基础马列原理体育 总分平均分96210492.0094.0090.00 92.00368.0092.00(演示程序1-1)二、VisualFoxPro程序的结构1.一个VFP程序由若干文本组成,每一文本行是一个命令语句(一条语句也可用连续符“;”分写于两行上)。2.每条命令语句总是以命令动词开头,后跟子句。形式如下:Verb

[additionalclauses]

[&&comment]

eol动词 子句 注释行结束(可是多个)(顺序可是任意的)(非执行命令)(回车符)Indexon学号toxh-1&&建立索引文件3.命令动词或关键字可简写前四个字符如:display—disp create——crea relation—relacommand—comm4.程序中的命令语句的先后顺序的排列就是执行时的先后顺序。

三、语法形式排印上的约定

对命令或函数的语法形式,有一定的格式,在排印时给出特定的约定我们在后面的学习中将学习每个语句的格式,必须掌握书写的要求、功能。例如:显示学号为“962104”的命令:dispall学号,数学,计算机基础,马列原理,体育,总分,平均分for学号=“962104”它的语法形式是:DISPLAY

[<范围>][<字段名1>,<字段名2>…][FOR<条件>]本书约定(书P7)1、关键字与符号大写;<>;();[];/;…2、表达式<Expression> <cExpression> 字符型表达式

<nExpression>数值型表达式

<dExpression> 日期型表达式

<tExpression>日期时间型表达式

<LExpression>逻辑型表达式

<yExpression>货币型表达式

<eExpression> 上述几种表达式之一3、名字(见P8)

<file> 文件名

<field> 字段名

…4、缩写说明(见P8)

VFP命令和函数常用的缩写和术语如下:缩写 含义 ADDITIVE 保留或保住的意思 alias 工作区别名…二、VFP的文件类型(P15)

扩展名 文件类型 扩展名 文件类型

.CDX 复合索引文件 .DBC 数据库文件

.DBF 表文件 .DCT 数据库备注文件

.EXE 可执行程序文件 .FMT 格式文件

.FPT 表备注文件 .FRT 报表备注文件

.FRX 报表文件 .FXP 编译的程序文件补充:系统容量和文件类型一、系统容量(P13)表文件的最大记录数 10亿记录的字符最大数255表字段的最大字符数255

1.3FoxPro的历史地位、VFP8.0,9.0版本和展望

数据库(Database,即DB)是存贮在一起的相关数据的集合,是存贮数据的“仓库”。其名词源于20世纪50年代,现在,数据库技术已成为计算机领域最重要的技术之一,它是软件学科中一个独立分支(即研究数据库的结构、存贮、设计和使用的一门软件学科)。数据库技术就是作为数据处理中的一门技术发展起来的,今天它已广泛地应用到工业、农业、商业、国家机关、大专院校、科研单位、金融、财贸和国防军事、情报等各行各业的管理信息系统(MIS)、办公自动化系统(OA)、决策支持系统等领域中。

Fox数据库是属于关系数据库,其中VFP是全国非计算机专业计算机等级二级考试用得最广的语言之一,也是计算机专业C/S结构前端用得最多的工具之一。最早将Fox数据库引入中国大陆之后,我们已先后主编出版了11本Fox教材和著作。1.3.1FoxPro是与dBASE全兼容的FoxBASE+发展而来的关系数据库管理系统VFP、一般FoxPro、FoxBASE以及dBASE都属于叫作xBASE的数据库管理系统范畴xBASE最初源于1972年开发的JPLDIS的主机DBMS。当PC微机和兼容机在80年代普及的时候,美国Ashton-Tate公司开发的dBASEⅡ很快出现,作为牵头的数据库管理程序。dBASE的交互式命令可使用户很方便地建立、编辑数据库和打印报表,还包括一个简单易学的运用语言,编程者使用它能为客户建立菜单驱动定制的应用程序。让他们能通过菜单选择和编辑数据,精确地打印其需要的报表。

dBASE的功能使它成了最普及的微机数据库管理系统

•高峰时期dBASE占微机用户80%-85%。dBASE

的弱点

•用户抱怨:仅显示一个圆点,几乎不给用户任何提示。

•编程人员的抱怨:不能建立数组等,没有包括一个“编译器”。

FoxBASE于1984年由美国的FoxSoftware公司,推出。

比dBASEⅢ快6.74倍,且全兼容,还有数组、伪编译等许多功能提高,深受用户欢迎。

1987年笔者发表了中国大陆第一篇介绍狐狸软件的文章《FoxBASE+新颖关系数据库》,将其引入中国。

FoxBASE+(1986年)的1.12版—2.00版(1987年7月)—2.10版(1988)

内存分配 带筛选索引

FoxView FoxGraph等工具

FoxPro(一种比FoxBASE+更高级的关系数据库管理系统)1989年11月首次出现时,这个FoxSoftware公司的新产品便被许多数据库用户和编程者完全地接受了。一、FoxPro关系数据库管理系统有如下特点:1.3.2新的数据库工业标准与FoxPro的进展

1、速度快。比dBASEⅢ快16倍,比FoxBASE+快2倍,其专利技术Rushmore优化检索信息比竞争者快100倍,且与dBASE和FoxBASE+全兼容。

2、其用户界面基于窗口和下拉菜单(象Macintosh一样),可用鼠标器和键盘操作。3、菜单驱动时,在命令窗口中自动产生等同的一组命令。4、有功能强大的内部编辑器,用它可方便地编程。5、为编程者提供了菜单和屏幕产生器,能容易地建立带有单选 按钮和复选框的弹出菜单和精致的窗口屏幕以及带鼠标的 其它高级界面,让人耳目一新。7、有低级I/O文件处理功能(类似于C语言中的文件处理功能),使 高级编程者编程能力更强。8、应用程序建立器可使程序自动生成。9、有强大的工具。如,DistributionKit能产生完全独立的可执 行文件(.exe文件),以及LibraryConstructionKit可与C 语言、汇编语言接口,构造函数库,扩大FoxPro功能。10、有数据库标准语言SQL(StructuralQueryLanguage)的嵌入以 及RQBE(RelationalQueryByExample)查询。11、 有强大的帮助库和联机帮助信息等。 FoxPro轻松地显示,它已成为新的数据库工业标准。6、有速度极快的多种索引文件(复合、结构复合、压缩索引文件)。二、FoxPro2.5,2.6的功能1、1992年下半年推出FoxPro2.5,除了是32位,速度比2.0版 快3倍,有255个工作区和有General(通用)新字段等特点 外,主要是推出了四个平台的FoxPro2.5(forDos;for Windows;forUnix;forMacintosh)。特别是FoxPro2.5for Windows,专家评论:“它的出现标志了微型计算机历史 中的一个里程碑,因为你现在可将80年代的MS-DOS商 用语言xBASE写的程序稍作修改(或根本不作任何修改)运 行在90年代的操作环境Windows3.2等图形用户界面(GUI) 下。”2、FoxPro2.5forWindows特点如下:保留性独立性内存管理性内部交换性有与Windows一样完全的图形用户界面(GUI)的特点支持Windows各种标准字型(Fonts)增加了两个工具:Immigrationkit,Service/clientConnectivitekit等3.微软公司于1994年下半年推出FoxPro2.6,除了具有FoxPro2.5四个平台的所有功能外,它主要增加了Wizard向导(用鼠标器便可完成建立数据库表、生成屏幕,打印报表等全部工作),以及像dBASEIV那样的目录管理(Central)。

三、VisualFoxPro3.0

1995年6月,微软公司推出VisualFoxPro3.0forWindows:面向对象编程有可视工具和控件以非dBF格式库与服务器相联(客户/服务器结构),并有前端、后端数据库概念使FoxPro首次升级为VFP。四、VisualFoxPro5.0版面向对象的数据库开发系统

VisualFoxPro5.0(1996年8月28日,微软公司推出)面向对象的数据库开发系统继承了3.0版的领导传统。具有ActiveX扩展、增加的性能、改进的连接特点和增加的开发环境等强大的功能提高:

现在用ActiveX,开发者可以选择一个较宽的语言工具、应用程序和可重复使用的部件范围来更快和更容易地生成丰富的交互式应用程序用户可以用诸如OfflineView(游离视图)和多级客户/服务器功能,甚至工作在Internet(国际互联网)上的服务器那样较大的改进连接特点来开发应用程序。用户也将享有增强的开发环境。VisualFoxPro有极大的灵活性,用它可从应用程序、客户/服务器数据库或本地数据库存贮集成数据,开发能运行在多个平台上的应用程序。五、1998年8月26日微软公司推出了作为MSVisualStudio98组成部份的VisualFoxPro6.0forWindows。

OLE拖放

用VFP6.0可以创建由ActiveDocument宿主程序(如Internet浏览器)所包容的ActiveDocumentVFP6.0Automation现在支持套件模型线程的改进

VFP6.0新增和改进了应用程序开发工具

•组件管理库、改进了的应用程序框架

•代码范围分析器应用程序

•项目管理器挂接程序

•新增和改进了的向导(应用程序向导等)

•改进了的应用程序框架

Access和Assign方法程序对GIF和JPEG图形的支持以及新的改进了的语言元素和对2000年日期的支持等可直接调用VFPAPI库文件Foxtools.fll中有很多文件名处理函数创建Web页,可在表单代码窗口中访问“表单菜单、即使在表单代码窗口中,也可以使用CTRL+E键盘快捷键运行表单等支持HTML的帮助

六、VisualFoxPro7.0

2002年微软公司推出了VisualStudio.NET7.0,VisualFoxPro7.0版(测试版)是其中的成员但VisualStudio.NET7.0的正式版推出后就不包VFP7.0了,使人不知何故。VFP7.0除了与.NET平台有密切关系外,还具有数据库容器事件(用户可自己编写代码、方法、函数或过程来响应数据库容器事件)智能检测;新增和增强的指令、函数及类;提供VFPOLEDB;服务器的增强等。

1.3.3VFP8.0,9.0版本的新特点及展望全面的数据访问

Cursor-Adapter(ADO)结构化错误处理

•代码中使用TRY···CATCH···FINALLY结构(用THROW分支处理例外)控制和“包”住错误处理,并且使用Exception对象管理。

View设计器

•在QueryView设计器和源代码输出之间使用的一种方法编辑建立SQLSelect语句查询。

2003年2月1日美国微软公司推出VisualFoxPro8.0版后,一段时间以来由于其7.0版在VisualStudio.NET7.0正版中末见到而引起的该公司今后是否还发展狐狸数据库的疑虑便在用户中释然了。2005年推出VisualFoxPro9.0版. VFP8.0,9.0与FoxPro以前的版本全兼容,并且与VisualStudio.NET2003,.NET2005兼容。此外还有如下“亮点”。支持自动增量WindowsXP题目支持

提供WindowsXP题目到VFP应用程序,包括到表单和容器级控件。高级控件

•可使用如下丰富的特点构建美妙的客户端桌面表单,例如面向页框tabs、锁住和自动扩大列的尺寸、高亮度标注网格行、改变背景颜色和在命令按钮上置图像等。

事件处理

•绑定原有的和安制的事件及方法到其它VFP对象。

XML数据导入和导•在VFP数据Cursors和ADO.NETDataSetes之间使用支持XMLDiffGrams来导入和导出层次化的XML。

XMLWebServices•发佈和消耗SOAP(其使用包含微软SOAPToolkit3.0,基于与超过HTTP的.NET技术兼容的XMLWebServices)。

OLEDBProvider•可提供对来自诸如VisualStudio.NET和officeXP其它客户端的VFP数据的访问。SQLServer2000桌面引擎(MSDE)•可建立桌面和共享与SQLServer2000兼容的解决方案,并且能不用修改代码直接移植它们到SQLServer2000。

开发的丰富功能

•使用TaskPane来管理开发任务并访问VisualFoxPro帮助、XMLWebServers和社区新闻·新的工具栏(Toolbox)对诸如类、控件和程序等频繁使用的项目提供容易地访问。

笔者1987年首次在国内介绍FoxBASE+时,曾写文估计:“Fox将取代占微机数据库用户90%以上的dBASE”现在看来的确是如此了,Fox已风靡各地。可以预见,随着Fox数据库的不断发展,使用它的人将会越来越多,它将成为新世纪人们日常生活、工作中不可或缺的工具和帮手。 1.4VFP的窗口、菜单及其它启动:开始菜单——程序——VFP程序组窗口中双击狐狸头像图标便启动VisualFoxPro6.0退出:直接从“文件”弹出菜单中选择“退出”,或选择右上角带X的按钮关闭,或在命窗口输入Quit命令退出。标题栏改变尺寸按钮主菜单栏主工具栏下拉菜单工作区域命令窗口第二章常量、变量和表达式2.1常量类型:字符常数、日期常数、逻辑常数、数值常数、货币常数和日期时间常数。2.2变量 字段变量(field)

变量: 一般内存变量 内存变量(memvar): 系统内存变量 数组变量。

一、字段变量字段变量:数据表中的每一个字段,字段名就是字段变量名。字段变量的当前值等于表中当前记录该字段所对应的内容

。如:表STU1中:学号,姓名,数学成绩等等字段都是字段变量名,其值是每一个学生相应的数据。二、内存变量

内存变量:用内存单元存贮的变量。内存变量名:由汉字、26个英文字母、0-9数字字符或下划线(_)组成。必须由字母字符或汉字开头。内存变量的类型则是“动态型”,即在程序执行期间当变量建立时才赋予。如:A1,BB,XT,注:内存变量名一般不要与正打开的表的字段名同名,VFP内存变量有如下的型:A Array (数组型)C character (字符型)D Data (日期型)L logical (逻辑型)N Number (数字型)Y Currency (货币符号型)T Datetime (日期时间型)系统内存变量:(systemmemory)是一种特殊的内存变量,它是用来保持含有信息(例如,文本报表应打印的拷贝数等)的系统变量。可通过一个前导下划线(例如,_pcopies)来识别它。系统内存变量由VFP预先定义好了的,所以属性是固定的。例如:numcopy=2&&建立叫numcopy的内存变量为N型。_pcopies=2&&赋值于已存在的系统内存变量

numcopy="Hello" &&改变变量的型为C型_pcopies="Hello" &&错误,不能改变为C型1、建立内存变量赋值命令格式1:STORE<表达式>TO<内存变量表>格式2:[<内存变量>]=<表达式>例:AB=5 &&数值5赋给变量AB?AB5STOREAB+8TOAN&&将AB的值+2存入AN中AA=“成都”(或STORE“成都”TOaa)xy=12345X1=.t.2、释放内存变量格式:RELEASEALL[LIKE|EXCEPT<结构>]|<内存变量表>例如:releaseAAreleasealllikeA*(或:releaseallexceptX*)3.显示内存变量格式:DISPLAYMEMORY[TOPRINT] LISTMEMORY[TOPRINT]见书P274.内存变量文件(.MEM)格式:SAVETO<文件名>[ALLLIKE/EXCEPT<结构>]功能:保存当前内存中的内存变量于指定的文件名中。格式:RESTOREFROM<文件名>[ADDITIVE]

功能:将存贮内存文件中的内存变量调入内存。

本章学习VFP的自由表文件.DBF的建立和操作,分为二种方式来学习:菜单方式——用鼠标选择菜单项进行数据的管理和使用,即面 向对象的操作方法命令方式——在命令窗口输入命令语句进行数据的管理和使用第三章自由表(FreeTable)

3.1表文件结构的建立和修改一、表的结构的建立

结构(字段)表文件数据(记录) 建立表文件必须先定义好表的结构,即定义字段的三个参数:1.字段名——由汉字、字母、0—9的数字、“—”下划线组成。 如:学号、NAME、XH-1等。2.字段类型:

(1)字符型(Character)字段(C):存贮所有能打印的ASCⅡ字符及空格符及所有汉字系统的可打印的汉字和各种符号,即任何文本(Text)。

(2)数值(Numeric)型字段(N):存贮可参与加减乘除运算的0—9的数值。

(3)逻辑型(Logical)字段(L):存放.真.或.假.两个逻辑值。输入T(t)或Y(y)为真,输入F(f)或N(n)为假。如,姓别:男或女,婚姻:真或假。

(4)日期型(Date)字段(D):存贮日期数据。VFP规定输入和显示的默认格式为YYYYMMDD,对应年月日(年取4位)。可用SETDATE等设置命令改变为YY.MM.DD等多种格式。日期型字段可进行日期运算。

(5)备注型(Memo)字段(M):用以存贮大量的文字信息,表文件中如果包含有备注字段,则除了该表表文件外,还有一个与表文件同名扩展名“.FPT”的备注型文件,用来存放备每一条记录的注型字段的内容,而备注型字段本身只存放其内容在备注型文件中的地址。因此备注型字段除了能进行编辑、显示和打印外,不能进行其它操作。它是不定长度的长字符串输入,如:报告、文章、简介、说明等。

(6)通用型(General)字段(G):它类似一个备注型字段,但主要用来支持Microsoft的对象链接和嵌入OLE(Objectlinkingandembedding)。通用数据型字段的内容也存贮在所分配的.FPT备注文件中,它可以包括任何类型的链接或嵌入的对象。

比如,可以链接或嵌入任何文本、图象、照片、声音、图表、二进制文件或由支持OLE的应用程序所建立的其它对象进入通用数据型字段。

(7)日期时间型(DateTime)字段(T):既可以存贮日期,也可以存贮时间或者两者兼有的值。其值是以“yyyymmddhhmmss”字符格式存贮的,即年月日时分秒的形式。可用设置命令设置格式。

(8)浮点数值型(Float)字段(F):或叫浮动型字段,与N型字段相同,是数值类型,以ASCⅡ码形式表示。主要用于科学运算应用程序(因它要求精确运算)。以IEEE(InstituteofElectricalandElectronicsEngineers)所描述的二进制浮点表示型式存贮

(9)双精度数据型(Double)字段(B):双精度比值型数据(Numeric)精确。Double数据型是真正的浮点数(双精度的),一般用于科学计算。

(10)整数型(Integer)字段(I):使用没有小数值的整数。

(11)货币型(Currency)字段(Y):表示货币量的数据而代替用数值型(N)数据表示货币。它的值的范围是-2337203685477.5808至22337203685477.5807。值的前面应有美元符号“$”。如$388.88等。

(12)二进制(binary)字符型字段:存放想维持的、不用通过代码页转变的任何字符数据。它的值的范围是任何字符。

(13)二进制(Binary)备注型字段:存放想维持的、不用通过代码页转变的任何备注字段数据。它的范围仅受现存内存限制。3.字段宽度——字段中能够存放的最大字符数或数字的最大位数 字符型字段不得大于254个字符,否则用备注型字段存贮。 数字型字段(N)的宽度=整数位数+小数位数+1(小数点)

逻辑型字段宽度为1, 日期型、日期时间型、货币型、双精度数据型字段宽度为8 备注型、通用型、整数型以及二进制备注型(Binary)字段宽 度为4。 浮点数值型字段(F)的宽度=整数位数+小数位数+1(小数点)

二进制字符型(Binary)为1到254个字节。4.小数位:字段的类型是数字型(N)和浮点型(F),就须给出小数位数。二、建立表结构的命令格式:CREATE[<文件名>|?]功能:建立一个新的表文件,文件的扩展名是.DBF。如:CREATESTU.DBF进入表设计器,可定义表的结构(三个参数)了。见P40。(1)登录号 字符型(C) 9(2)登录时间 日期型(D) 8(3)关键词 字符型(C) 11(4)行文者号 字符型(C) 10(5)文档名 字符型(C) 50(6)行文者名 字符型(C) 0(7)行文地 字符型(C) 50(8)登出刊物 字符型(C) 20(9)行文时间 日期型(D) 8(10)页数 数字型(N) 3(11)涉及金额 数字型(N) 11 4(12)处理情况 字符型(C) 50(13)摘要 备注型(M)

4例1:建立文档管理系统的表结构,DF.DBF字段名 类型 宽度 小数位方法:1、在命令窗口键入createDF.DBF

2、用鼠标单击:文件菜单笺(主菜单)—新建(弹出的子菜单)—表(对话框)—新文件。

例2:建立学生成绩档案STU2.DBF。字段有学号,姓名,性别,体育,高数,计算机基础,英语,平均成绩,总分,排名,备注。用二种方式来建立:(1)窗口用命令建立(2)用菜单方式建立 实际练习1三、表结构的修改命令格式:MODIFYSTRUCTURE功能:显示表文件结构,并允许修改此表的结构。练习:修改表文件STU2.DBF。

MODIFYSTRU实际练习2

建立表结构后,VFP系统会提示:“现在输入数据记录吗?”,如果选择是“Y”,系统则打开一个表窗口,在此窗口中,显示出表文件记录的全部字段,依次输入这些字段的数据,记录就存在了。当完成输入时,用鼠标单击此窗口右上角带×的按钮关闭窗口,便可退出完成,该表文件的数据就以记录的形式保存。

*备注型字段的数据输入方法二、追加记录命令APPEND命令格式:APPEND[BLANK]作用:在当前表的尾部(无论表中有无记录)追加新一条记录(或一条空记录)。

当前表

--正在操作的表。 3.2 表数据的输入

一、建立表结构时输入

三、在表中插入记录命令INSERT格式:INSERT[BEFORE][BLANK]功能:在表文件中插入一条新录。四、用BROWSE命令追加数据记录格式:BROWSE作用:打开了浏览窗口,可增加、修改、查阅记录。实际练习3一、打开和关闭表文件命令

3.3表的打开、关闭、显示和定位格式1:USE[<文件名>]功能:打开<文件名>指定的表文件,该表如有备注型字段,则自动同时打开相应的备注文件。格式2:USE 功能:关闭当前打开的表文件。格式3:closeall功能:关闭所有打开的文件。二、表的显示和列表建立表后,用户根据需要经常要对表进行各种查询显示和打印。1.显示表的记录LIST命令格式:LIST[OFF][<范围>]

[[FIELDS]<表达式表>]

[WHILE<条件>]

[FOR<条件>]

[TOPRINT|TOFILE<文件>]功能:连续显示表文件的内容。说明:用户可根据自己的需要确定上面的任选项,组合LIST命令的各种功能、形式。选项功能: 表示不显示记录号[OFF] 指定对哪些记录进行操作。范围包括: RECORDn第几号记录

NEXT n当前记录开始的几个记录

(n可是一个表达式)

REST 自当前记录开始至文件末尾的所有记录。

ALL 所有的记录。不选[<范围>]则隐含范围为ALL。 从当前记录开始查找,当出现第一个不满足条件的记录时则停止查找。这种方式一般用于经过排序或索引的表文件。 每个表达式可以是字段名表,也可以是一般的表达式,但之间用“,”分隔。[<范围>][[FIELDS]<表达式>]WHILE<条件>]

[TOPRINT]:在打印机上打印出来。[TOFILE<文件>]:将结果输出到用<文件>指定的磁盘文件。例如1:查看STU1表中所有计算机基础成绩大于或等于80分的学生的信息

LISTALLFOR计算机基础>=80 从<范围>内的第一个记录开始,

显示所有条件满足的记录,直到范围内的记录搜索完毕(与WHILE<条件>]的区别)。注:<条件>是逻辑表达式,它只有真和假两个值,条件满足为真(.T.),条件不满足为假(,F.)。[FOR<条件>]例如2

:查看STU1表中所有计算机基础成绩为80分及以上学生的学号,计算机基础成绩,体育成绩。例如3:查看STU2表中所有学生。例如4:查看STU2表中所有就读方式为统招的男生的学号,姓名。DISPLAY命令命令格式:DISPLAY[OFF][<范围>][[FIELDS]<表达式>][WHILE<条件>][FOR<条件>][TOPRINT|TOFILE<文件>]

例3:显STU2表的第4条记录的内容。DISPLAY与LIST命令功能不同点:(1)VFP的DISPLAY命令每显示一个窗口的信息暂停一次。按任意键继续显示,而LIST显示不暂停。(2)DISPLAY命令省略范围选择项时,仅显示当前记录,而LIST命令则显示所有记录。2.显示表的结构格式:LISTSTRUCTURE[TOPPRINT|TOFILE<文件>]菜单方式:显示——表设计器(并可修改)3.显示表工作状态格式:LISTSTATUS[TOPRINT|TOFILE<文件>]三、记录的定位打开表时,指针总是指向第一条记录。但可随着操作指针要移动,或用命令移动指针,改变当前记录。定位命令是最直接的一种。即用GOTO命令或SKIP命令移动指针。格式1:GO[TO][RECORD<n>] 定位到记录号为n的记录

GO[TO]TOP 定位到第1条记录

GO[TO]BOTTOM 定位到最后一条记录例5:USEstu1GOBOTTOMDISPLAYGOTOPDISPLAY

GO3disp格式2:SKIP[±n]功能:以当前记录为基准前移(-)或后移(+)N条记录。说明:不选任选项,则默认n=+1。

注意:SKIP命令是相对移动,GOTO命令是绝对移动。 SKIP命令上移不能超过首记录,下移不能超过末记录。例4.6:3.4记录数据的修改和删除一、修改表数据1、EDIT修改命令格式:EDIT功能:显示需修改的记录。例72、浏览修改命令BROWSE格式:BROWSE[FIELDS<字段名表>][LOCK<数值表达式>][FREEZE<字段名>]功能:BROWSE可打开一个全屏幕编辑窗口,可浏览、修改、删除、追加记录。说明:[LOCK<数值表达式>]指定屏幕左边锁定字段的个数,当屏幕左右平移时,这些锁定的字段保持在原来的位置不动,便于用户对照。[FREEZE<字段名>]使光标冻结在这个字段上,用户只能修改该字段的数据,其它字段只能显示不能修改,提高了数据的安全性和操作效率。

[FOR<表达式>]

按指定条件进行判断,当<表达式>的值为真时,方可显示记录。

例8:useSTU1browselock1freeze数学

3、表运算替代命令格式:REPLACE[<范围>]<字段名1>WITH<表达式1>[,<字段2>WITH<表达式2>[ADDITIVE]…][FOR<条件>][WHILE<条件>]

功能:用表达式的值代替命令中与之相对应的字段的内容,对满足<条件>和<范围>的记录可成批自动、快速地修改。

例1:usestu14、修改通用(General)字段

VFP支持微软公司的Windows对象链接和嵌入(OLE),MODIFYGENERAL命令可在任何活动表的当前记录编辑、修改装有OLE对象通用(General)字段。 格式:MODIFYGENERAL<通用字段>

菜单操作:直接用鼠标双击通用(General)字段,打开了指定的通用字段的编辑窗口,

用户可进行修改等操作.二、删除表记录1、给记录加删除标记格式:DELETE[<范围>][WHILE<条件>][FOR<条件>]功能:给要删除的记录作删除标记。说明:本命令只给记录作删除标记.记录末删除,仍在表中.

命令操作时“*”即为删除标记,用菜单编辑窗口活动时,窗口中记录左边的方块钮,当为黑色时即是加了删除标记,白色为恢复记录.

例92、恢复加删除标记的记录格式:RECALL[<范围>][FOR<条件>][WHILE<条件>]功能:取消记录的删除标志。3、彻底删除格式:PACK功能:删除当前表中加有删除标记的所有记录。注:从当前表中删除记录后不可恢复。4、表记录全部删除命令ZAP格式:ZAP[IN<工作区号>|<表别名>]功能:将所有的记录从表中删去,只留下表的结构。说明:执行ZAP命令等于先执行DELETEALL,然后再执行PACK。以上的所有操作都可在浏览表后,操作主菜单中“表”进行。3.5表的排序、索引和查询一、表的排序:对表记录进行物理整理,生成一个新表文件。格式:SORTTO<文件名>ON<字段名1>[/A][/D][/C][,<字段名2>[/A][/C][/D]]…[<范围>][FIELDS<字段表>][FOR<条件>][WHILE<条件>]

功能:按关键字段的值从小到大(升序/A)或从大到小(降序/D)将表的记录重新排列,生成一个新的表文件(.DBF)。说明:(1)新表文件的结构与原表结构一样。 (2)选项>[/A]是升序,[/D]是降序。如有[/C]选是指按字典排列,大小写一样:0——9,Aa——Zz;如无[/C]选是指按ASC‖码顺序排列:0——9,A——Z,a——z。物理整理(3)使用排序表文件时,必先打开。如添加了新记录,必须重新排序,生成一个新表文件。例1:二、表的索引:对表记录进行逻辑整理,生成一个索引文件。1、索引的类型 .IDX文件:只包含一单个索引。 压缩文件,选COMPACT]类型 非压缩文件

.CDX文件(复合索引文件):包含多个索引,每个索引叫一个索引标识。 结构复合索引文件,其文件名与表名相同,打 开表时自动打开。 独立复合索引文件逻辑整理2、索引文件的建立 建立.IDX索引文件:格式1:INDEXON<关键字表达式>TO<文件名>[COMPACT][ADDITIVE]功能:对当前表中各记录<关键字表达式>的值的大小,以升序进行记录逻辑上的重新排序,并将逻辑顺序存入TO后指定的索引文件名的索引文件中

例2: 建立.CDX索引文件格式2:

INDEXON<关键字表达式>TAG<标识名>[OF<文件名>][FOR<条件>]功能:对当前表根据关键字表达式的值以升序进行记录的逻辑排序,并将逻辑顺序存入与表文件名同名或[OF<文件名>]所指的复合索引文件的一个标识中。如在STU2表文件中已建立了下面的索引文件:说明:(1)备注字段不能作关键字。(2)格式2中无[OF<文件名>],则生成一个结构复合索引文件,TAG<标识名>存入与表文件名相同的.CDX索引文件中。如有[OF<文件名>],TAG<标识名>则存入<文件名>所指的独立复合索引文件中。(3)<关键字表达式>即索引可按一个或多个字段进行索引,但与排序不一样,需写为表达式。如: INDEXON姓名+学号TOA2 INDEXONSTR(计算机基础)+STR(数学)TOA3(4)[ADDITIVE],当建立索引文件时,保留已打开的索引文件仍为打开 使用表设计器(TableDesigner)来生成索引方法:打开表;再选择显示+表设计器菜单,单击索引标识卡,出现其对话框;然后在索引名文本框中输入该索引标识的名字,索引名框左边按钮决定升序或降序(对整个索引表达式而言);按拖最左边的箭头钮,可改变索引标识列出的顺序;类型下拉表中可选择索引类型(Primary主索引、Candidate侯选、Unigue唯一等,表达式框可输入索引表达式(Expression);筛选框可形成筛选条件的索引。

注:1、使用表设计器(TableDesigner)生成的索引文件为结构复合索引文件(.CDX)。

2、打开或新建的索引文件在表设计器中才可见。操作练习格式1:USE<表文件名>INDEX<索引文件名表>格式2:USE<表文件名>[ORDER[TAG]<索引文件或标识>]例如:USESTU2INDEXA2

USESTU2INDEX

BB

ORDERTAGXB

USESTU2ORDERTAGXB

USESTU2INDEXSTU2ORDERTAGXH功能:打开表同时打开索引文件。3、索引文件和索引标识的使用

索引文件必须依赖表文件,操作才有意义。

(1)表与索引文件同时打开的命令说明:(1)<索引文件名表>中第一个索引文件是控制(主)索引文件,表中记录指针按第一个索引文件定位。 (2)[ORDER[TAG]<索引文件或标识>]是改变控制索引文件或标识。

(2)单独打开索引文件格式1:SETINDEXTO[<索引文件名表>文件名>|[TAG]<复合索引文件名>|<索引标识名>[OF<复合索引文件名>]]]例如:SETINDEXTOA1,A2 &&A1是主索引文件SETINDEXTOBB

SETINDEXTOBB

TAGXB

OFBB SETINDEXTOSTU2TAGXBSETINDEXTOBBTAGXB,XH 常用:

SETINDEXTO<索引文件名>SETINDEXTO<索引文件名>

TAG<索引标识名>常用: 可以用下列命令改变主索引,而不需重新选择索引顺序。格式2:SETORDERTO[<数值表达式>|<索引文件名>|[TAG]<索引标识名>[OF<复合索引文件名>][IN<工作区名>][ASCENDING|DESCENDING]]例如:SETORDERTOA2 (或SETORDERTO2)&&A2是主索引文件SETORDERTOTAGXBOFBB

SETORDERTOTAGXBSETORDERTO<索引文件名>

SETORDERTO

TAG<索引标识名>

[OF<复合索引文件名>]常用:四、表的查寻1、检索命令FIND

格式:FIND<“字符串”>|<字符串> 功能:在一个已经建立了索引文件的表中,定位到关键字中的内容与命令行中字符串相同的第一个记录。 说明:查询的<字符串>的字段须在建立索引文件时包含的关键字(字段)中。2、检索命令SEEK

格式:SEEK<表达式> 说明:SEEK命令比FIND命令功能更强,可以是一个表达式,且可是C、N、D型。查寻命令LOCATE

格式:LOCATE[<范围>][FOR<条件>][WHILE<条件>]

功能:把当前表指针定位到符合指定条件的第一个记录上。 说明:[<范围>]选择项为指定查找记录的范围。继续查寻命令CONTINUE

格式:CONTINUE

3、一般查寻命令LOCATE和CONTINUE例如:usestu-1 locateallfor数学>=80 disp姓名,数学

continue循环

disp姓名,数学

continue disp姓名,数学

...3.6表的计算、汇总VFP不但能对表的排序、索引、查寻、修改等操作进行管理,而且还能统计、汇总表以及用报表文件将结果存贮和打印出来。一、表的计算命令1、计数命令格式:COUNT[<范围>][FOR<条件>][WHILE<条件>][TO<内存变量名>]功能:统计当前表文件中符合条件的记录数。例3.32(P74)

:在Ffile表文件(见P63表3-4)中,统计出工资大于12000的讲师的记录数,存M1中。

USEFfile COUNTFOR职称="讲师".AND.工资>12000.00TOM1 ?“M1=”,M1 M1=2格式:SUM[<范围>][数值<表达式>][TO<内存变量名表>|TOARRAY<数组名>][FOR<条件>][WHILE<条件>][NOOPTIMIZE]功能:对当前表中选中记录的全部或指定的数值字段或由指定字段组成的数值表达式累加求和。2、求和命令P74例4.33:求Ffile表文件中讲师的平均工资和平均年龄。

USEFfile SUMALL工资,年龄TOG1,G2FOR职称="讲师" ?“工资总和=”,G1

工资总和=45222.00

?“年龄总和=”,G2

年龄总和=84

COUNTALLFOR职称="讲师"TON ?“平均工资=”,G1/N,“平均年龄=”,G2/N

平均工资=22611.00平均年龄=423、求平均值命令AVERAGE

格式:AVERAGE[<范围>][<数值表达式>][TO<内存变量名表>|TOARRAY<数组名>][FOR<条件>][WHILE<条件>][NOOPTIMIZE]

功能:对当前表中选中记录的全部或部分数值型字段及其组成的表达式求平均值并显示,且可存入内存变量名表或一维数组中。例4.34:求Ffile表中讲师的平均工资和平均年龄(题目与上例相同).

USEFfile AVERAGEALL工资,年龄TON1,N2FOR职称="讲师"

?“平均工资=”,N1,“平均年龄=”,N2

平均工资=22611.00平均年龄=42二、表的汇总命令

格式:TOTALTO<文件名>ON<关键字>[FIELDS<字段名表>][<范围>][FOR<条件>][WHILE<条件>][NOOPTIMIZE]功能:对当前表中选中记录的全部或部分数值型字段按关键字值相同的记录进行汇总,并将其结果放入<文件名>指定的表文件中。说明:1.使用TOTAL命令前必须对当前表按<关键字>进行过排序或者索引。 2.生成的汇总文件的结构与表文件结构相同,数据部分只包含当前表文件与汇总文件相匹配的那些字段的值,且对其中关键字值相同的记录的数值型字段求和。例3.35:对宾馆收银表SY,按楼层对其数值字段进行汇总。

USESY INDEXON楼层TOSYI SETINDEXTOSYI LISTRecord# 楼层 房号 姓名 其它应收房费 实际金额 1 二楼 2010 刘炎 48.00 250.00 298.00 2 二楼 2020 周敏 50.00 300.00 350.00 3 二楼 2030 郭洁 45.00 500.00 545.00 4 三楼 3001 郭丹丹80.00650.00 730.00 5 三楼 3008 于驰 50.00 450.00 500.00 6 三楼 3007 罗贵先45.00500.00 545.00

在实际运用中,用户常常需要将表的数值字段进行分类统计,比如宾馆的收银表管理中需要按楼层对房费、其它应收费和实际金额等字段进行汇总,且将汇总结果放到另一个表(汇总表)中去,以便打印报表。 TOTALON楼层TONSUM USENSUM LISTRecord# 楼层 房号 姓名 其它应收房费 实际金额 1 二楼 2010 刘炎 143 1050.00 1193.00 2 三楼 3001 郭丹丹175 1600.00 1775.001、多对多关系、多对一关系及其它关系(1)多对多关系例如学校开设选修课,每一个学生可以选修几门课程,而每门课程又可以被多个学生选学,教务处在管理这些数据时建立一个表JW.DBF,其表结构和部分记录如P77:

从表中可知存在“多对多”的关系,有大量的数据冗余。需要将上表分离成两个“多对一”关系的数据表。一个表为多门课程对一个学生,另一个表为多个学生对一门课程。(2)多对一关系(或一对多关系)第一个“一”表为学生表STUDENT,第二个“一”表为课程表LESSON,“多”表为联系表LINK。

对上三个表需要找出使它们有相互联系的字段(称为关键字段),STUDENT表确定为学号字段,LESSON表确定为课程号字段。而LINK表确定为学号字段与STUDENT表联系、确定为课程号字段与LESSON表联系。

3.7多表的关联、连接和更新在VFP中一般可以同时打开255个表(实际上是受内存限制,内存大还可更多),为使它们之间互不干扰,系统允许开辟32767个工作区。

(1)常用的前10个工作区:工作区号为1至10,

工作区名用A至J表示,(工作区11—32767中指定的别名是w11到w32767)。(2)一个工作区只能打开一个表。同一个表也只能在一个工作区中打开。(3)选择工作区命令 格式:SELECT<工作区号/工作区名>|<别名> 作用:激活工作区2、不同工作区中表的操作如:selecta usestu1selectb usestu2 select1 list use

(4)<别名>是在打开表文件时由ALIAS任选项指定的名字,: 格式:USE<表文件名>ALIAS<别名>如果未用ALIAS任选项,则表文件就是它的别名,也可以用工作区名作为已在该工作区中打开的表文件的别名。接上例:说明:当VFP等启动时,系统默认的工作区是1号工作区,所以到目前为止表操作均在1号工作区中进行。用户可以使用子句<工作区号>中的数值指定工作区号。(5)使用非当前工作区中的表格式:<工作区名/工作区号/别名

>.<字段名>或<工作区名/工作区号/别名

>—><字段名>

功能:显示指定<工作区名/工作区号/别名>非当前工作区

中打开的表的<字段名>的内容。说明:在不同工作区中打开的表都有其相应的记录指针,当前表记录指针的移动不会影响其它工作区中表记录指针的变化sele3usestu1aliass1selestu2Listseles1Listcloseall例3.36:有两个“一对一”的表:学生成绩表STU1和学生档案表STU2。

SELE1 USESTU1 SELE3 USESTU2 SELE1LISTNEXT3姓名,C->性别,C->出生日期,C->就读方式Record#姓名C->性别 C->出生日期 C->就读方式 1李蓉 女 78/05/20 统招 2张天明 女 78/05/20 统招 3王晓云 女 78/05/20 统招

从显示结果看出,非当前工作区(C区)的记录指针未随主工作区指针的移动而移动,故发生了张冠李戴的情况。 要解决这个问题就必须要在两个表之间建立关联,即两个表建立了指针的逻辑关系。在实际的表系统中常常要管理多个表,所以在对多重表的操作中使用关联、连接、更新,设置和存贮表之间的临时关系是十分重要的。一、关联格式:SETRELATION[TO<关键字表达式>|<数字表达式>INTO<别名>][,TO<关键字表达式>|<数字表达式>INTO<别名>]…ADDITIVE功能:把当前工作区(主工作区)中的表文件与〈别名〉所指定的辅工作区中的表文件通过〈表达式〉建立关联。说明: (1)命令中的〈关键字表达式〉其值必须是两个表文件共同有的字段,它是两个表文件建立关系的条件。 (2)命令中若使用关键字表达式,则〈别名〉表文件必须在该关键字表达式上建索引文件并打开。 (3)命令中若用数值表达式,则两个表文件是按照记录号相关联的。 (4)如果〈别名〉表文件中没有找到匹配的记录,指针将定位在文件尾,EOF()=.T.;

(5)VEP允许主工作区同时和多个辅工作区建立关联,即A可以关联B,A又可以关联C,……等等; (6)格式中如有[ADDITIVE]任选项,表示本命令建立关联时仍然保留该区与其它工作区已经建立的关联。

(7)命令若缺省任选项(SETRELATIONTO),则将中断关联。例题1:SELE1USESTU1INDEXON学号TOXH1SETINDEXTOXH1SELE3USESTU2INDEXON学号TOXHSETINDEXTOXHSELE1SETRELATIONTO学号INTOCLISTNEXT3姓名,C->性别,C->出生日期,C->就读方式Record#姓名C->性别 C->出生日期 C->就读方式 1李蓉 女 78/05/20 统招 2张天明 男 77/09/07 统招 3王晓云

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论