当前位置:文档之家› 第一部 vfp基础教程 基础知识 命令大全

第一部 vfp基础教程 基础知识 命令大全

第一部 vfp基础教程 基础知识 命令大全
第一部 vfp基础教程 基础知识 命令大全

第一部vfp基础教程基础知识命令大全

2010-04-10 22:24:24| 分类:默认分类| 标签:|字号大中小订阅

第一部vfp6.0基础教程==

第二部百科全书-vfp使用简介===

第三部编程中国-VFP基础教程====

第四部vfp基础知识=====

第五部Visual FoxPro 6.0概述=====

======================

第一部vfp6.0基础教程

第一章绪论

数据库技术产生于60年代末、70年代初,它的出现使计算机应用进入了一个新的时期——社会的每一个领域都与计算机应用发生了联系。数据库是计算机的最重要的技术之一,是计算机软件的一个独立分支,数据库是建立管理信息系统的核心技术,当数据库与网络通信技术、多媒体技术结合在一起时,计算机应用将无所不在,无所不能。

作为本课程学习的开始,我们首先要了解的是:什么是数据库?什么是数据库管理系统?什么是Visual Foxpro?

一、数据库的基本概念

1.什么是数据库

数据库这个词有多种解释,简单的定义是这样的:数据库(DataBase)是结构化数据的集合。

David M.Kroenke关于数据库的定义是:数据库是指自描述的完整记录的集合。它表达了三层含义:

a.数据库是自描述的。

数据库除了包含用户的源数据以外,还包含关于它本身结构的描述,这个描述称作数据词典(或数据目录、元数据)。从这个意义上讲,数据库与作为一个自描述的书的集合的图书馆相似:除了书籍以外,图书馆还包含一个描述它们的卡片目录。

b.数据库是集成记录的集合。

数据的标准结构如下:位—> 字节—> 域—> 记录—> 文件, 按这种模式说,文件组合成数据库是非常诱人的,但却无法深入,数据库将包含四种数据:用户数据文件、元数据、索引、应用元数据。

用户数据大多表示为表格,称之为数据表,它存放了用户的各种有用资料和数据。

例如:

学生姓名指导老师老师电话

刘小景钱志国5666043

李娟杨一如5666120

古介新吴萌4108219

屈达钱志国5666043

王成义吴萌4108219

元数据是关于用户数据的结构的描述,称之为系统表。

例如:

表名字段数主关键字

Student7学号

Adviser4姓名

Guideplan3学生姓名

索引数据改进了数据库的性能和可访问性,称之为概括数据。

例如:

学生姓名指导老师

古介新吴萌

李娟杨一如

刘小景钱志国

屈达钱志国

王成义吴萌

指导老师老师电话

钱志国5666043

吴萌4108219

杨一如5666120

应用元数据用来存储用户表格、报表、查询、媒体数据和其它形式的应用组件。并非所有的DBMS都支持应用组件,支持应用组件的

DBMS也不一定把全部组件的结构作为应用元数据存储在数据库中。

c.数据库是模型的模型。

数据库是用户关于现实世界的模型的模型。具体解释是:非计算机操作数据的情况下,人们所建立的一套文件、表格、数字等的处理内容和规则是人们关于现实世界的模型,在计算机操作数据的情况下,数据库设计者将在人们关于现实世界的模型的基础上再次建模,从

而建立一个适用于计算机处理的数据库模型。

三个世界的划分:

现实世界(客观世界):实体、实体集、属性、实体标识符

信息世界(观念世界):记录、文件、字段、关键字

数据世界(计算机世界):位、字节、字、块、卷

2.从文件管理到数据库管理

前面提到从文件组合成数据库是非常诱人的,但却无法深入。实际上,在数据库处理之前,确实采用的文件管理方式,即用数据文件来存放数据,并通过高级语言完成对数据文件的操作。一个数据文件包含若干个“记录(Record)”,一个记录又包含若干个“数据项(Data Item)”,用户通过对文件的访问实现对记录的存取。通常称支持这种数据管理方式的软件为“文件管理系统”,它一直是操作系统的重要

组成部分。

随着计算机处理的数据量不断增加,文件管理系统采用的一次最多存取一个记录的访问方式,以及在不同文件之间缺乏相互联系的结构,不能适应管理大量数据的需要,于是数据库管理系统应运而生,并在上世纪60年代末诞生了第一个商业化的数据库系统——IBM的IMS

(Information Management System)。

3.数据库系统的特点

与文件系统比较,数据库系统有下列特点:

作者:左近1位粉丝2004-11-13 23:29 回复此发言

3 回复:关于Visual FoxPro 6.0的问题

a.数据的结构化。文件系统中单个文件的数据一般是有结构的,但从整个系统来看,数据在整体上没有结构,数据库系统则不同,在同一数据库中的数据文件是有联系的,且在整体上服从一定的结构形式。

b.数据共享。在文件系统中,数据一般是由特定的用户专用,数据库系统中的数据可以有为不同部门、不同单位甚至不同用户所共享。c.数据独立性。在文件系统中,数据结构和应用程序相互依赖,一方的改变总是要影响到另一方的改变。数据库系统中的数据文件与应

用程序之间的这种依赖关系已大大减小。

d.可控冗余度。数据专用时,每个用户拥有使用自己的数据,难免会出现数据相互重复,这就是数据冗余。实现数据共享后,不必要的数据重复将全部消除,有时为了提高查询效率,也保留少量的重复数据,其冗余度可以由设计者控制。

数据库系统可分为三代。

a.非关系型数据库系统。是对第一代数据库系统的总称,包括层次型数据库系统和网状型数据库系统。其主要特点是:采用“记录”作为基本数据结构,在不同“记录型”之间,允许存在相互联系,一次查询只能访问数据库中的一个记录。

b.关系型数据库系统(RDBS)。1970年,E.F.Codd在一篇名为“A Relational Model of Data For Large Shared Databanks(大型共享数据库数据的关系模型)”文章提出了“关系模型”的概念。70年代中期,商业化的RDBS问世,数据库系统进入第二代,目前PC机上使用的数据库系统主要是第二代数据库系统。其主要特点是:采用“表格”作为基本数据结构,在不同的表之间,允许存在相互联系,一次查

询可以访问整个表格中的数据。

c.对象—关系模型数据系统(ORDBS)。将数据库技术与面向对象技术相结合,以实现对多媒体数据和其它复杂对象数据的处理,这就产生了第三代数据库系统。其主要特点是:包含第二代数据库系统的功能,支持正文、图形图像、声音等新的数据类型,支持类、继承、方法等对象机制,提供高度集成的、可支持客户/服务器应用的用户接口。

5.数据库系统的分类

1987年J.D.Ullman在一篇题为“数据库理论的过去和未来”的论文中,把数据库理论概括为4个分支:关系数据库、分布式数据库、演绎

数据库、面向对象数据库。

具体分类可以参考如下内容:

a.单用户数据库和多用户数据库。VFP是一种多用户数据库系统。

b.集中式数据库和分布式数据库。集中和分布是对数据存放地点而言的,分布式数据库把数据分散存储在网络的多个节点上,彼此用网络线路连接,如银行数据。分布式数据库和多用户数据库都是在网络上使用的,但多用户数据库并非一定是分布存储的,如机票数据。c.传统数据库和智能数据库。传统数据库存储的数据代表已知的事实,智能数据库则除了存储事实外还能存储用于逻辑推理的规则,所

以又称之为“基于规则的数据库(rule-based database)”。

二、数据库管理系统和数据库应用系统

1.数据库管理系统

实际上,数据库是存于某种存储介质上的相关数据有组织的集合,为了在计算机中对数据库进行定义、描述、建立、管理和维护,应通过特定的数据库语言进行,这就需要一套支持该数据库语言的系统软件,称作数据库管理系统(DBMS)。一般说,数据库管理系统具

有下列功能:

a.数据定义功能。DBMS向用户提供“数据定义语言(DDL)”,用于描述数据库的结构,在关系数据库中其标准语言是SQL(Structured

Query Language),它提供了DDL语句。

b.数据操作功能。对数据库进行检索和查询,是数据库的主要应用。为此DBMS向用户提供“数据操纵语言(DML)”,用于对数据库中

的数据进行查询,同样SQL也提供了DML语句。

c.控制和管理功能。除了DDL和DML两类语句外,DBMS还具有必要的控制和管理功能。

在讨论可视化的数据库管理系统(如VFP、Access)时,一般而言,从组成结构上看,DBMS的特点和功能可以分为三个子系统:设计

工具子系统、运行子系统和DBMS引擎。

作者:左近1位粉丝2004-11-13 23:29 回复此发言

4 回复:关于Visual FoxPro 6.0的问题

设计工具子系统提供设计工具,包括表生成、窗体生成、查询生成、报表生成和过程语言编译器等工具,设计工具子系统与开发人员相关联。运行子系统提供对设计时产生的程序的执行,它与用户接口。DBMS引擎介于设计工具及运行子系统与数据本身之间。实际上,它将根据以上组件的请求,将其翻译成对操作系统的命令,以实现对物理介质上的数据的读写。除此之外,DBMS引擎还涉及事务管理、

锁定、备份和恢复等工作。

数据库应用系统(DataBase Application System、DBAS)专指基于数据库的应用系统。一个DBAS通常由数据库和应用程序两部分组

成,它们都需要在DBMS支持下开发。

开发一个信息系统,一是要设计数据库,二是要开发应用程序。在开发的方法上有两种重要的方法:信息工程、4GT范型。

三、微机XBase关系数据库系统

1.XBase数据库的演变

上世纪70年代末,Ashton-Tate公司研制dBASE Ⅱ。1984年和1985年,分别推出dBASE Ⅲ和dBASE Ⅲ+ 。1987年,美国FOX

软件公司公布了与dBASE兼容的FoxBASE+。

1989年,FOX软件公司开发了FoxBASE+的后继产品——FoxPro。1992年,美国Microsoft公司收购了FOX公司,第二年推出了FoxPro

for Windows(2.5),以后又推出FoxPro for Windows 2.6版。

1995年,微软首次将可视化程序设计引入FoxPro,并将其更名为Visual Foxpro 3.0。简称为VFP 3.0。以后推出过VFP 5.0版,今天

我们学习的是VFP 6.0版。

2.VFP的主要特点

a.强大的查询和管理功能。

b.引入了数据库表的新概念。

c.扩大了对SQL语言的支持。

d.大量使用可视化界面操作工具。

e.支持面向对象的程序设计。

f.通过OLE实现应用集成。

g.支持网络应用。

四、VFP的界面组成与操作

1.VFP的界面的组成

a.窗口。包括程序窗(它是开发或运行VFP程序的场所)、命令窗(它位于程序窗之内,它用来显示命令)、工具窗。

b.图标。图标是用来表示不同程序和文件的小图像。

c.采单。VFP主要使用两类菜单:下拉式菜单(一般是系统菜单)和弹出式菜单(它平时不在屏幕上,仅当使用时弹出)。

d.对话框。对话框是以人机对话为主要目的的一类窗口,包括文本框、选择框、列表框等等。

2.VFP的界面操作

a.鼠标的操作。鼠标的基本操作有:单击(click)、双击(double click)、拖动(drsp)等。

b.窗口的操作。窗口操作主要有:关闭、移动、改变大小、最大化、最小化等。

c.菜单的操作。菜单是当前可用的命令的集合。VFP的主菜单拥有近70条命令。可以通过鼠标,也可以通过快捷键盘进行操作。d.对话框的操作。对于按钮的操作主要是单击,但它可能展开另一个对话框。对于文本框的操作,主要是编辑文本。对于选择框的操作主要是单选或复选。对于列表框的操作主要是选中内容。对于组合框的操作主要是通过下拉选中内容。

五、VFP的工作方式

1.VFP命令的格式与特点

a.命令格式。一般说,VFP的命令总是由一个命令字的动词开头,后随一个宾语和若干子句(命令子句),用来说明命令的操作对象、

操作结果与操作条件。如:

use SB

list

list for 价格<10000

copy to ZSB for 主要设备

sort to JGPX on 价格fields 名称,价格

b.命令特点。命令的特点有三:一是采用英文祈使句的形式;二是操作对象、结果和条件均可以用命令子句的形式来表示;命令只讲对

操作的要求,不描述具体的操作过程。

c.命令分类。VFP拥有近500条命令,大致可分为以下7类:一是建立和维护数据库命令;二是数据查询命令;三是程序设计命令;

四界面设计命令;五是文件和程序管理命令;六是面向对象设计命令;七是其它命令。

2.两类工作方式

a.交互操作方式。交互操作方式有命令执行方式和图形界面操作方式两种情况。

b.程序执行方式。建立程序,执行程序。

作者:左近1位粉丝2004-11-13 23:29 回复此发言

5 回复:关于Visual FoxPro 6.0的问题

六、VFP的辅助设计工具和项目管理器

1.VFP的辅助设计工具

a.向导。向导是一种快捷的设计工具,它通过一组对话框依次与用户对话,引导用户分步完成VFP的某项任务。

向导名称功能

表向导查询向导本地视图向导远程视图向导交叉表向导文档向导图表向导报表向导分组/总计报表向导一对多报表向导标签向导表单向导一对多表单向导数据透视表向导邮件合并向导安装向导升迁向导SQL升迁向导导入向导应用程序向导WWW搜索页向导创建一个表创建查询创建一个视图创建远程视图创建一个交叉表查询格式化代码并生成文本文件创建一个图表创建报表创建具有分组和总计功能的报表创建一个一对多报表创建标签创建一个表单创建一个一对多表单创建数据透视表创建一个邮件合并文件从发布树中的文件创建发布磁盘创建一个Oracle数据库创建一个SQL Server数据库导入或追加数据创建一个VFP应用程序创建可以访问该数据库的Web页面b.设计器。设计器一般比向导具有更强的功能,可用来创建或者修改VFP应用程序所需要的构件。

向导名称功能

表设计器查询设计器视图设计器表单设计器报表设计器标签设计器数据库设计器连接设计器菜单设计器创建表并建立其索引运行本地表查询运行远程数据源查询;创建查询创建表单创建报表创建标签设置数据库为远程视图创建连接创建菜单c.生成器。生成器也叫构造器,来源英文builder。它的主要功能是在VFP应用程序的构件中生成并加入某类控件。

向导名称功能

组合框生成器命令组生成器编辑框生成器表单生成器表格生成器列表框生成器选项组生成器文本框生成器自动格式生成器参照完整性生成器生成组合框生成命令组生成编辑框生成表单生成表格生成列表框生成选项组生成文本框格式化控件组数据库表间创建参照完整性

2.VFP的项目管理器

a.项目管理器的功能。

b.项目管理器的蜀面操作。

第二章表的基本操作

下面介绍以界面操作方式建立与修改表的方法,随后集中阐明VFP表达式的概念,最后讨论有关的命令。需要注意的是,VFP将表分为

数据库表和自由表两种。

一、表的建立与修改

1.表结构的建立

表结构的建立要完成两个工作,一是设计表的结构,二是建立表的结构。

设计表的结构就是定义各字段的属性,基本的字段属性或包括字段名、字段类型、字段宽度和小数位数等。

a.字段名。字段名用业标识字段,它是一个以字母或汉字开始,长度不超过10的字母、汉字、数字、下划线序列。

b.字段类型。字段类型有:

字符型(C)、存放从键盘输入的可显示或打印的汉字或字符。宽度最多为254字节。

数值型(N)、存放由符号、数字、小数点所组成的数值。最多20位。

货币型(Y)、与数值型不同的是数值保留4位小数。宽度为8字节。

日期型(D)、存放格式如mm/dd/yy或mm、dd、yy的日期数据。宽度为8字节。

日期时间型(T)、存放格式如mm/dd/yy hh:mm:ss AM的日期时间数据。宽度为8。

逻辑型(L)、存放逻辑值为T或F。宽度为1字节。

浮动型(F)、同数值型,为与其它软件兼容而设置。

整型(I)、存放不带小数的整数。宽度为4。

双精度型(B)、存放精度要求较高的数值,或真正的浮点型。宽度为8字节。

备注型(M)、能接受所有字符数据,并保存在.FPT文件中。宽度为4字节。

通用型(G)、能存放图形、表格、声音等数据,保存在.FPT文件中。宽度为4字节。

c.字段宽度。字段宽度用以表明允许字段存储的最大字节数。

d.小数位数。只有数值型、浮点型及双精度型字段才有小数位数。

⑵建立表结构

建立表结构有两种方法,一是通过菜单方式打开对话框及表设计器来建立,二是通过命令方式打开对话框及表设计器来建立。a.菜单方式。选定“文件”菜单→选定“新建”命令→选定对话框中的“表”→选定“新建文件”按钮→出现创建对话框→选定“保存在”中的在输

入表中输入SB→选定“保存” →出现表设计器,等等。

b.命令方式。执行CREATE命令。

⑶表设计器的字段选项卡

通过表设计器可以设计合适的二维表。

2.表数据的输入

建立表结构后若要立即输入数据,就会出现SB记录编辑窗口,此时窗口中的字段的排列次序及字段名右侧文本区宽度都与表结构定义相符;其中日期型字段的两个/间隔符已出现在相应的位置上;备注型与通用型字段中已分别显示memo和gen标志,意味着这两种字段

用其它方法来输入或修改数据。

应注意编辑窗口的打开和关闭方法。

窗口开关操作记录编辑窗口备注型或通用型字段编辑窗口

打开打开表,选定显示菜单的浏览命令双击memo或gen区,或光标在该区时按Ctrl+PgDn

关闭数据存盘单击窗口右上角的关闭按钮,或按Ctrl+W键

放弃存盘按Esc或Ctrl+Q键

对于表的打开和关闭,可能有多种方法。最常用的命令是USE命令,其格式是:

USE[<文件名>]

其次还有通过菜单打开命令来打开表。通过窗口菜单的数据工作期命令来打开表等。

关闭表还有如下命令方法:

CLEAR ALL

CLOSE ALL

CLOSE DATABASE [ALL]

CLOSE TABLES [ALL]

也可以通过窗口菜单的数据工作期命令来关闭表。还有就是通过退出VFP来关闭,如选定“文件”菜单中的“退出”命令,或是在命令窗口中

输入命令QUIT。

修改表结构的一般命令是:当表处于打开状态下,可用MODIFY STRUCTURE命令,它将打开表设计器以便修改表结构。当然也可通

过菜单打开表设计器。另外,可用通过表向导来修改表结构。

4.表数据的修改

VFP允许表数据在窗口中显示、查看和修改,并为此提供了BROWSE、CHANGE、EDIT等多种命令。另外追加记录、删除记录的命令

有APPEND、DELETE、PACK等。

作者:左近1位粉丝2004-11-13 23:29 回复此发言

6 回复:关于Visual FoxPro 6.0的问题

二、表达式

表达式是由常量、变量、函数以及运算符组合在一起的具有计算、判断或其它意义的式子。

1.常量

常量是固定不变的数据,它具有数值型、字符型、日期型、日期时间型、逻辑型、和货币型等多种类型。

a.数值型常量。整数、小数或用科学计数法表达的数都是数值型常量,例如:10,-100,2.888,0.123456E-3,0.87654E2等。b.字符型常量。字符型常量是用双引号、单引号或方括号括起来的字符或字符串。例如:“微机”,…PC机?,[计算机],“3.1415926”等。

VFP字符串的量大长度为254字符。注意:若字符串中含有某种定界符,则须用另一种定界符括起来,例如:“I?m a student”。c.日期型和日期时间型常量。日期型常量必须用花括号括起来,例如:{08/17/1999},{08/17/99},空白日期可以表示为{ }或{/}。时期时间型常量的写法如:{08/17/99 8:45},空白的时期时间可表示为{/:}。

还有一种严格的格式:^yyyy-mm-dd[,][hh[:mm[:[ss][a|p]。注意,在执行命令时VFP默认使用严格的格式,如果要使用通常的格式,必

须先设置:SET STRICTDATE TO 0或SET STRICTDATE TO 1。

d.逻辑型常量。逻辑型常量只有真和假两种值,.T.,.t.,.Y.,.y.都可能表示真,.F.,.f.,.N.,.n.则表示假。

e.货币型常量。货币型常量以$符号开始,并四舍五入到小数4位。例如:$100.12345,计算结果为:$100.1235。

2.变量

在命令操作和程序运行过程中其值允许变化的量称之为变量。变量包括内存变量、字段变量和系统内存变量等3种。

⑴内存变量

内存变量可用来存储数据,定义内存变量时需为它取名并赋初值,内存变量建立后存储于内存中。

a.内存变量命令规则。

内存变量与字段、文件的命名规则有所不同,在VFP中除字段和文件外,所有的用户命名,例如内存变量、函数的取名,均遵守以下规则:以字母或下划线开始,由字母、数字、下划线组成,至多128字符,不可与系统保留字同名。

b.内存变量赋值命令。

内存变量赋值有两种命令格式:

<内存变量名>=<表达式>

STORE <表达式> TO <内存变量名表>

例如:

S=…VFP?

STORE 2*4 TO n1,n2,n3

c.表达式值显示命令。

命令格式:

?<表达式表> &&提行显示

??<表达式表> &&紧接显示

例如有如下三个命令:

?S

?n1

??…数据库应用?

则显示结果如下:

VFP

8 数据库应用

d.内存变量数组。

数组是按一定顺序排列的一组内存变量,数组中的各个变量称为数组元素。数组必先定义后使用。

数组的定义格式如下:

DIMENSION|DECLARE <数组名> ( <下标1> [,<下标2>] ) [,...]

例如:DIMENSION a1(3),a2(2,3)

注意:VFP数组的下界为1,上界为定义的下标数值。如上述定义中,数组a1的元素为a1(1)、a1(2)、a1(3)。理论上VFP最多可定义60000多个数组,每个数组最多可包含60000多个元素,实际上最大数将受具体计算机内存空间的制约。

数组的赋值方法如下:

在VFP中,同一数组元素的类型可以不一致,这是其它一般高级程序设计语言不允许的。用赋值命令可为数组元素单个赋值,也可为整个数组的各个元素赋以相同的值,如“a2=8”可以为上面定义的二维数组的6个元素赋以同样的初值8。

二维数组各元素在内存中按行的顺序存储,也可按一维数组来表示数组元素。

⑵字段变量

表的每一个字段都是一个字段变量。显然,对于某一字段而言,它的值因记录的不同可能不同。字段变量在建立表结构是定义,修改表结构时可重新定义,或增删字段变量,但应注意,这将改变了表的结构,也将影响表的记录内容。

内存变量简称变量,字段变量简称字段。

⑶系统内存变量

VFP提供了一批系统内存变量,它们都以下划线开头,分别用于控制外部设备、屏幕输出格式、或处理有关计算器、日历、剪帖板等方

面的信息。

作者:左近1位粉丝2004-11-13 23:29 回复此发言

7 回复:关于Visual FoxPro 6.0的问题

如:_DIARYDATE存储当前日期。

_CLIPTEXT接受文本并送入剪帖板。如执行命令_CLIPTEXT=“VFP”后,剪帖板中就存储了文本VFP

⑷内存变量的显示

命令格式:

LIST/DISPLAY MEMORY [LIKE<通配符>] [TO PRINTER [PROMPT] / TO FILE<文件名>]

说明:LIKE子名表示将选出与通配符相匹配的内存变量。TO PRINTER[PROMPT]将显示结果送打印机输出,并提示打印窗口。TO FILE

将显示结果存入文件中。

⑸内存变量的清除

命令格式:

RELEASE [ <内存变量表> ] [ ALL [ LIKE / EXCEPT <通配符> ] ]

3.运算与运算符

⑴算术、关系、逻辑运算

说明:

a.算术运算的操作数必须是数值,运算的结果也是数值。

b.关系运算两操作数类型须一致,比较的结构是逻辑值。

c.逻辑运算的操作数须是能得出逻辑值的表达式,运算结果也是逻辑值。

d.表达式计算按优先级从高到低执行。

e.表达式值的类型决定了表达式的类型。

运算符表:

运算类型运算符及其优先级

算术运算括号()、乘方^或**、乘*、除/、求余%、加+、减-

关系运算小于<、小于等于<=、大于>、大于等于>=、不等于<>#!=、包含$

逻辑运算非NOT或!、与AND、或OR

⑵字符、日期、日期时间运算

a.字符运算

+ 运算符:用于连接两个字符串。

- 运算符:用于连接两个字符串,并将前一字符串尾部的空格移到结果字符串尾部。

b.日期与日期时间运算

对日期型数据进行运算是指日期的加减、或日期与天数的加减。例如:

SET STRICTDATE TO 0&& 使用通常的日期格式

? {06/30/98}-61&& 结果为04/30/98

? {12/31/99}-{12/31/98}&& 结果为365

SET CENTURY ON&& 年份前冠以世纪

? {12/31/99}+1&& 结果为01/01/2000

对日期时间型数据进行运算是指日期时间的加减、或日期时间与秒数的加减。例如:

?{09/01/1998 12:00am}+60&& 结果为09/01/1998 12:01:00am

4.函数

函数实质上是具有特定功能的程序,在执行这段程序时只要我们给出函数名和相应的参数即可,VFP提供了200多个函数,具有强大的

功能。

⑴函数的要素

函数有函数名、参数和函数值三个要素。如:

?SQRT(4)&& 结果为2.00

上例中,函数名为SQRT,参数为4,函数值为2.00。

⑵函数类型

所谓函数类型就是函数值的类型。分别有数值型函数、字符型函数、日期型函数、逻辑型函数及其它类型等。

使用TYPE函数能返回表达式的类型,也能测出函数的类型。例如:

?TYPE(“DATE()”)&& 结果为D,表明函数是日期型。

⑶常用函数

VFP的函数有很多,下面我们通过列表的形式,按函数的类型进行分类,列出了包括数值型函数、字符处理函数、日期处理函数、逻辑

型函数和其它函数在内的三十多个常用函数。

a.数值型函数。

函数名功能例子结果

ABS求绝对值? ABS(-4)4

SQRT求平方根? SQRT(4)2.00

EXP求e的n次方? EXP(2)7.39

INT取整数部分? INT(7.5)7

MAX求较大数? MAX(4,7)7

MOD取模? MOD(8.7,3)2.7

ROUND舍入? ROUND(3.1415,3)3.142

RAND取0~1随机数? RAND()0.85

b.字符处理函数。

函数名功能例子结果

SUBSTR取子串? SUBSTR(“ABCD”,2,2)“BC”

LEFT取左串? LEFT(“ABCD”,2)“AB”

RIGHT取右串? RIGHT(“ABCD”,2)“CD”

LEN求长度? LEN(“ABCD”)4

AT求子串位置? AT(“BC”,“ABCD”,1)2

ALLTRIM删除前、后空格? ALLTRIM(“ ABCD ”)“ABCD”

SPACE取空格串? SPACE(4)“ ”

UPPER转大写? UPPER(“aBcD”)“ABCD”

LOWER转小写? LOWER(“aBcD”)“abcd”

VAL字符串转数值? VAL(“3.14”)3.14

STR数值转字符串? S TR(3.14,5,1)“ 3.1 ”

CHR求ASCII码字符? CHR(65)“A”

ASC求字符ASCII码? ASC(“A”) 65

c.日期处理函数。

函数名功能例子结果

CTOD字符串转换为日期? CTOD(“10/1/99”)10/01/99

DTOC日期转换为字符串? DTOC({10/1/99})“10/01/99”

DTOS日期格式转换? DTOS({10/1/99})“19991001”

TIME返回系统当前时间? TIME()“14:56:12”

DATE返回系统当前日期? DATE()02/01/99

YEAR返回年份? YEAR(DATE())1999

d.逻辑型及其它函数。

函数名功能函数名功能

BOF指针是否在首记录之前DBF返回工作区中打开的表名

EOF指针是否在末记录之后RECNO返回表中的当前记录号

FOUND是否查找到记录TYPE返回表达式的类型

FILE文件是否存在

MDOWN鼠标是否左击

VFP字符串替换函数CHRTRAN()使用方法来源:考试大2007/11/13 【考试大:中国教育考试第一门户】模拟考场视频课程将一

字符串中的某些字符替换为另一些字符。

语法

CHRTRAN(字符表达式1,字符表达式2,字符表达式3)

返值类型

字符型

参数描述

字符表达式1:字符串,其中的某些字符将被替换。

字符表达式2:确定字符表达式1中的哪些字符将被替换。

字符表达式3:用于替换的字符。

看了上面的内容后可能还是有点稀里糊涂,那就用一个例子来说明吧:

? CHRTRAN(?AABCDEF?, ?ACE?, ?XYZ?)

显示结果是:XXBYDZF

即用“X”替换“AABCDEF”中的“A”,“Y”替换“C”,“Z”替换“E”。这下明白了吧:)

注意如果“字符表达式3”中的字符少于“字符表达式2”中的字符数,那么“字符表达式1”与“表达式2”中多余的字符相匹配的字符将被删除,

怎么讲起来总象绕口令,还是看例子:

? CHRTRAN(?AABCDEF?, ?ACE?, ?XY?)

显示结果是:XXBYDF,“E”被删掉,或者说“XY”中第3个字符是空字符,“E”被这个空字符替换了。

说明

另有一个函数CHRTRANC(),主要用于双字节的字符,如字符串中有中文,最好使用这个函数。

**********************************************

CHRTRAN(), 替换字符,如CHRTRAN("123456", "135", "ABC") ==> "A2B4C6"

STRTRAN(),替换字符串,如STRTRAN("123456", "123", "112233") ==> "112233456"

5.VFP命令常用子句

下面以记录显示命令讨论下VFP命令中常用的子句。显示命令格式如下:

LIST / DISPLAY [FIELDS]<表达式表>] [<范围>] [FOR<条件>]

[WHILE<条件>] [OFF] [TO PRINT [PROMPT] / TO FILE <文件>]

⑴命令动词

命令动词是VFP的命令的名字,用来表示命令的操作,如“LIST”,“DISPLAY”等。

⑵范围子句

用来确定命令所操作的记录的范围,这样的子句有如下四种:

ALL表示所有记录

NEXT(N)从当前记录起的N个记录

RECORD(N)第N个记录

REST从当前记录起到最后一条记录

注意:一般情况下,缺省范围子句时默认为ALL,如LIST;但也有例外,DISPLAY命令缺省范围子句为当前记录。

⑶FOR子句

FOR子句的<条件>为逻辑表达式,它指定选择记录的条件。若命令中还含有范围子句,则在指定范围内筛选符合条件的记录。

⑷WHILE子句

该子句也用于指明操作条件,但它仅在当前记录符合条件时开始依次筛选记录,一旦遇到不满足条件的记录时就停止操作。应当注意,

在FOR与WHILE同时出现的命令中,则优先处理WHILE。

⑸FIELDS子句

FIELDS指出操作的字段。

⑹OFF子句

为使用户能了解记录的位置,LIST命令自动显示记录号,若要求记录号不显示,只须在命令中使用OFF选项。

⑺TO PRINT [PROMPT] 子句

结果送打印机,PROMPT将给出提示。

⑻TO FILE子句

结果送文本文件。

作者:左近1位粉丝2004-11-13 23:29 回复此发言

8 回复:关于Visual FoxPro 6.0的问题

三、表的维护命令

1.表与表结构的复制

a.复制任何文件

命令格式:COPY FILE <文件名1> TO <文件名2>

b.从表复制出表或其它类型的文件

命令格式:COPY TO <文件名> [<范围>] [FOR<条件>] [WHILE<条件>]

[FIELDS <字段名表> / FIELDS LIKE/EXCEPT <字段名通配符>]

[TYPE] [SDF/XLS/DELIMITED [WITH <定界符> / WITH BLANK/WITH TAB] ] ]

c.复制表的结构

命令格式:COPY STRUCTURE TO <文件名> [FIELDS<字段名表>]

2.记录指针的移动

GO[TO] TOP

GO[TO] BOTTOM

GO[TO] <数值表达式>

SKIP

SKIP <数值表达式>

3.记录的插入与追加

INSERT命令用来来插入表记录:

命令格式:INSERT [BLANK] [BEFORE]

INSERT命令可以在表的任意位置插入新记录,但若要在表尾追加新记录则须先将记录指针移到末记录,下面的命令可直接在表尾追加

记录。

格式1:INSERT INTO 表名[(字段名1[,字段名2,...])] valueS(表达式1[,表达式,...])

如:INSERT INTO sb(编号,名称,启用日期,价格,主要设备,备注);

valueS(“110-1”,“打印机”,{08/15/97},5000.00,.F.,“调拨”)

格式2:APPEND [BLANK]

格式3:APPEND FROM <文件名> [FIELDS<字段名表>] [FOR<条件>]

[TYPE] [DELIMITED [WITH <定界符> / WITH BLANK/WITH TAB] /SDF/XLS ] ]

4.表记录的删除和恢复

DELETE [<范围>] [FOR<条件>] [WHILE<条件>]

PACK

RECALL [<范围>] [FOR<条件>] [WHILE<条件>]

ZAP

5.表数据的替换

⑴成批修改数据

在浏览窗口中修改数据必须由用户键入修改值,而用REPLACE命令能直接将字段用指定的表达式值来替换,因此在程序设计中常使用

该命令。

命令格式:

REPLACE <字段名1> WITH <表达式1> [ADDITIVE] [,<字段名2> WITH

<表达式2> [ADDITIVE]...[<范围>][FOR<条件>] [WHILE<条件>]

命令功能:在当前表的指定记录中,将有关字段的值用相应的表达式值来替换。若“范围”、“条件”等选项都缺省,则只对当前记录的有关

字段进行替换。

例如:

USE SB

REPLACE 价格WITH 价格-1000,部门WITH “11” FOR 主要设备

APPEND BLANK

REPLACE 编号WITH “301-1”,名称WITH “扫描仪”

REPALCE 备注WITH “,”+编号+名称ADDITIVE

⑵单个记录与数组间的数据传送

在VFP中,数组元素值或内存变量值能传送到表内以替代记录中的数据,反之亦然。

a.将记录传送到数组或内存变量

命令格式:

SCATTER [ FIELDS<字段名表> / FIELDS LIKE/EXCEPT <通配字段名> ]

[MEMO] TO <数组名> [BLANK] / MEMVAR [BLANK]

b.将数组或内存变量的数据传送到记录

命令格式:

GATHER FROM <数组名>/MEMVAR

[ FIELDS<字段名表> / FIELDS LIKE/EXCEPT <通配字段名> ]

⑶成批记录与数组间的数据传送

SCATTER与GATHER命令只能在表的单个记录与数组或内存变量之间进行数据传送,使用COPY和APPEND可能实现成批记录与数

组和内存变量之间进行数据传送。

a.将表的一批记录复制到数组

命令格式:

COPY TO ARRAY <数组名>[FIELDS<字段名表>][<范围>][FOR<条件>][WHILE<条件>]

命令功能:

将当前表选定的数据复制到数组中,但不复制复制备注型字段。

b.从数组向表中追加记录

命令格式:

APPEND FROM ARRAY <数组名> [FOR<条件>][WHILE<条件>]

命令功能:

将满足条件的数组行数据按记录依次追加到当前表中,但忽略备注型字段。

6.逻辑表的设置

在表中选择数据是常见的操作,BROWSE、LIST等命令都可包括FOR和FIELDS子句,用来选择记录和字段。但是,使用命令子句来实现数据选择仅在执行该命令时生效一次,使用过滤和字段表等逻辑表的方法,可以一旦为一个表设置逻辑表后,则对该表执行任何操

作时一直有效,直到撤消逻辑表为止。

作者:左近1位粉丝2004-11-13 23:30 回复此发言

9 回复:关于Visual FoxPro 6.0的问题

⑴过滤器

命令格式:SET FILTER TO [<条件>]

命令功能:从当前表过滤出符合条件的记录,不符合条件的记录将被“遮蔽”,随后对该表的操作仅限于满足过滤条件的记录。

⑵字段表

命令格式:SET FIELDS TO [ [<字段名1>[,<字段名2>...]

/ALL[LIKE/EXCEPT<通配字段名>]

SET FIELDS ON/OFF

7.建立与修改表的结构的命令

⑴表结构的建立

命令格式:

CREATE TABLE <表名>

(<字段名1> <字段类型>[(<字段宽度>[,<小数位数>])][,<字段名2>...])

命令功能:建立一个由表名表示的表,表中含有指定的字段。

⑵表结构的修改

命令格式:

ALTER TABLE <表名>

ADD/ALTER[COLUMN]<字段名><字段类型>[(<字段宽度>[,<小数位数>])]

ALTER TABLE <表名>DROP[COLUMN]<字段名1>/RENAME COLUMN<字段名2>TO<字段名3>

命令功能:修改表结构

第三章查询与统计

在数据库系统中,数据查询与统计是最常见的两种应用。下面讨论顺序查询和索引查询两种传统查询方法,并对数据工作期、查询设计器和视图设计器3种界面操作查询工具进行介绍,还介绍统计命令与函数,最后将讨论的范围从自由表扩大到数据库表。

一、排序与索引

1.排序

排序就是根据表的某些字段重排记录,排序后产生一个新表,其记录按新的顺序排序,但原文件不变。

命令格式:

SORT TO <新文件名> ON <字段名1> [/A/D/C] [,<字段名2> [/A/D/C]...]

[<范围>] [FOR<条件>] [WHILE<条件>]

[FIELDS<字段名表> / FIELDS LIKE/EXCEPT <通配字段名>]

功能说明:

a./C表示不区分字段值中字母大小写,字段不能选用备注型或通用型。

b.可在ON子句中使用多个字段名实现多重排序。

c.缺省范围、条件等子句表示对所有记录排序。否则只能指定范围内符合条件的记录进行排序,从而生成新表。

d.FIELDS子句指定新表应包括的字段。

2.索引

⑴索引的概念

a.记录的物理顺序与逻辑顺序。

文件中的记录一般按其磁盘存储顺序输出,这种顺序称为物理顺序。执行排序后,在新文件中形成了新的物理顺序。

索引则不同,它不改变文件中记录的物理顺序,而是按某个索引关键字(或表达式)来建立记录的逻辑顺序。在索引文件中,所有关键字值按升序或降序排列,每个值对应原文件中相应的记录的记录号,这样便确定了记录的逻辑顺序。今后的某些对文件记录的操作可以

依据这个索引建立的逻辑顺序来操作。

请看下面,第一张表是原表文件内容,第二张表是依据“学生姓名”建立的一个排序文件,第三张表是依据“学生姓名”建立的一个索引文件。

Record#学生姓名指导老师老师电话

1刘小景钱志国5666043

2李娟杨一如5666120

3古介新吴萌4108219

4屈达钱志国5666043

5王成义吴萌4108219

Record#学生姓名指导老师老师电话

1Lij李娟杨一如5666120

2Liu刘小景钱志国5666043

3Guj古介新吴萌4108219

4Qud屈达钱志国5666043

5Wan王成义吴萌4108219

Record#学生姓名

2Lij李娟

1Liu刘小景

3Guj古介新

4Qud屈达

5Wan王成义

b.索引的种类

按扩展名来分类,VFP支持复合索引和单索引两类索引文件,前者扩展名为CDX,后者扩展名为IDX。

复合索引文件允许包含多个索引,每个索引都有一个索引标识,代表一种记录逻辑顺序。这种索引文件总以压缩方式存储,以便占用较少的空间。复合索引文件又有结构的和非结构的两种,若定义复合索引文件时用户为它取了新的名字,则其为非结构的,否则为结构的。打开非结构复合索引文件需使用SET INDEX命令或USE命令中的INDEX子句。结构复合索引文件的主名与表的主名相同,不需在建立索引用进定义,结构复合索引文件随表的打开而打开,在添加、修改或删除记录时还会自动更新维护。

单索引文件只包含一个索引,这种类型是为了与FoxBASE+开发的应用程序兼容而保留的。但若将它定义为压缩的,将不能被FoxBASE+

使用。

作者:左近1位粉丝2004-11-13 23:30 回复此发言

10 回复:关于Visual FoxPro 6.0的问题

按功能来分类,索引又分为普通索引、唯一索引、候选索引和主索引四种,其功能如下:

索引类型关键字重复值说明创建修改命令索引个数

普通索引允许作为一对多永久关系中的“多方”INDEX允许多个

唯一索引允许、但输出无重复值为与以前版本兼容而设置

候选索引不允许、禁输入重复值可用作主关键字,可用于在永久关系中建立参照完整性INDEXCREATE TABLEALTER TABLE 主索引仅适用数据库表,可用于在永久关系中建立参照完整性CREATE TABLEALTER TABLE仅可一个

概念:

主关键字是能唯一标识记录的索引关键字,它应能排除关键字重复值。例如将姓名字段作为索引关键字,若出现同名同姓人员,也即出

了关键字重复值,这样的关键字就不是主关键字。

唯一索引型索引文件,对于关键字值相同的记录,索引中只列入其中的第一个记录。

⑵索引的建立

索引建立的命令格式:

INDEX ON <索引关键字> TO<单索引文件名>/TAG<索引标识名>[OF<复合索引文件名>]

[FOR<条件>] [COMPACT] [ASCENDING/DESCENDING] [UNIQUE/CANDIDATE] [ADDITIVE]

命令功能:建立索引文件或增加索引标识。

功能说明:

a.索引关键字可用表达式表示。

b.TO子句适用于建立单索引文件,其主名指定;TAG子句用于建立复合索引文件及索引标识,或增加索引标识,索引标识由该子句的

<索引标识名>指出。

c.该命令默认建立普通索引型索引文件;UNIQUE表示建立唯一索引型索引文件;CANDIDATE表示索引文件是候选索引型,但需与

TAG子句同时使用。

d.COMPACT选项用来指定单索引文件为压缩。

e.OF选项的<复合索引文件名>用于指定非结构复合索引文件的名字,缺省为结构复合索引议论。

f.ADDITIVE表示建立本索引文件时并不关闭先前打开的索引文件。

例:建立单索引文件示例。

USE SB

INDEX ON 名称TO mcidx &&建立名称升序排列的普通索引型单索引文件MCIDX.IDX

LIST

INDEX ON -价格TO jgidx UNIQUE &&建立价格降序排列的唯一索引型单索引文件JGIDX.IDX

LIST

例:为SB.DBF建立一个结构复合索引文件,其中包括3个索引:

一是记录以价格降序排列,索引标识为普通索引型。

二是记录以部门升序排列,部门相同时则按价格升序排列,索引标识为普通索引型。

三是记录以部门升序排列,部门相同时则按价格降序排列,索引标识为候选索引型。

USE SB

INDEX ON 价格TAG JG DESCENDING

LIST

INDEX ON 部门+STR(价格,9.2)TAG BMJG

LIST

INDEX ON VAL(部门)-价格/1000000 TAG BMJG1 CANDIDATE

LIST

⑶索引的使用

要利用索引查询,必须同时打开表与索引文件。一个表可能打开多个索引文件,同一个复合索引文件中也可能包含多个索引标识,但任何时候只有一个索引文件或一个索引标识起作用。当前起作用的索引文件称为主控索引文件,当前起作用的索引标识称为主控索引。

也就是说,实现索引查询必须满足以下条件:打开表、打开索引文件、确定主控索引文件或主控索引。

a.打开和关闭索引文件。

若当前仅有一个索引文件被打开,它就成为了主控索引文件。索引刚建立时,索引文件呈打开状态且成为主控索引文件。若当前已打开

了多个索引文件,可通过SET INDEX命令来确定主控索引文件。

除结构复合索引能随着表的打开而打开外,其它索引文件必须用命令显式打开。

表关闭时索引文件就随之关闭。

命令格式:SET INDEX TO [<索引文件表>] [ADDITIVE]

命令功能:打开当前表的一个或多个索引文件并确定主控索引文件。

命令说明:

<索引文件表>中的第一个索引文件为主控索引文件。

如缺省所有选项,将关闭当前工作区中除结构复合索引文件外的所有索引文件,同时取消主控索引。

若缺省ADDITIVE,则在用本命令打开索引文件时,除结构复合索引文件以外的索引文件均被关闭。

命令USE<文件名>INDEX<索引文件表>也可在打开表的同时打开索引文件,并确定主控索引文件。

作者:左近1位粉丝2004-11-13 23:30 回复此发言

11 回复:关于Visual FoxPro 6.0的问题

b.确定主控索引

复合索引文件中当前建立的索引标识自动生成主控索引,但须注意,表重新打开时尽管复合索引文件已自动打开,还须确定主控索引。

命令格式:

SET ORDER TO [ <数值表达式> / <单索引文件名> / [TAG] <索引标识> [ASCENDING

/DESCENDING ] ]

c.删除索引

命令格式:

DELETE TAG ALL/<索引标识1>[,<索引标识2> ]...

⑷索引的更新

a.自动更新

当表中的数据发生变化时,所有当时已打开的索引文件会随数据的改变自动改变记录的逻辑顺序,实现索引文件的自动更新。

b.重新索引

若未确定主控索引文件或主控索引,修改表的记录时索引文件就不会自动更新。如果仍要维持记录的逻辑顺序,可用REINDEX命令重

建索引,其命令格式为:

REINDEX [COMPACT]

当然也可用INDEX ON命令再次建立索引。

二、查询命令

所谓查询即按照指定条件在表中查找所需的记录。下面介绍两种传统的查询:顺序查询和索引查询。VFP还支持在VFP环境中直接使用

SQL查询命令。

1.顺序查询命令

顺序查询命令包括LOCATE和CONTINUE两条件命令。

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

CONTINUE

命令功能:搜索满足条件的第一条记录,若找到,记录指针就指向该记录;若表中无此记录,记录指针将指向文件结束处。

例:

USE SB

LOCATE FOR 价格<15000 AND NOT 主要设备

DISPLAY

CONTINUE

?RECNO(),名称,价格,主要设备

CONTINUE

2.索引查询命令

索引查询依赖二分法算法来实现,在210个记录中寻找一个满足条件的记录,不超过10次比较就能进行完毕。即设有N个记录,查找

次数为log2(N+1)-1。

SEEK和FIND两条命令均可用来进行索引查询。FIND是为了与旧版本兼容而保留的,但SEEK的用法更灵活,下面介绍SEEK。

命令格式:SEEK <表达式>

命令功能:在已确定主控索引的表中按索引关键字搜索满足表达式值的第一个记录。若找到,记录指针将指向该记录,若没有找到,则

提示没有找到的信息。

例:

USE SB

INDEX ON 编号TAG BH

SEEK “038-1”

?RECNO()

INDEX ON 启用日期TAG QYRQ

SEEK {3/5/90}

?FOUND()

INDEX ON 价格TAG JG

SEEK 1000.00

?RECNO(),FOUND()

注意:在使用查找命令时,若找到,FOUND函数就返回.T. ,否则返回.F.。

对于字符表达式,系统允许模糊查询,即只要字符表达式值与索引关键字值左子串相同即算符合条件。命令SET EXACT ON / OFF用于

打开和关闭完全匹配,系统默认为OFF。

三、数据工作期

数据工作期是一个用来设置数据工作环境的交互操作窗口。所设置的环境可以包括打开的表及其索引,多个表之间的关联等状态。

利用数据工作期来建立环境还有以下优点:

一是直接发命令来建立环境需要有一定的经验,而数据工作期窗口对操作有向导作用,显得比较方便。

二是在数据工作期设置的环境可能作为视图文件保存起来,需要时将视图文件打开就能恢复它所保存的环境。若用户建立了多个视图文

件,需要某个环境时只要打开相应的视图文件即可。

1.多工作区的查询

⑴设备管理使用的4个表

实际应用中常需要同进查询多个表的数据,下面以设备管理为例设计了四个表,

设备表:SB.DBF

Record# 编号名称启用日期价格部门主要设备备注商标

1 016-1 车床03/05/90 62044.61 21 .T. Memo gen

2 016-2 车床01/15/92 27132.7

3 21 .T. Memo gen

3 037-2 磨床07/21/90 241292.12 22 .T. Memo gen

4 038-1 钻床10/12/89 5275.00 23 .F. Memo gen

5 100-1 微机08/12/97 8810.00 12 .T. Memo gen

6 101-1 复印机06/01/92 10305.00 12 .F. Memo gen

7 210-1 轿车05/08/95 151000.00 11 .F. Memo gen

设备大修表:DX.DBF

Record# 编号年月费用

作者:左近1位粉丝2004-11-13 23:30 回复此发言

12 回复:关于Visual FoxPro 6.0的问题

1 016-1 8911 2763.5

2 016-1 9112 3520.0

3 037-2 9206 6204.0

4 038-1 8911 2850.0

部门代码表:BMDM.DBF

Record# 代码名称

1 11 办公室

2 12 设备科

3 21 一车间

4 22 二车间

5 23 三车间

增值表:ZZ.DBF

Record# 编号增值

1 016-1 2510.00

2 016-1 1000.00

3 038-1 1200.00

⑵工作区

a.关于工作区号。表打开后才能进行操作,实际上打开表就是把它从磁盘调入内存的某一个工作区,VFP可能提供32767个工作区,

编号从1到32767。

每个工作区只允许同时打开一个表,在同一工作区打开另一个表时,就会自动关闭以前打开的表。反之,一个表只能在一个工作区打开,在其不关闭时若试图在其它工作区打开它,系统会提示出错信息:“文件正在使用”。

b.关于别名。一般来说,前十个工作区是经常使用的,所以前十个工作区除使用1-10进行编号外,还可能依次分别用A、B、...、J十

个字母来表示,后者称为工作区别名。

其实表也有别名,并可用命令“USE <文件名> ALIAS <别名> ”来指定。若未指定别名,则表文件的主名将被默认为别名。

c.选择工作区

命令格式:SELECT <工作区号>/<别名>

用SELECT选定的工作区称为当前工作区,VFP默认的当前工作区为1号工作区。函数SELECT()可能返回当前工作区的区号。引用非当前工作区表的记录字段值时,必须冠以别名。请看下面的例子:

CLOSE ALL

?SELECT()

USE BMDM

GO 3

?名称

SELECT 2

USE SB

GO 4

?名称,BMDM.名称

命令“SELECT 0”表示选定当前尚未使用的最小号工作区,该命令使用户不必记忆工作区号,以后要切换到某工作区,只要在SELECT

命令中使用表的别名便可。请看下面的例子:

CLOSE ALL

SELECT 0

USE SB

GO 3

SELECT 0

USE BMDM

INDEX ON 代码TAG DM

SEEK SB.部门

?SB.编号,a.名称,名称

SELECT SB

?编号,名称,BMDM.名称

命令“USE <表名> IN <工作区号>/<别名>”能在指定的工作区打开表,但不改变当前工作区。

2.数据工作期窗口

数据工作期窗口用菜单操作方式或命令工作方式打开和关闭,具体方法见下表:

功能菜单操作方式命令工作方式其它方法

打开数据工作期选定Window菜单的Data Session命令SET或SET VIEW ON

关闭数据工作期选定File菜单的关闭命令SET VIEW OFF双击该窗口的控制菜单框

3.视图文件

数据工作期设置的环境可以作为视图文件保存,以便在需要时恢复它所保存的环境。

⑴建立视图文件

一是当数据工作期窗口未关闭前,通过文件菜单的另存为来建立扩展名为.VUE的视图文件。

二是使用命令建立,格式如下:

CREATE VIEW <视图文件名>

例如下数据工作期窗口打开时,在命令窗口键入命令CREATE VIEW SB,便可建立视图文件SB.VUE。

⑵打开视图文件

打开视图文件意味着恢复环境,相当于重新执行一系列先前设置的命令。通过文件菜单的“打开命令→文件类型…视图? →选定文件

SB.VUE→确定”可能打开视图文件。

也可以用命令方式打开:SET VIEW TO SB

4.表的关联

在要查询多个表中的数据时,常采用关联和联接两种方法,下面介绍关联。

⑴关联的概念

所谓关联,就是令不同工作区中表的记录指针建立一种临时的联动关系,使一个表的记录指针的移动时另一个表的记录指针也能随之移

动。

a.关联条件。建立关联的两个表,一个是父表,另一个为子表。在执行涉及这两个表的数据的命令时,父表的记录指针的移动,会使子

表记录指针自动移到满足关联条件的记录上。

关联条件通常要求比较不同表的两个字段表达式值是否相等,所以除要在关联命令中指明这两个字段表达式外,还必须为子表的字段表

达式建立索引。

b.多一关系。按照通过不同表的两个字段表达式值相等来实现关联的原则,若出现父表有多条记录对应子表中一条记录的情况,则称这

种关联为多一关系。

相关主题
文本预览
相关文档 最新文档