VFP6教程第2章 表的操作Word下载.docx
《VFP6教程第2章 表的操作Word下载.docx》由会员分享,可在线阅读,更多相关《VFP6教程第2章 表的操作Word下载.docx(39页珍藏版)》请在冰豆网上搜索。
![VFP6教程第2章 表的操作Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/3/fed4bd5c-0eb4-4455-8fcd-2902c1efe8dc/fed4bd5c-0eb4-4455-8fcd-2902c1efe8dc1.gif)
420
480
460
500
680
650
620
510
600
gen
meno
VFP中表的命名规则已在1.3.2中介绍过了,表的扩展名为.dbf。
下面就学生自然情况表介绍表的建立及相关知识。
2.1.1确定表的结构
一个二维表是由它的列项与行项组成,从1.2.2节中已经掌握了表的列项称为字段,表中内容一行称为一个记录。
学段也是一种变量,它的命名规则已在前面介绍了。
字段变量类型可为表1.1数据类型中的所有数据类型。
由表2.1来确定学生自然情况表的结构:
学号C(9)、姓名C(6)、性别C
(2)、出生D、团否L、入学成绩N(3)、近照G及备注M。
2.2.2建表、修改、显示
一个表的建立应确定表建立在磁盘中的位置,这样,在建立表后,需要打开表时,按表在磁盘中的位置找到表将表打开。
为了叙述的方便本书规定用“―〉”表示进行下一步操作。
在X盘上已经建立一个Y文件夹,X盘表示任意盘,Y文件夹表示任意名的文件夹。
例如在D盘建立一个名为学生的文件夹,也可由用户自定义文件夹的名。
建文件夹可通过win的我的电脑或资源管理器等建立。
如果用户不给出路径,VFP可以建立默认路径,当打开VFP时它自动在默认路径上。
下面给出默认路径的方法:
单击工具菜单->
[选项],打开选项对话框,如图2.1所示。
->
[文件位置]选项卡->
选[默认目录]->
[修改]按钮,打开[更改文件位置]对话框->
使用[默认目录]复选框->
在定位默认目录文本框中输入路径。
如D:
\学生路径。
[确定],关闭更改位置对话框->
返回图2.1[确定],关闭选项对话框,此时完成文件的默认路径的建立。
图2.1选项对话框
除了用上述方法建立默认路径外,还可以通过命令窗口建立。
如,SETDEFAULTTOD:
\学生。
1.建立表
(1)用界面建表
1)用菜单或工具栏打开表设计器创建表
操作步骤:
选定[文件]菜单->
[新建]或常用工具栏中的新建按钮打开[新建]对话框,如图2.2所示。
图2.2新建对话框
在新建对话框文件类型中,选[表]->
[新建文件],打开创建对话框,如图2.3所示。
图2.3创建对话框
在输入表各文本框中输入一个表明,如学生->
[保存],打开表设计器对话框,如图2.4所示。
图2.4表设计器对话框
选字段选项卡->
在字段各列中输入字段名,如学号->
在类型列中选类型,如字符型->
在宽度列中选宽度,如图2.6。
图2.6表设计器对话框
在小数位列中可输入少数位,如果字符型是不能输小数位的。
若需要索引,可在索引中选排列方式。
若需要字段接受空值NULL,就可以选NULL。
VFP支持NULL,NULL是一个不确定的值,它不同于0、空串、空格。
前面的一系列操作就完成了一个字段的定义。
接着单击下一行字段各列处,就可以开始对下一个字段进行定义,直到将表结构中的所有字段的定义完成。
当结构建立后,单击[确定],打开确定对话框如图2.7所示,若选[是]立即输入记录,选否,输入记录。
图2.7确认对话框
对于表中G型字段,M型字段内容输入,可双击该字段内容处或按CRTL+PGDN打开G型字段可以输入图像、声音等,也可以输入OLE对象,具体步骤是在进入G型字段编辑窗口中以后,选编辑菜单->
[插入对象](或粘贴或选择性粘贴)->
在对象类型中选择需要的类型->
[确定]。
对G型,M型字段为空时内容显示gen与meno。
若G型M型字段不为空则显示Gen与Meno。
若向浏览G型与M型字段必须进入相应的编译窗口。
2)用命令打开表设计器
格式:
CREATE<
表名>
功能:
打开表设计器创建表。
例如在命令窗口中输入create学生回车此时表被打开,就可以按上面的方法建立表了。
3)用向导创建表
文件菜单—>
[新建],打开新建对话框,在文件类型中选表->
向导,打开,
打开表向导对话框,如图2.8所示。
图2.8步骤1字段选取对话框
在样表中选表,若无表可选可用[加入按钮]将需要的表加到样表列表框中->
从可用字段中讲需要的字段一道选定字段列表框中->
下一步,进入表向导步骤选数据库如图2.9所示
图2.9
下一步,进入步骤2修改字段设置如图2.10所示,此时可对所在创建的表字段定义进行修改
图2.10步骤2修改字段设置
下一步,进入步骤3为表索引,如图2.11所示
图2.11步骤3为表建索引
为表选出关键字和索引字段->
下一步,进入步骤4完成,如图2.12所示
图2.12步骤4完成
选择一种保存表的选项->
完成,打开另存对话框,->
在输入表各文本框中输入一个表名。
此时完成了用向导创建表的过程。
(2)用命令创建表
createtable|DBF<
(<
字段名1>
类型(<
宽度>
)[<
字段名2>
<
类型>
)……])
创建表。
以命令不用表设计器创建表。
说明:
宽度对于数值型要包括小数。
如学生成绩5位,小数占2位,可写N(5,2)。
例2.1用命令方式创建表2.1中的学生自然情况表,表名为学生。
createtable学生(学号c(9),姓名c(6),性别c
(2),出生d,团否l,入学成绩n(3),近照g,备注m)。
2.显示表的结构
1)用界面显示表结构
步骤:
显示菜单->
表设计器
2)用命令显示表结构
LIST|DISPLAYSTRUCTURE
显示为前一打开的表的结构。
例2.2显示学生表的结构
LISTSTRUCTURE
3.表的结构修改
一个表在建立以后,有时由于实际需要发生了变化,或在建表时标的结构就不对,需要全面对已存在的表结构进行修改,VFP提供了界面与命令两种方式。
(1)用界面修改表的结构
1)用菜单或工具拉开表设计器修改表结构在表一打开的情况下修改表结构步骤:
单击显示菜单—〉打开表设计器。
如图2.13所示—〉对字段意义进行修改。
图2.13表设计器
2)用命令打开表设计器修改结构
MODIFYSTRUCTURE
打开标设计器。
从表设计器框中修改当前使用的表结构。
例2.3修改学生表的结构,将综合成绩字段改为N(6.2)
显示菜单—〉打开表设计器—〉选定综合成绩字段按题要求进行修改—〉选定备注段,按插入按钮将个人简历全部分段定义—〉单击[确定],打开[确认对话框]—〉选是。
例2.4将表的结构恢复为表2.1所示的结构
在命令窗口中输入MODISTRUC选定综合成绩字段改为N(5.1)
选定个人简历字段—〉单击[删除]—〉[确定]。
打开修改确认对话框—〉选是。
(2)用命令修改
ALTERTABLE<
ADD∣ALTER[LOLUMN]<
字段名>
字符类型>
[(<
字段宽度>
[,<
小数位数>
]DROP[COLNME]<
REMAME<
TO<
字段名3>
修改表的结构
说明1)ADD[column]子句用于增加新的字段。
2)ALTER[column]子句用于修改原有字段。
3)DROP[column]子句用于删除字段。
4)RENAME[column]子句用于将字段2指定的字段名改为字段3指定的字段名。
例2.5①对学生表增加爱好字段C(20);
②将修改字段暗号字段为C(30);
③将爱好字段按名改为特长;
④删除特长字段。
①在命令窗口中输入
ALTERTABLE学生ALTERCOLUMN爱好C(20)↙
②显示->
表设计器->
确定↙
③在命令窗口中输入
ALTERTABLE学生ALTERCOLUMN爱好C(30)↙
④显示->
确定↙
⑤ALTERTABLE学生ALTERCOLUMN爱好TO特长↙
⑥显示->
⑦ALTERTABLE学生PROP特长↙
⑧显示->
2.1.3表的打开,关闭及相关操作(表的复制等)
1.表的打开
(1)用界面打开表
单击文件菜单—〉打开(或常用工具拉单击打开按钮)打开了打开对话框如图2.14所示。
在文件类型中选类型为表(*.dbf)—〉选所示打开的表→确定
(2)用命令打开表
USE表名
打开表
例2.6用命令打开学生表
在命令窗口输入USE学生
2.关闭表
(1)用界面关闭表
单击文件→关闭
(2)用命令关闭表
USE
关闭当前表
3.表的相关操作
(1)表的复制
1)文件的复制命令
COPYFILES<
文件1>
文件2>
将文件1复制为文件2。
在使用命令前文件1必须关闭。
例2.7将学生.dbf复制成学生1.dbf
COPYFILES学生.*TO学生1.*
2)显示文本文件内容命令
TYPE<
文件名>
显示文本文件内容。
3)表文件的复制命令
COPYTO<
[<
范围>
][FOR<
条件>
][WHILE<
][FIELDS<
字段名表>
]|FIELDSLIKE<
通配字段名>
|FIELDSEXCEPT<
][[TYPE][SDF|XLS|DELIMITED[WITH<
定界符>
|WITHBLANK|WITHTAB]]]
将当前表复制成一个由文件名指定的新表或其它类型的文件。
①<
VFP的范围有4种:
ALL表示所有记录,NEXTN表示从当前记录算起N条记录,RECORD<
N>
表示第N条记录,REST从当前记录开始到表的最后一条记录。
若无<
,系统默认范围为ALL。
②FOR<
、WHILE<
都为条件,但FOR与WHILE是有区别的,FOR是在指定范围内进行判断条件是否成立,而WHILE是当在指定范围若遇到一个条件不满足的就停止操作。
当FOR与WHILE同时存在,WHILE优先。
③FIELDS<
用字段名表中的字段形成新文件。
④FIELDSLIKE<
通配符>
用符合通配符的字段形成新文件。
通配符可为*与?
,*代表任意多个任意字符,?
代表一个任意字符。
⑤FIELDSEXCEPT<
用除了符合通配符的字段形成新文件。
⑥TYPE子句,当形成新文件为文本文件时,子句取SDF,数据之间无定界符和分隔符。
当取DELIMITEDWITH<
时,逗号作为分隔符,由<
指定的字符作为定界符。
取DELIMITEDWITHBLANK空格作为分隔符,无定界符。
取DELIMITEDWITHTAB时,制表符作为分隔符,双引号为定界符。
当形成新文件为Excel文件时,子句必须取XLS。
例2.8将学生表中性别为男的复制为文本文件“学生.txt”
USE学生
COPYTO学生.txtFOR性别=’男’TYPESDF
TYPE学生.txt
(2)表结构的复制
COPYSTRUCTURETO<
[FIELDS<
]
将当前表复制为文件名指定的表且只复制结构不复制数据。
例2.9将学生表的结构复制成学生2
COPYSTRUCTURETO学生2
USE学生2
2.2表的基本操作
2.2.1记录的显示、追加、删除、修改、插入
1.记录的显示
(1)用界面方式显示表中记录
在表打开的前提下,显示→浏览,此时将显示当前表中记录内容。
(2)用命令显示记录
格式1:
BROWSE[FIELDS<
以窗口方式显示当前表的内容。
<
中的字段包含若干选项:
[:
R][:
数值表达式>
][:
V=<
表达式1>
F]][:
E=<
字符表达式1>
P=<
字符表达式2>
][B:
=<
表达式2>
<
表达式3>
[:
F]][:
H=<
字符表达式3>
W=<
逻辑表达式1>
1):
R表示该字段为只读。
2):
表示该字段的显示栏的宽度。
3):
F][:
]为检验选项。
:
表示字段级数据校验,<
为校验条件。
F是不管字段值修改与否都进行校验。
:
字段表达式1>
为用户为校验设置的出错信息。
4):
表示格式代码列表。
如表2.2所示,控制浏览窗口显示和输入数据,它也是一种掩码。
表2.2掩码表
掩码
含义
x
允许输入任何字符
9
只允许输入数字
#
允许输入数字、空格、+、-
$
显示(SETCURRENCY命令指出的)货币号
*
在指定宽度中,数值前显示*号
.
指定小数点位置
用来分隔小数点左边的数字
5):
B=<
F]该字段用来对指定字段的范围进行检查。
为下界,<
为上界。
F为不管字段是否修改都校验。
6):
默认字段名为栏目名,若用此选项<
为栏目名。
7):
设置光标进入该字段的条件。
当<
值为.T.,表示可以进入该字段,否则不可以。
格式2:
LIST|DISPLAY[[FIELDS]<
][<
][OFF][TOPRINT[PROMPT]|TOFILE<
按范围与条件要求显示记录内容。
1)LIST是滚动显示,即使满屏也不停止;
DISPLAY是分屏显示。
2)当省略范围子句时,LIST默认范围为ALL,而DISPLAY默认范围是当前记录,即NEXT1。
3)若选用OFF子句,记录号不显示。
4)TOPRINT子句,结果输出到打印机,若再用PROMPT在打印前会出现打印机设置对话框,可对打印机进行相应的设置。
5)TOFILE<
子句,结果输出到由文件名指定的文件,文件的扩展名默认为.txt。
例2.10显示学生表:
显示全部内容,显示性别为男的学生,显示性别为女且输出到g1.txt文件中。
BROWSE
BROWSEFIELDS学号:
R,姓名,性别,出生:
H='
出生年月日'
LISTFOR性别='
男'
女'
TOFILEg1.txt
TYPEg1.txt
2.追加记录
(1)用界面追加记录
在表打开前提下,显示→浏览(显示打开的表)→显示→追加方式,此时可输入新的记录内容。
(2)用命令追加记录
APPEND[BLANK]
向当前表中追加记录。
若选BLANK是追加一条空白记录,此空白记录当时不可以编辑,用REPLACE等命令可对其进行编辑。
APPENDFROM<
[FOR<
]]
从文件名指定的表文件中将符合条件的记录追加到当前表的尾部。
例2.11在学生2表中追加一条空记录。
将学生1表中性别为男的学生记录追加到学生2表中。
在命令窗口输入:
APPEND
APPENDFROM学生1FOR性别=’男’
LIST
3.删除表中记录
删除表中的记录有三种方法:
一种为逻辑删除,这种删除只是将记录加了删除标记。
第二种删除是物理删除,这种是将具有删除标记的记录真正从表中删除。
第三种是物理删除表中所有记录,剩下一个空表。
(1)逻辑删除与恢复
1)用界面为记录加删除标记或去掉删除标记
在表打开前提下,显示→浏览打开浏览窗口,如图2.13所示,单击记录左边小方框,使该方框变深色,即加删除标记。
若要恢复记录,再次单击神色方框使其变浅即可。
图2.13添加删除标记
2)用命令为记录加删除标记与去掉删除标记
记录逻辑删除命令格式:
DELETE[范围][FOR<
对满足条件的记录加删除标记,若范围省略,默认范围为当前记录即NEXT1。
记录恢复命令格式:
RECALL[范围][FOR<
为符合条件的记录去掉删除标记,若范围省略,默认范围为当前记录即NEXT1。
(2)物理删除记录
1)用界面进行物理删除记录
在表打开前提下,单击表菜单→彻底删除,即可。
2)用命令进行物理删除
PACK
将带有删除标记的记录,从表中真正删除。
(3)物理删除表中所有记录
ZAP
将表中所有记录删除,只保留表结构。
例2.12将学生2表中性别为女的记录逻辑删除,物理删除,将学生表2记录全部物理删除。
DELETEALLFOR性别=’女’
4.修改记录
(1)用界面修改记录
在表打开前提下,
1)显示→浏览打开浏览窗口就可以对各条记录进行修改。
2)在命令窗口上用EDIT|CHANGE
(2)用命令修改记录
REPLACE[<
]<
WITH<
[,<
…][FOR<
条件2>
在指定范围内将符合条件的记录中的相关字段用相关表达式来替换。
若省略范围,默认范围为NEXT1。
例2.13将学生1表中入学成绩在400-500分之间的加10分。
REPLACEALL入学成绩WITH入学成绩+10FOR入学成绩>
=400AND入学成绩<
=500
5.插入记录
INSERT[BEFORE][BLANK]
插入一条记录,若无BEFORE子句时,在当前记录后插入一条新记录;
当有BEFORE子句时,在当前记录之前插入一条新记录。
当有BLANK子句时插入一条空白记录,当时不能编辑,可用REPLACE等命令进行编辑(EDIT|CHANGE)。
2.2.2记录指针的移动
1.用界面方式移动记录指针
单击表菜单→转到记录→可选第一个、最后一个、下一个、前一个或记录号,若选记录号→
输入记录号→确定。
2.用命令方式移动记录指针
1)绝对移动
GO<
BOTTOM>
|<
TOP>
记录号>
实现记录指针的绝对移动。
当用TOP子句时指针指向第一条记录;
当用BOTTOM子句时,指针指向最后一条记录。
当用记录号子句时,指针指向记录号确定的记录。
2)相对移动
SKIP[±
N]
N可为正、负整数,当N为正数时,指针从当前记录向表尾方向移动N条记录。
当N为负数时,指针从当前记录向表头方向移动N条记录,当省略N时,默认N为1。
例2.14GO与SKIP的应用
GOTOP
RECNO()
BOF()
DISPLAY
SKIP-1
GOBOTTOM
EOF()DISP
EOF()
GO4
SKIP-2
SKIP3
2.2.3内存变量与表之间的数据传递
1.单条记录与内存变量的数据传递
1)将当前单个记录数据传送给内存变量
SCATTER[FIELDS<
|FIELDSLIKE<
|FIELDSEXCEPT<
][MEMO]TO<
数组名>
[BLANK]|MEMVAR[BLANK]
将当前表中当前记录的字段数据依次传送给内存变量。
1)TO<
子句是字段数据传给由数组名指定的数组,若数组元素个数不够,系统自动为其扩充元素个数,若此数组没定义,系统将自动创建数组,若后面选BLANK,系统将自动创建一个与字段类型、大小相同的空值数组。
2)使用MEMVAR子句时将字段数据送给同名简单内存变量,这些简单变量由系统自动创建,若后面有BLANK,系统自动创建与字段同名的空值变量。
例2.15表与变量数据的传送应用。
CLEAR
DIMENSIONa(8)
GO3
SCATTERMEMVAR
m.学号,m.姓名,m.性别,m.出生,m.团否,m.入学成绩
GO5
SCATTERTOa
a
(1),a
(2),a(3),a(4),a(5),a(6),a(7),a(8)
(2)将内存变量数据传给当前表的当前记录
GATHERFROM<
|MEMVAR[FIELDS<
][MEMO]
将内存变量数据依次传送给当前表中的当前记录。
1)当数组元素个数多于字段个数,多出的元素不传送。
当元素个数少于字段个数,多出的字段值不改变。
2)简单内存变量数据必须传送给同名字段,否则不传送。
3)若用FIELDS<
子句,只有列在字段名表中的字段,内存变量数据才传送。
4)省略MEMO子句时不对备注字段传送,即使有MEMO子句也不对通用字段传送。
例2.16内存变量与表之间数据传送的应用。
APPENDFROM学生1
APPENDBLANK
a
(1)=’’
a
(2)=’王小丽’
a(3)=’女’
a(4)={^1980-10-2}
a(5)=.T