图4-10 “表设计器”对话框中的“索引”选项卡
例如,将索引名为XBNL的表达式改为“性别+学号”,方法如下。
单击索引名XBNL所在行,再单击该表达式右侧的按钮,弹出“表达式生成器”对话框,如图4-11所示。
图4-11 “表达式生成器”对话框
在“字段”列表框中双击“性别”,在“数学”组合框中选定“+”号,然后在“字段”列表框中双击“学号”,这时,“表达式”列表框中显示“性别+学号”。再将索引名改为XBXH,单击“确定”按钮,则完成修改工作。当然,也可以在“表达式”列表框中直接输入表达式“性别+学号”。
此时在命令窗口输入命令SET ORDER TO 3与BROWSE后,显示结果如图4-12所示。 利用“表设计器”对话框中的“插入”按钮可在当前行前插入一个空行,以供建立新索引。利用“删除”按钮可以删除选定的索引。
16
图4-12 关于“性别+学号”索引
4.3 简单的查询与统计命令
查询和统计是数据库应用的重要内容。查询就是按照给定的条件在表中查找所需要的记录。这里先介绍较简单的查询命令,即顺序查询和索引查询,而SQL型的查询命令将在第6章介绍。
在实际应用中,经常要对表中的数据进行统计计算。例如,统计记录条数,对数值型字段求和、求平均值,分类汇总等,因此本节后面将介绍几个常用的统计命令。
4.3.1 查询命令
1.顺序查询命令
顺序查询命令有LOCATE和CONTINUE两条命令,其格式如下:
LOCATE [范围] FOR条件 [WHILE 条件] CONTINUE
LOCATE命令的功能是查找满足条件的第一条记录,并将记录指针指向该记录。范围短语的默认值为ALL。查找到满足条件的第一条记录后,连续执行CONTINUE命令即可找到满足条件的其他记录。
【例4-16】 在表xsh中查找学号为980012的记录,所使用的命令如下:
USE e:\\vf\\xsh.dbf
LOCATE FOR 学号=\
DISP &&显示满足条件的第一条记录 CONTINUE &&查找满足条件的下一条记录
说明:执行完命令CONTINUE后,若在状态栏中显示“已到定位范围末尾”,则表示查找结束。
2.索引查询命令
索引查询要求表的记录是有序的,即需要事先对表进行索引或排序,查找速度快。而顺序查询对表的记录没有任何要求,查找速度较慢,仅适用于记录较少的表。
SEEK和FIND命令都可以用于索引查询,这里介绍使用灵活的SEEK命令,命令格式:
SEEK〈表达式〉
该命令的功能是查找索引关键字满足表达式值的第一条记录。如果找到,则将记录指针指向该记录;如果找不到,则在状态栏中显示“没有找到”的提示信息。
在使用SEEK、LOCATE和CONTINUE等命令进行查询时,如果找到,则函数FOUND( )的值为.T.,否则为.F.。
17
【例4-17】 SEEK命令用法示例。
USE e:\\vf\\xsh.dbf INDEX ON 姓名 TAG xm SEEK \李明义\
?FOUND ( ) &&显示.T.,表示找到 DISP &&显示记录内容 name=\张洋\SEEK name
?FOUND( ) &&显示.T.表示找到 DISP &&显示记录内容
SEEK \李\&&查找姓李的学生,不知道名字,称为模糊查询 ?FOUND( ) &&显示.T.,表示找到 DISP
SET EXACT ON &&设置完全匹配 SEEK \李\
?FOUND( ) &&显示.F.,表示找不到
SET EXACT OFF &&恢复模糊匹配,OFF为默认值
4.3.2 统计命令
1.计数命令 命令格式为:
COUNT [范围] [FOR条件] [WHILE条件] [TO内存变量]
该命令计算指定范围内满足条件的记录数。省略范围时是指表中的全部记录。统计得到的记录数通常显示在主窗口的状态栏中。如果使用了TO短语,则还可以将记录数存储在内存变量中,便于以后引用。
【例4-18】 COUNT命令用法示例。
USE E:\\vf\\xsh.dbf
COUNT TO n &&统计表中记录总数并存储在变量n中 COUNT FOR YEAR(出生日期)=1989 TO nl
&&统计1989年出生的学生人数并存储在变量n1中
?n1/n &&计算并显示1989年出生人数所占总人数的比例
2.求和与求平均值命令
求和与求平均值命令的格式相同、用法相似。命令格式为:
SUM | AVERAGE [字段名列表] [范围] [FOR | WHILE条件] [TO内存变量表 | ARRAY 数组]
SUM命令的功能是在当前表中,对数值型字段分别求和。
AVERAGE命令的功能是在当前表中,对数值型字段分别求平均值。
数值型字段的和(或平均值)依次存入内存变量表或数组中。省略字段名列表时,则对当前表中所有数值型字段分别求和(或分别求平均值)。
与COUNT命令一样,这两条命令中省略范围短语时,也是指表中的全部记录。 【例4-19】 计算表xsh.dbf学生的平均年龄。
USE xsh
18
LIST SUM TO s1 年龄 99.00
AVERAGE TO pj 年龄 19.80 USE
3.汇总命令
汇总命令用于对表中数据进行分类求和。例如,在职工工资表中按部门汇总工资,在全国运动会上按各省市汇总成绩等。命令格式为:
TOTAL TO 文件名 ON 关键字 [FIELDS 数值型字段表] [范围] [FOR | WHILE条件]
该命令的功能是在当前表中,分别对关键字相同的记录的数值型字段求和,并将结果存储在一个新表中。一组关键字相同的记录在新表中产生一条记录。对于非数值型字段,只将关键字相同的第一条记录的字段值存入该记录。
执行汇总命令的前提条件是表中记录必须是有序的,ON后的关键字是索引关键字或排序所依据的字段。FIELDS短语中的数值型字段表指出要汇总的字段,省略时表示对当前表中所有数值型字段进行汇总。省略范围时表示表中所有记录。
【例4-20】 在表xsh.dbf中按性别汇总年龄。
USE xsh
INDEX ON 性别TAG xb TOTAL ON 性别TO hj USE hj BROWSE
结果如图4-13所示。
图4-13 按性别汇总年龄
19
4.4 设置过滤器
有时需要执行多条命令,并且这些命令中的条件都是相同的。如果每条命令中都输入一次相同的条件,则十分繁琐。遇到这种情况,可以设置过滤器。
过滤器分为两种:记录过滤器和字段过滤器。记录过滤器可以将符合条件的记录留下来,将不符合条件的记录过滤掉(使它们在逻辑上消失,而不是在物理上消失)。操作完毕,取消过滤器便可恢复被过滤掉的那些记录。字段过滤器则可将指定的字段留下来,将其他字段过滤掉,在以后的命令中可以不再指定字段名,只对留下来的字段进行操作。
1.设置记录过滤器 命令格式:
SET FILTER TO[条件]
执行该命令可从当前表中过滤出符合指定条件的记录,随后的操作仅限于这些记录。省略条件时表示取消所设置的过滤器。
【例4-21】 记录过滤器应用示例。
USE xsh
SET FILTER TO 性别=\男\
LIST &&显示男生记录,不必再写条件FOR性别=\男\COUNT TO n
?n &&显示3
SET FILTER TO &&取消记录过滤器 LIST &&显示所有记录 USE
2.设置字段过滤器 命令格式:
SET FIELDS TO [字段名] ALL SET FIELDS ON|OFF
SET FIELDS TO命令用于为当前表设置字段过滤器,ALL表示所有字段。当用该命令设置字段过滤器时,SET FIELDS自动置ON,表示只能访问字段名表指定的字段。将SET FIELDS置OFF表示取消字段过滤器,恢复原来状态。
【例4-22】 字段过滤器应用示例。
USE E:\\vf\\xsh
SET FIELDS TO 姓名,性别,是否党员 LIST &&仅显示3个字段的数据
20
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育vfp4 (4)全文阅读和word下载服务。
相关推荐: