版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 VFP应用与开发案例教程 辽宁交专现教中心白夏清 本章教学要求:掌握数据库和表的建立,对表的基本操作。第三章 Visual FoxPro数据库和表 31 Visual FoxPro数据库和表的建立 32 Visual FoxPro表记录的操作 33 表的统计 34 表的索引 35 多表操作 VFP应用与开发案例教程 辽宁交专现教中心白夏清 对于一个数据库应用系统来说,如何组织好相关的数据,是数据库应用系统开发成功与否的关键。用Visual FoxPro开发数据库应用系统时,通常应建立一个数据库,再在数据库下面建立若干个表和视图,一个表在一个时期只能属于一个数据库,一个表也可以是一个自由表,即
2、不属于任何数据库。 应当说明的是数据库是表、视图和连接等的集合,数据记录内容是存放在表中的,如图3-1所示。3.1 Visual FoxPro数据库和表的建立 VFP应用与开发案例教程 辽宁交专现教中心白夏清学生学籍库学生学籍库课程表成绩表学生基本信息表图3-1 学生学籍库的组成 VFP应用与开发案例教程 辽宁交专现教中心白夏清311 数据库的建立数据库的建立 在Visual FoxPro中有多种方法建立数据库。l 在命令窗口中输入命令格式:Create database 数据库名例如:在命令窗口中输入: Create database c:学籍管理学生学籍库将在“c:学籍管理”文件夹下创建一
3、个文件名为“学生学籍库.DBC”数据库。 VFP应用与开发案例教程 辽宁交专现教中心白夏清l 通过菜单或工具栏上的“新建”命令图3-2 新建对话框步骤:点击工具栏上的“新建”按钮,出现如图3-2所示的 “新建”对话框,选择“数据库”,然后点击“新建文件” 按钮,出现“创建”对话框,输入文件名c:学籍管理学生学籍库(如图3-3所示),点击“保存” 按钮,屏幕上将出现“数据库设计器”窗口,如图3-4所示。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-3创建对话框 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-4 数据库设计器窗口 VFP应用与开发案例教程 辽宁交专现教中心白夏清l
4、 使用数据库向导创建数据库步骤:点击工具栏中的“新建”按钮,出现“新建”对话框,选择“数据库”,然后点击“向导” 按钮,按照屏幕指示进行操作即可。312 数据库的打开与关闭 1. 打开数据库 l 使用Open DataBase命令 格 式 : O p e n D a t a B a s e Shared|ExclusiveNoupdateValidate VFP应用与开发案例教程 辽宁交专现教中心白夏清命令参数: 若省略数据库名或用?代替数据名,则系统将显示“打开”对话框,让用户从中选择现有的数据库。 Shared:表式以共享方式打开数据库。 Exclusive:表式以独占方式打开数据库。 N
5、oupdate:指定不能对数据库进行修改操作,即只能对数据库进行读操作。 Validate:指定在打开数据库时对数据库中的表和索引是否可用进行检查。 例如:打开c:学籍管理学生学籍库.dbc数据库 open database c:学籍管理学生学籍库 VFP应用与开发案例教程 辽宁交专现教中心白夏清l 在Visual FoxPro的集成环境中打开数据库点击工具栏中的“Open”按钮,然后在“打开”对话框中选择要打开的数据库文件。说明:当数据库打开后,若要使用表还必须使用Use命令打开表。 2. 关闭数据库 l 使用Close DataBase命令 格式:Close DataBase All命令参
6、数: VFP应用与开发案例教程 辽宁交专现教中心白夏清 All:关闭当前数据库和表,如果没有当前数据库,则关闭所有已打开的自由表、索引文件和格式文件,并把当前工作区设为1。 313 表的建立在Visual FoxPro中表是非常重要的,数据都是以记录的形式存放在表中的,表由两部分组成:表结构和记录,创建一个表时,首先应创建表结构,然后再根据需要输入数据,创建一个表结构时,应事先确定表结构的如下内容: l 字段名只能以字母、下划线和汉字开始,后面可跟字母、数字、 VFP应用与开发案例教程 辽宁交专现教中心白夏清下划线和汉字。每个字段名的最大长度不超过10个字符。 下列符号不能用于表字段名: #
7、$ % & * 空格 ! Visual FoxPro的保留字等 l 数据类型、宽度及小数据位数Visual FoxPro表中常用的数据类型:Visual FoxPro字段数据类型表:数据类型宽度(字节)小数位数备注字符型(Character)=254 任意字符 VFP应用与开发案例教程 辽宁交专现教中心白夏清字符型(Character))=254任意字符货币型(Currency)8 数值型(Numeric)=20=19 浮动型(Float)=20=19 日期型(Date)8 日期时间型(DateTime)8 VFP应用与开发案例教程 辽宁交专现教中心白夏清双精度型(Double)8=7
8、 整型(Integer)4 逻辑型(Logical)1 备注型(Memo)4 通用型(General) 保存OLE对象的引用字符型(二进制)(Binary)=254 保存数据不经代码页修改备注型(二进制)(Memo Binary)4 保存数据不经代码页修改 VFP应用与开发案例教程 辽宁交专现教中心白夏清 在Visual FoxPro中创建新表的方法有多种,但通常是在Visual FoxPro的集成开发环境中点击“文件”菜单“新建”,在弹出的新建对话框中选择“表”,然后选择“新建文件”按钮,屏幕上出现“创建”对话框,在该对话框中键入表文件名(如图3-5所示),键入表文件名后,点击“保存”按钮,
9、屏幕上出现“表设计器”窗口,在“表设计器”窗口中输入表结构(如图3-6所示),输入完成后点击“确定”按钮,屏幕上出现“现在输入数据记录吗?”对话时,若选择“否”则不输入数据,若选择“是”则屏幕上出现数据记录输入窗口,可在其中输入数据(如图3-7所示),输入完成后关闭数据记录输入窗口即可。注:备注型输入方法是当光标移动到备注型字段时按“Ctrl+PageDown”键,屏幕上就会出现输入备注型字段的编辑窗体,如图3-7所示。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-5 创建对话框 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-6 表设计器-学生基本信息表结构 VFP应用与开发
10、案例教程 辽宁交专现教中心白夏清图3-7 数据记录输入 VFP应用与开发案例教程 辽宁交专现教中心白夏清314 表的打开与关闭 1. 通过菜单操作打开表 操作步骤:点击“文件”菜单“打开”,屏幕上出现“打开”文件对话框,选择要打开的表文件(如图3-8所示),然后点击“确定”按钮即可。注:在图3-8中,若选择了“以只读方式打开(R)”,则只能对打开的表进行读操作不能进行修改、删除和增加等操作;若选择了“独占”,则其它用户此时只能以共享方式打开该表。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-8 “打开”对话框 VFP应用与开发案例教程 辽宁交专现教中心白夏清2. 通过命令打开表 在V
11、isual FoxPro的命令窗口中使用Use命令打开表。命令格式:Use Shared|Exclusive Alias 命令参数:Shared:指定以共享方式打开表,以这种方式打开的表,可以对表进行增加、删除和修改数据记录的操作,但不能修改表结构。Exclusive:指定以独占方式打开表,以这种方式打开的表,除可以对表进行增加、删除和修改数据记录的操作,还可以修改修表的结构。 VFP应用与开发案例教程 辽宁交专现教中心白夏清若不指定打开方式,则以独占方式打开表。Alias :指定打开表的别名,若省略该参数,表的别名就是表名。例如 要共享方式打开表C:学籍管理学生基本信息表.dbf,可使用如下
12、命令:Use C:学籍管理学生基本信息表.dbf Shared若要对表进行操作,必须先打开表。 3. 表的关闭 对表的操作完成后,应及时关闭表。 命令格式:Use VFP应用与开发案例教程 辽宁交专现教中心白夏清3.2 Visual FoxPro表记录的操作321 记录指针定位在Visual FoxPro中当打开一个表时,系统为该表设置一个记录指针,指向表中的某一条记录,记录指针指向的记录称为当前记录。当数据表刚打开时,记录指针指向第一条记录,若要移动记录指针可使用下面的命令。 1. Go/GoTo命令 命令格式:Go/GoTo RECORD | In | 命令功能:移动记录指针。 VFP应用
13、与开发案例教程 辽宁交专现教中心白夏清命令参数:RECORD :将表记录指针移到指定的记录。TOP:将表记录指针移到第一条记录。BOTTOM:将表记录指针移到最后一条记录。In | :指定要移到记录表所在的工作区,若省略该参数则是对当前工作的表进行操作。例如 将当前工作区的表的记录指针移到第3条记录,可使用如下命令:GoTo 3或者 VFP应用与开发案例教程 辽宁交专现教中心白夏清Go 3或者3 2. Skip命令 命令格式:Skip In |命令功能:移动记录指针。命令参数:指定记录指针移动的相对记录数,即若为正数,表示记录指针向文件尾方向移动,为负数表示向文件头方向移动记录指针;若省略该参
14、数,则表示记录指针向文件尾方向移动一个记录位置。 VFP应用与开发案例教程 辽宁交专现教中心白夏清In |:指定要移动记录指针的工作区或表别名。例如假设当前工作区的当前记录为12,总共有30条,执行如下程序: Skip 1 & 记录指针移到第11条记录 Skip 90 & 记录指针移到第1条记录 Skip & 记录指针移到第2条记录 Skip 100 & 记录指针移到第30条记录,即最后一条 Skip & 出错,因为已到文件尾与记录指针移动有关的函数有3个: VFP应用与开发案例教程 辽宁交专现教中心白夏清Recno( ):返回当前记录号。返回当前记录号
15、。Bof( ):测试记录指针是否已到文件头,若已到文件头返测试记录指针是否已到文件头,若已到文件头返回回.T.,否则返回否则返回.F.。Eof( ):测试记录指针是否已到文件尾,若已到文件尾返测试记录指针是否已到文件尾,若已到文件尾返回回.T.,否则返回否则返回.F.。322 增加记录向表中增加记录主要有两种方式,一种是直接通过全屏幕方式从键盘输入数据,另一种是从其它表文件中把有关数据记录添加到表中。 1. 从键盘输入新记录 VFP应用与开发案例教程 辽宁交专现教中心白夏清 (1) Apppend命令命令格式:Append Blank In 工作区|表别名 NoMenu命令功能:在表的最末尾添
16、加记录。 命令参数:Blank:若有该参数,则在表的末尾添加一条新记录,若没有该参数,则屏幕上出现数据输入窗体,在该窗体中可进行添加记录操作,如图3-9所示。In 工作区|表别名:指定要对哪一个工作区的表进行操作,省略该参数,则是向当前工作区的表添加记录。NoMenu:指定从系统菜单中删除“表”菜单项。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-9 向表中追加记录 VFP应用与开发案例教程 辽宁交专现教中心白夏清例如,要向表“C:学籍管理学生基本信息表.dbf”添加一个空白记录,可在命令窗口中输入如下命令:Use C:学籍管理学生基本信息表 &若表文件的扩展名为.DBF可省
17、略Append BlankUse &关闭表 (2) Insert命令命令格式:Insert Before Blank 命令功能:在当前表中插入新的记录。 命令参数: VFP应用与开发案例教程 辽宁交专现教中心白夏清Before:在当前记录之前插入新记录,若没有该参数则是在当前记录之后插入新记录。Blank:插入一条空记录,屏幕上不出现数据输入窗口;若没有该参数,屏幕上出现数据输入窗口,用户可以输入新的数据。例如 在表“C:学籍管理学生基本信息表.dbf”的第3和第4条记录之间插入新的记录,可在命令窗口输入如下命令:Use C:学籍管理学生基本信息表.DBFGo 3 &使当记录指
18、针指向第4条记录InsertUse VFP应用与开发案例教程 辽宁交专现教中心白夏清2. 从其它表文件中把有关数据记录添加到表命令格式:Append From 文件名|? Fields For 命令功能:从其它文件中将所需的数据复制到当前表中。命令参数:文件名:指定源数据文件名,即数据来自哪一个文件。?: 当执行该命令时,显示打开文件对话框,让用户从中选择一个源数据文件。 VFP应用与开发案例教程 辽宁交专现教中心白夏清Fields :指定要将源表的哪些字段复制到当前表中,若有多个字段,字段之间用逗号“,”隔开,若省略该参数,则是将源表的所有字段值复制到当前表以对应的字段中去。For :指定添
19、加记录的条件,只有符合条件的记录才会被添加到当前表中,若省略该参数,则是将源数据文件所有的记录添加到当前表中。例如,C: 学籍管理新生数据.DBF的内容如图3-10所示,C:学籍管理学生基本信息表.DBF的内容如图3-11所示。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-10新生数据表内容 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-11学生基本信息表内容 VFP应用与开发案例教程 辽宁交专现教中心白夏清将C: 学籍管理新生数据.DBF文件中的所有记录复制到C:学籍管理学生基本信息表.DBF中,在命令窗口中输入如下命令:Use C:学籍管理学生基本信息表.DBFAppen
20、d From C:学籍管理新生数据.DBFUse上述命令执行完后,表C:学籍管理学生基本信息表.DBF的内容如图3-12所示 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-12 追加记录后学生基本信息表内容 VFP应用与开发案例教程 辽宁交专现教中心白夏清323 删除记录与恢复 当表中的数据不再需要时,应将删除。为了防止误删除,在Visual FoxPro中删除记录分两步进行,第一步是逻辑删除,即只在要删除的记录上作一个删除标记,数据记录并没有真正从表中删除,当发现删除操作有误时,还可以用恢复命令将其恢复,显然只被逻辑删除的记录仍要占用硬盘空间,被逻辑删除的记录在列表显示(List或D
21、isplay)时记录前有一个删除标记“*”或“”(用Browse浏览记录时);第二步是物理删除,即将作了删除标记的记录从硬盘中彻底删除,物理删除后的记录不可以再恢复。 1. 逻辑删除命令格式:Delete For While In |命令功能:对符合条件的记录进行逻辑删除。命令参数: 指定要操作的记录范围,该参数可以是:All:所有记录。Next n:从当前记录开始的后面n个记录。Record n:第n号记录。Rest:从当前记录开始一直到文件结束。For :指定要作删除标记的条件,依次对指定范围内的记录进行操作,若条件为真,对记录作删除标记,否则不作删除标记,然后再对下范围内的一个记录进行操
22、作。While :指定要作删除标记的条件,依次对指定范围内的记录进行操作,若条件为真,对记录作删除标记,若条件为假或已到范围内的最后一个记录则停止。若省略范围、For 和While 参数,则只删除当前记录。若省略范围,但有For 或While 参数,则缺省的范围为整个记录。In |:指定要进行逻辑删除的表所在的工作区或表别名,若省略该参数,则是对当前工作区进行操作。例如,假设当前表为前面的学生基本信息表,执行如下操作:Delete record 5 & 给第5条记录加删除标记Go 7 & 给第7条记录成为当前记录Delete & 给当前记录加删除标记Delete for
23、 学号= 20040805 &给学号为20040805加删除标记。List &列表显示记录 记录号 学号 姓名 性别 出生日期 身高 简历 1 *20040805 刘军 .T. 07/04/85 170.3 memo 2 20040807 张平 .T. 06/13/85 175.0 Memo 3 *20040805 刘军 .T. 07/04/85 170.3 memo 4 20040807 张平 .T. 06/13/85 175.0 Memo 5 * 李光辉 .T. 07/14/85 170.3 memo 6 张勇 .T. 11/17/85 177.6 Memo 7 * 罗丽
24、.F. 07/04/86 162.8 memo 8 欧阳德雷 .T. 03/18/85 175.0 Memo 2. 物理删除命令格式:Pack命令功能:将作了删除标记的记录从表中彻底删除,释放其所占的内存空间。说明:要执行该命令,必须以独占方式打开表。例如:Use C:学籍管理学生基本信息表.DBF exclusiveDelete for 姓名=李勇PackUse 3. ZAP命令命令格式:ZAP IN | 命令功能:物理删除表中的所有记录。命令参数:In | :指定要执行删除操作的工作区或表别名。当要物理删除表中的所有记录可使用该命令,该命令与下面两条命令相当:delete allpack
25、4. 记录的恢复命令格式:RECALL FOR WHILE 命令功能:取消已打删除标记记录的删除标记。命令参数: 参见DELETE的命令参数说明。For :指定要恢复记录的条件,依次对指定范围内的记录进行操作,若条件为真,对恢复记录,否则不恢复,然后再对下范围内的一个记录进行操作。While :指定要恢复的条件,依次对指定范围内的记录进行操作,若条件为真,对恢复记录,若条件为假或已到范围内的最后一个记录则停止。若省略范围、For 和While 参数,则只恢复当前记录。若省略范围,但有For 或While 参数,则缺省的范围为整个记录。In |:指定要进行恢复的表所在的工作区或表别名,若省略该参
26、数,则是对当前工作区进行操作。例如: Use C:学籍管理学生基本信息表.DBF 5 & 使第5号记录为当前记录 delete & 对第5号记录作删除标记录 7 & 使第5号记录为当前记录 delete & 对第7号记录作删除标记录 recall & 恢复第7号记录 recall all & 恢复所有记录324 修改记录对表记录的修改有两种方式:屏幕编辑方式和和程序方式1. 屏幕编辑方式l EDIT/CHANGE命令命令格式:EDIT/CHANGE FIELDS F O R 条 件 W H I L E 条 件 命令参数:FIELDS :指定哪些字
27、段可以被修改。:参见DELETE命令说明。For 或While :指定要修改记录的条件,符合条件的记录才会在编辑窗口中显示并修改。说明:EDIT和CHANGE的功能是完全相同的。 VFP应用与开发案例教程 辽宁交专现教中心白夏清1. 逻辑删除命令格式:Delete For While In |命令功能:对符合条件的记录进行逻辑删除。命令参数: 指定要操作的记录范围,该参数可以是:All:所有记录。Next n:从当前记录开始的后面n个记录。Record n:第n号记录。Rest:从当前记录开始一直到文件结束。 VFP应用与开发案例教程 辽宁交专现教中心白夏清For :指定要作删除标记的条件,依
28、次对指定范围内的记录进行操作,若条件为真,对记录作删除标记,否则不作删除标记,然后再对下范围内的一个记录进行操作。While :指定要作删除标记的条件,依次对指定范围内的记录进行操作,若条件为真,对记录作删除标记,若条件为假或已到范围内的最后一个记录则停止。若省略范围、For 和While 参数,则只删除当前记录。若省略范围,但有For 或While 参数,则缺省的范围为整个记录。 VFP应用与开发案例教程 辽宁交专现教中心白夏清In |:指定要进行逻辑删除的表所在的工作区或表别名,若省略该参数,则是对当前工作区进行操作。例如,假设当前表为前面的学生基本信息表,执行如下操作:Delete re
29、cord 5 & 给第5条记录加删除标记Go 7 & 给第7条记录成为当前记录Delete & 给当前记录加删除标记Delete for 学号= 20040805 &给学号为20040805加删除标记。 VFP应用与开发案例教程 辽宁交专现教中心白夏清List &列表显示记录记录号 学号 姓名 性别 出生日期 身高 简历 1 *20040805 刘军 .T. 07/04/85 170.3 memo 2 20040807 张平 .T. 06/13/85 175.0 Memo 3 *20040805 刘军 .T. 07/04/85 170.3 memo 4
30、20040807 张平 .T. 06/13/85 175.0 Memo 5 * 李光辉 .T. 07/14/85 170.3 memo 6 张勇 .T. 11/17/85 177.6 Memo 7 * 罗丽 .F. 07/04/86 162.8 memo 8 欧阳德雷 .T. 03/18/85 175.0 Memo VFP应用与开发案例教程 辽宁交专现教中心白夏清2. 物理删除命令格式:Pack命令功能:将作了删除标记的记录从表中彻底删除,释放其所占的内存空间。说明:要执行该命令,必须以独占方式打开表。例如:Use C:学籍管理学生基本信息表.DBF exclusiveDelete for 姓
31、名=李勇PackUse VFP应用与开发案例教程 辽宁交专现教中心白夏清4. 记录的恢复命令格式:RECALL FOR WHILE 命令功能:取消已打删除标记记录的删除标记。命令参数: 参见DELETE的命令参数说明。For :指定要恢复记录的条件,依次对指定范围内的记录进行操作,若条件为真,对恢复记录,否则不恢复,然后再对下范围内的一个记录进行操作。While :指定要恢复的条件,依次对指定范围内的记录进行操作,若条件为真,对恢复记录,若条件为假或已到范围内的最后一个记录则停止。 VFP应用与开发案例教程 辽宁交专现教中心白夏清若省略范围、For 和While 参数,则只恢复当前记录。若省略
32、范围,但有For 或While 参数,则缺省的范围为整个记录。In |:指定要进行恢复的表所在的工作区或表别名,若省略该参数,则是对当前工作区进行操作。例如: Use C:学籍管理学生基本信息表.DBF 5 & 使第5号记录为当前记录 delete & 对第5号记录作删除标记录 VFP应用与开发案例教程 辽宁交专现教中心白夏清7 & 使第5号记录为当前记录delete & 对第7号记录作删除标记录recall & 恢复第7号记录recall all & 恢复所有记录324 修改记录对表记录的修改有两种方式:屏幕编辑方式和和程序方式 1. 屏幕编辑
33、方式l EDIT/CHANGE命令命令格式:EDIT/CHANGE FIELDS FOR 条件WHILE条件 VFP应用与开发案例教程 辽宁交专现教中心白夏清命令参数:FIELDS :指定哪些字段可以被修改。:参见DELETE命令说明。For 或While :指定要修改记录的条件,符合条件的记录才会在编辑窗口中显示并修改。说明:EDIT和CHANGE的功能是完全相同的。 325 查询记录把数据放在数据表中,是为了将来在需要时对其进行查询,查询操作是数据库操作中最常用的。 1. 用Browse命令进行浏览查询 VFP应用与开发案例教程 辽宁交专现教中心白夏清命令格式:Browse Scope F
34、ileds for 功能:显示数据表中的记录。参数说明:Scope:指定记录范围,该参数的取值可以是:All(所有记录)、Next n(当前记录及其之后的n个记录)、Record n(指定第n条记录)和Rest(当前记录及其之后的所有记录)。若省略该参数,缺省值为All。Fields :指定要查询显示的字段名列表,若省该参数,则显示所有字段。for :指定要查询显示的记录应满足的条件。 VFP应用与开发案例教程 辽宁交专现教中心白夏清例如:Set century on & 设置日期要显示世纪Set date ansi & 设置日期显示格式为yyyy.mm.dd Open dat
35、abase c:学籍管理学生学籍库.DBC Use 学生基本信息 Browse for 出生日期1980.05.23 Close 上面的程序运行过程中将打开一个查询窗口(如图3-14所示),可在其中浏览查询到的记录。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图 3-14 数据浏览查询窗口 VFP应用与开发案例教程 辽宁交专现教中心白夏清 2. 用Locate命令进行查询 命令格式: Locate Scopefor 功能:将记录指针定位到指定记录范围内满足条件的第一条记录,若没有记录满足条件,记录移到记录末尾,Eof()函数返回“真”。参数说明:Scope:指定记录范围,该参数的取值可以
36、是:All(所有记录)、Next n(当前记录及其之后的n个记录)、Record n(指定第n条记录)和Rest(当前记录及其之后的所有记录)。若省略该参数,缺省值为All。for :指定要查找的记录应满足的条件。 VFP应用与开发案例教程 辽宁交专现教中心白夏清 3. 用Continue命令进行查询 命令格式: Continue功能:激活Locate命令,继续顺查找。例如: Set century on & 设置日期要显示世纪 Set date ansi & 设置日期显示格式为yyyy.mm.ddOpen database c:学籍管理学生学籍库.DBCUse 学生基本信息
37、Locate for 出生日期=1980.05.23 VFP应用与开发案例教程 辽宁交专现教中心白夏清 Do while .T. If Eof()=.T. ?没有满足条件的记录! exit else ?学号,姓名,性别,出生日期 Continue &查找下一个出生日期为1980.05.23的记录 Endif Enddo Close all VFP应用与开发案例教程 辽宁交专现教中心白夏清 326 从表向数组传递数据在Visual FoxPro中对数组大小没有什么限制,主要取决于磁盘和内存空间的大小,数组存在于内存,运行处理速度很快。当前记录传到数组中/数组中的数据送当前记录:有关命令:
38、 1. Scatter命令命令格式:Scatter Fields Memo TO 功能:将当前表的当前复制到数组中。 VFP应用与开发案例教程 辽宁交专现教中心白夏清 参数说明:指定要复制到数组的字段,若省略该参数,则将所有字段复制到数组中(对于备注型字段需要Memo参数)。Memo:指定复制备注型字段,若省略该参数,则不复制备注型字段到数组。:指定记录要复制到的数组。说明:若要复制的字段个数大于数组的大小,系统会自动将数组的大小扩大,若数组未定义,系统会自动创建数组。 VFP应用与开发案例教程 辽宁交专现教中心白夏清 2. Gather命令命令格式: Gather From Fields M
39、emo功能:将数组中的数据复制到当前表的当前记录中。参数说明:指定要复制数据的数组。:指定要接收数据的字段,若省略该参数,则将对所有字段进行操作(对于备注型字段需要Memo参数)。 VFP应用与开发案例教程 辽宁交专现教中心白夏清 327 使用SQL语言对表进行操作结构化查询语言SQL(Structured Query Language)是目前关系型数据库中应用最广泛的语言之一,美国国家标准协会(ANSI)早在1982年就开始着手SQL的标准化工作,并公布了SQL标准,目前SQL已成为关系型数据库语言的国际标准。SQL语言具有如下特点: l 综合统一。SQL语言集数据操纵语言(DML)、数据语
40、言(DDL)和数据控制语言的功能于一体,能独立完成数据库的全部活动。 l 高度非过程化。用SQL语言对数据进行操作时,用户只需提出“做什么”,而不需要指出“怎么做”,也不需要指出存取路径,存取路径和操作过程都由系统自动完成。 VFP应用与开发案例教程 辽宁交专现教中心白夏清 l 面向集合的操作方式。SQL语言的操作对象、查询结果都可以是元组的集合。 l SQL语言简洁,易学易用。SQL语言即是自主型语言,又是嵌入式语言。当作为自主型语言使用时,用户通过联机方式直接在终端上键入SQL命令对数据库进行操作;SQL作为嵌入式语言可嵌入到其它高级语言中使用,例如C语言、Visual FoxPro等。值
41、得注意的是,实际系统中实施的SQL语言与标准SQL语言是有一定差异的,大部分的实际系统并没有完全支持标准的SQL,但在某些方面还对标准SQL语言进行了扩充。1. SELECT-SQL数据查询命令 VFP应用与开发案例教程 辽宁交专现教中心白夏清命令格式:Select as 别名1, as 别名2, as 别名nFrom ,Into Where group by having order by VFP应用与开发案例教程 辽宁交专现教中心白夏清参数说明:from:指定要查找的数据来自哪些表或视图。Into:指出查询结果输出到哪里,若省该参数,屏幕上会出现查询窗口显示查询结果。Where:指定查询条
42、件,若省略该参数,则对所有的记录进行操作。Group by:指定如何对查询结果进行分组,若省略该参数,则不对查询结果不进行分组。Having:指定分组应满足的条件,与group by一起使用。Order by:指定查询结果的排序方式,若省略该参数,则不对查询结果进行分组。 VFP应用与开发案例教程 辽宁交专现教中心白夏清SELECT-SQL命令有多个子句,下面通过一些示例来说明其一般用法: 示例一: Select * from 学生基本信息表 查询“学生基本信息”表中所有字段(“*”号表示所有字段)和所有记录,如果表“学生基本信息表”没有打开,系统会自动打开,但命令执行完后表仍处于打开状态,查
43、询结果如图3-16所示。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-16 Select使用示例一 VFP应用与开发案例教程 辽宁交专现教中心白夏清示例二: Select 学号 As 学生学号, 姓名 As 学生姓名, ; 性别, 出生日期 ; From C:学籍管理学生基本信息表.DBF ; Where 性别=.t. “Where”指定查询条件,“As”指定列标题,如果不指定列标题,则用字段名作列标题。示例二的查询结果如图3-17所示。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-17 Select使用示例二 VFP应用与开发案例教程 辽宁交专现教中心白夏清示例三: Se
44、lect 学号, 姓名, iif(性别,男,女) As 性别, ; 2002-year(出生日期) As 年龄 ; From C:学籍管理学生基本信息表.DBF ; order by 学号 在Select命令中可以使用函数和表达式,查询结果按学号顺序排列。示例三的查询结果如图3-18所示。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-18 Select使用示例三 VFP应用与开发案例教程 辽宁交专现教中心白夏清示例四: Select 学号, 姓名; Into array array1; From C:学籍管理学生基本信息表.DBF ; Where 出生日期=1985.05.03 li
45、st memory like array* & 显示内存变量 Select命令的查询结果输出到数组array1中,示例四的运行后的结果如图3-19所示。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-19 Select使用示例四 VFP应用与开发案例教程 辽宁交专现教中心白夏清示例五: Select 学号, 姓名,max(出生日期) as 最大年龄; from C:学籍管理学生基本信息表.DBF 查询表中年龄最大的记录,运行结果如图3-20。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-20 Select使用示例五 VFP应用与开发案例教程 辽宁交专现教中心白夏清 2
46、. INSERT-SQL数据插入命令 命令格式: Insert Into (字段名1,字段名2,字段名n) Values (表达式1 ,表达式2, .,表达式n) 或 Insert Into (字段名1,字段名2,字段名n) From Array 参数说明: Into :指定数据要插到哪一张表中。 (字段名1,字段名2,字段名n):指定要插入哪些字段内容,若省略该参数,则是要插入所有字段的值。 VFP应用与开发案例教程 辽宁交专现教中心白夏清 From Array :将指定数组的内容插到表中。下面通过示例来说明Insert-SQL命令的用法。示例一: Use C:学籍管理学生基本信息表.dbf
47、 insert into 学生基本信息表(学号,姓名) ; values(20020889,罗明华) 执行上述命令后,会在“学生基本信息表”的末尾插入一记录。 VFP应用与开发案例教程 辽宁交专现教中心白夏清示例二: Use C:学籍管理学生基本信息表.dbf Dimension array1(2) Array1(1)= 20020890 Array1(2)= 张子华 insert into 学生基本信息表(学号,姓名) from array array1 执行上述命令后,会在“学生基本信息表”的末尾插入一记录。 VFP应用与开发案例教程 辽宁交专现教中心白夏清3.3 表的统计 对于数据库的操
48、作来说,各种统计是经常要遇到的,Visual FoxPro为用户提供了功能强大的各种数据统计命令和函数方便用户编程。331 记录统计 记录的统计就是统计表中的记录数有多少。 1. Count记录数统计命令 命令格式:Count Scope For To VFP应用与开发案例教程 辽宁交专现教中心白夏清参数说明:Scope:指定记录范围,该参数的取值可以是:All(所有记录)、Next n(当前记录及其之后的n个记录)、Record n(指定第n条记录)和Rest(当前记录及其之后的所有记录)。若省略该参数,缺省值为All。For :指定要查找的记录应满足的条件,若省略该参数,则是对指定记录范围
49、内的所有记录进行统计。To :指定统计结果存放的变量,若省略该参数,统计结果显示在屏幕上。注意:对于该命令,若Set delete被设置为Off,则统计的记录数包括被作了删除标记的记录;若Set delete被设置为On,则统计的记录数不包括被作了删除标记的记录。 VFP应用与开发案例教程 辽宁交专现教中心白夏清例如:Set talk offSet delete offUse C:学籍管理学生基本信息表.dbfbrowsecount to var1Set delete oncount to var2?包括作了删除标记的记录数为:,var1?不包括作了删除标记的记录数为:,var2 VFP应用与
50、开发案例教程 辽宁交专现教中心白夏清图3-21浏览“学生基本信息表” VFP应用与开发案例教程 辽宁交专现教中心白夏清从图3-21中可以看出有3个记录作了删除标记,关闭图3-21的窗体,程序显示记录的统计结果:包括作了删除标记的记录数为: 8 不包括作了删除标记的记录数为: 4 332 累加值和平均值累加值求某个或多个字段表达式的算术和。 1. Sum记录数统计命令命令格式:Sum Scope For To | To Array VFP应用与开发案例教程 辽宁交专现教中心白夏清参数说明:指定一个或多个要求累加和的字段表达式,表达式的值必须为数值型,若省略该参数,则是对所有数值字段求和。Scop
51、e:指定记录范围,该参数的取值可以是:All(所有记录)、Next n(当前记录及其之后的n个记录)、Record n(指定第n条记录)和Rest(当前记录及其之后的所有记录)。若省略该参数,缺省值为All。For :指定参加求和的记录应满足的条件。To :指定保存累加和结果的变量列表,变量个数应与的个数相同,多个变量名之间用逗号“,”隔开。 VFP应用与开发案例教程 辽宁交专现教中心白夏清To Array :指定保存累加和结果的数组,若指定的数组不存在,Visual FoxPro会自动创建这个数组,若指定的数组元素不够多,Visual FoxPro会自动扩展数组元素的个数。若省略“To ”和
52、“To Array ”参数,则计算结果直接显示在屏幕上。例如:计算全班平均身高。USE c:学籍管理学生基本信息表.dbf Sum 身高 to v1 &计算全班身高总和Count to v2 &统计全班总人数?全班平均身高:,v1/v2 &显示全班平均身高 VFP应用与开发案例教程 辽宁交专现教中心白夏清2. Average计算平均值命令命令格式:Average Scope For To | To Array 参数说明:指定一个或多个要求平均值的字段表达式,表达式的值必须为数值型,若省略该参数,则是对所有数值字段求平均值。Scope:指定记录范围,该参数的取值可以是:A
53、ll(所有记录)、Next n(当前记录及其之后的n个记录)、Record n(指定第n条记录)和Rest(当前记录及其之后的所有记录)。若省略该参数,缺省值为All。 VFP应用与开发案例教程 辽宁交专现教中心白夏清For :指定参加求平均值的记录应满足的条件。To :指定保存平均值结果的变量列表,变量个数应与的个数相同,多个变量名之间用逗号“,”隔开。To Array :指定保存平均值结果的数组,若指定的数组不存在,Visual FoxPro会自动创建这个数组,若指定的数组元素不够多,Visual FoxPro会自动扩展数组元素的个数。若省略“To ”和“To Array ”参数,则计算结
54、果直接显示在屏幕上。 VFP应用与开发案例教程 辽宁交专现教中心白夏清例如:计算全班平均身高。USE c:学籍管理学生基本信息表.dbf Average 身高 to v1?全班平均身高:,v1 VFP应用与开发案例教程 辽宁交专现教中心白夏清3.4 表的索引 表中的记录是按录入的先后顺序排列的,通常是没有规律的,对于这种没有规律排列的记录,对其查找只能按从头至尾的方式进行查询,如果表中有10000个记录,则查询一个记录平均要遍历5000个记录,对于一些记录数较多的表来说,其查询时间可能非常长。 索引是对表中的记录按一定规律排序,从而可大大提高查询速度,索引并不是修改表中记录的排列顺序,而是新建
55、一个索引文件,记录的关键字(即排序字段)在索引文件中按顺序排列。对于一个表可以建立多个索引,每个索引代表一种排列方式(如第1个索引为按学号排列,第2个索引按成绩排序等) VFP应用与开发案例教程 辽宁交专现教中心白夏清注意:当对表中的记录进行了修改、增加或删除操作,Visual FoxPro也会对相应的索引文件进行修改、增加或删除操作,因此对一个表不要建太多的索引,否则Visual FoxPro会在维护索引上耗费相当时间,使程序运行效率降低。在Visual FoxPro中,索引有三种:结构复合索引(.CDX)、独立复合索引(.CDX)和独立索引(.IDX),用得最多的索引是结构复合索引(.CD
56、X),其特点是: l 打开表时自动打开索引。 l 在同一索引文件中可以有多种排序方式,具有多个索引关键字。 l 在对表进行修改、增加或删除操作时,系统自动维护索引文件。 VFP应用与开发案例教程 辽宁交专现教中心白夏清341 索引的建立 1结构复合索引的建立在Visual FoxPro的“项目管理器”中, 选择要建立索引的表(如图3-22所示),然后点击“修改”按钮,屏幕上出现“表设计器”窗口,在“表设计器”中选择“索引”卡(如图3-23所示)。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-22 选择要建立索引的表 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-23 “表设计
57、器”索引卡 VFP应用与开发案例教程 辽宁交专现教中心白夏清 在图2-23中的“索引名”输入框中输入索引名,在“类型”处选择索引类型,共有4种索引类型: l 主索引(Primary Indexs):要求其对应的索引表达式的值在表中是唯一的,不允许重复,如图3-23中的Sno就是主索引,要求表中每个学生的学号不能相同。数据库中的都可建立一个主索引,也可以没有主索引,自由表不能建立主索引。 l 候选索引(Candidate Indexs):也是具有唯一值的引索,数据表和自由表都可以建 立候选索引,一个表可以建立多个候选索引。 l 普通索引(Regular Indexs):允许索引对应的表达式值重复
58、,一个表可建立多个普通索引。 VFP应用与开发案例教程 辽宁交专现教中心白夏清l 唯一索引(Unique Indexs):主要是为了与以前的版本兼容,允许索引对应的表达式的值重复,但在唯一索引中只存储重复值第一次出现的记录,忽略重复值第二次和以后的记录。 在图3-23中,建立索引时还可以指定索引的排序方式:升序()或是降序(),要改变索引的排序方式,选中要改变排序方式的索引,然后点击其左边的 即可。对于一个索引还可以指定其“筛选条件”,要指定筛选条件,点击筛选输入框右连的按钮,屏幕上将会出现筛选“表达式生成器”窗口(如图3-24所示),可在图3-24的表达式输入筛选条件,对索引指定了筛选条件后
59、,则只有符合筛选条件的记录才会在索引文件中出现。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-24 筛选“表达式生成器”对话框 VFP应用与开发案例教程 辽宁交专现教中心白夏清 在图3-23中输入完要建立的索引后,按“确定”按钮,屏幕上出现图3-25所示的对话框,在图3-25中,点击“确定”按钮,系统开始检测当前表中记录是否符合索引的设置(针对主索引和候选索引),若屏幕上出现图3-26所示的消息框,则说明当前表中的记录违返了索引唯一性要求,若没有新的窗口出现,则说明索建立成功了。 VFP应用与开发案例教程 辽宁交专现教中心白夏清图3-25 表结构修改确认对话框图3-26 Visual
60、 FoxPro消息框 VFP应用与开发案例教程 辽宁交专现教中心白夏清当建立索引成功后,用户可以看到在与表相同的目录中会有一个与表同名,但扩展名为.CDX的索引文件。 2独立索引的建立命令格式:Index On To Ascending|Descending For Unique参数说明:指定索引关键字。To :指定索引文件名。 VFP应用与开发案例教程 辽宁交专现教中心白夏清Ascending:指定索引按升序排序。Descending:指定索引按降序排序,若不指定排序方式,缺省是按升序排序。For :指定参加索引的记录应满足的条件,不满足条件的记录不会在索引中出现,若省略该参数,缺省是所有的记录。Unique:指定建立唯一索引,即具有相同引索关键字的记录只有第1条记录出现在索引中。例如,有一学生成绩表,按课程名称和学号排序。Use 学生成绩表 exclusive VFP应用与开发案例教程 辽宁交专现教中心白夏清Browse & 按记录在表中的物理顺序浏览表中的记录Index on 学号 to index1Browse & 按索引顺序浏览表中的记录Use &关闭打开的表注意
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年通信广播有效载荷项目评价分析报告
- 2024至2030年中国气体燃料发动机油数据监测研究报告
- 2024至2030年中国拱形门数据监测研究报告
- 2024至2030年中国多圆网多缸瓦楞纸机数据监测研究报告
- 交易安全防范
- 广东省佛山市顺德区多校2024-2025学年四年级上学期期中语文试卷
- 国家预算和预算管理体制课件
- 如何准备并发表一场成功的TED演讲
- 内蒙古呼和浩特市(2024年-2025年小学五年级语文)统编版期末考试(上学期)试卷及答案
- 标准工程设计合同范例
- 全国河流水文站坐标
- 单片机原理与应用说课
- 修辞手法课件(共46张PPT)
- 河道整治工程毕业设计
- SB/T 10482-2008预制肉类食品质量安全要求
- GB/T 20307-2006纳米级长度的扫描电镜测量方法通则
- GB/T 13912-2020金属覆盖层钢铁制件热浸镀锌层技术要求及试验方法
- GB/T 11270.2-2021超硬磨料制品金刚石圆锯片第2部分:烧结锯片
- GB 39552.1-2020太阳镜和太阳镜片第1部分:通用要求
- FZ/T 93015-2010转杯纺纱机
- 2023年考研英语(二)真题
评论
0/150
提交评论