VFP第9部分(查询统计及扫描循环)解析课件_第1页
VFP第9部分(查询统计及扫描循环)解析课件_第2页
VFP第9部分(查询统计及扫描循环)解析课件_第3页
VFP第9部分(查询统计及扫描循环)解析课件_第4页
VFP第9部分(查询统计及扫描循环)解析课件_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

数据表的查询(P67页)

表中记录的查询就是在表的所有记录中查找满足条件的记录,并把记录指针定位在要查询的记录上。这里介绍2种传统查询方法:顺序查询和索引查询。

1)顺序查询(条件定位)顺序查询是一种按照记录的排列顺序,在表文件中逐个地查找满足条件的记录,查询速度较慢。

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

功能:按顺序搜索数据表,并将记录指针定位在满足条件的第一条记录上。数据表的查询(P67页)表中记录的查询就是在表(2)CONTINUE命令格式:CONTINUE

功能:LOCATE命令执行后继续移动记录指针到下一条满足条件的记录。说明:①LOCATE命令在指定范围内查找满足条件的第一条记录,并将该记录置为当前记录。如果找不到符合条件的记录,则显示“已到定位范围末尾”;缺省[范围]子句为ALL。②CONTINUE命令只能放在LOCATE命令后使用;可多次执行CONTINUE命令。③若LOCATE发现一条满足条件的记录,可使用RECNO()返回该记录号,且FOUND()函数的返回值为“真”(.T.),EOF()函数的返回值为“假”(.F.)。(2)CONTINUE命令说明:locate[范围]for<条件>

命令格式:继续查找命令

命令格式:continue配对使用不能单独使用locate[范围]for<条件>命令格式:继续查【例】在学生档案表(dab.dbf)中找出计算机1班的前2位同学,并将记录输出。USEdabLOCATEALLFOR专业班级="计算机1班"?FOUND()&&结果为.T.DISPLAYCONTINUE&&查找满足条件的下一记录?FOUND()DISPLAYUSE【例】在学生档案表(dab.dbf)中找出计算机1班的前22)索引查询(p79页)

索引查询是在数据表文件建立了索引的基础上进行的,因此必须打开相应的索引文件。打开索引后,记录将按索引关键字值升序或降序排列,查询的速度比顺序查询要快得多。(1)FIND命令格式:FIND<字符串>|<数值型常量>|<&字符变量>

功能:在索引文件中查找索引关键字值与指定的字符串或数值常数相等的记录。找什么索引什么2)索引查询(p79页)找什么索引什么说明:①FIND只能找C、N型数据,字符串常量可不加定界符;字符串变量前面必须用宏代换函数&。②FIND找到了与索引关键字相匹配的记录,则RECNO()返回匹配记录的记录号;FOUND()返回“真”(.T.);EOF()返回“假”(.F.)。③FIND命令找到的是与查询数据相匹配的第一条记录,没有继续查询命令。说明:(2)SEEK命令格式:SEEK<表达式>功能:在索引文件中查找索引关键字值与指定表达式值相等的记录。

说明:①只能在索引文件打开后使用SEEK命令。②SEEK命令查找的是表达式,表达式可以是C、N、D、L型的常量、变量及其组合。查找的字符串常量必须用定界符;变量不用&函数。③如果SEEK找到了与索引关键字相匹配的记录,则RECNO()返回匹配记录的记录号;FOUND()返回“真”(.T.);EOF()返回“假”(.F.)。④若找不到相匹配的关键字,则RECNO()返回表中记录个数加1。FOUND()返回“假”(.F.);EOF()返回“真”(.T.)。(2)SEEK命令

find<字符>|<数字>|&<内存变量>seek<表达式>|<内存变量>可以不加引号只能是字符、数值和日期表达式find<字符>|<数字>|&<内存变量>可以【例】使用FIND命令和SEEK命令在学生档案表(dab.dbf)中按如下要求分别查找满足条件的第一条记录。①查找姓名为“那措央中”的记录。②查找1987年出生的男生记录。USEdabINDEXON姓名TAGxmsyFIND那措央中&&或SEEK"那措央中"DISPLAYINDEXON性别+RIGH(DTOC(出生日期),2)TAGxbrqSEEK"男"+"87"&&按表达式的值查找?FOUND()&&根据FOUND()的值判断查找结果【例】使用FIND命令和SEEK命令在学生档案表(dab.d【例】:逐条显示学生表中84年出生的学生的信息。【例】:逐条显示学生表中84年出生的学生的信息。clearuse学生dowhile.not.eof() ifyear(出生日期)=1984 disp endif skipenddousecancel循环体改变条件取值的命令循环条件方法一:clear循环体改变条件取值的命令循环条件方法一:clearuse学生Locateforyear(出生日期)=1984

dowhile.not.eof() disp

continueenddousecancel方法二:改变条件取值的命令clear方法二:改变条件取值的命令扫描循环(scan…endscan循环)

格式:(见教科书146页,练习册148页)

该循环只对数据表中的指定记录逐个进行某种处理扫描循环(scan…endscan循环)该循环只对数据表中的方法三:clearuse学生scanforyear(出生日期)=1984

dispendscanusecancel方法三:clear当循环

gotopdowhilnoteof()

处理一个记录

skipendd扫描循环scan

处理一个记录ends当循环扫描循环例:在student.dbf中输入学生姓名,查询该学生的信息。(实验14任务1(1))例:在student.dbf中输入学生姓名,查询该学生的信息

方法一:

clearusestudentaccept"请输入学生姓名:"toxmlocatefor姓名=xmiffound()displayelse

?"查无此人"endifusereturn方法一:方法二:clearusestudentindexon姓名tagsxmaccept"请输入学生姓名:"toxmseekxmiffound() dispelse

?"查无此人"endifusereturn方法二:例:在student.dbf中统计江苏籍学生的人数。(实验14任务1(1))例:在student.dbf中统计江苏籍学生的人数。方法一:

clearusestudentstore0tors,zfdowhilenoteof() if籍贯="江苏" rs=rs+1 endif skipenddo?rsusereturn方法一:方法二:clearusestudentrs=0locatefor籍贯="江苏"dowhilefound() rs=rs+1 continueenddo?rsusereturn方法二:方法三:

clearusestudentrs=0scanfor籍贯="江苏" rs=rs+1endscan?rsusereturn方法三:例:对学生表逐条统计560分以上的学生人数,并显示。例:对学生表逐条统计560分以上的学生人数,并显示。数据表的统计运算(P79-81)

1)统计记录个数命令格式:COUNT[范围][FOR|WHILE<条件>][TO<内存变量>]功能:统计当前数据表中指定范围内满足条件的记录个数。统计主要是对于数据表中的记录数、数字型字段进行纵向统计。说明:①如果省略[范围]和[FOR|WHILE<条件>],则对当前表中所有记录进行统计。②[TO<内存变量>]选项是将统计结果存于内存变量中。【例】统计学生档案表(dab.dbf)中“英语3班”的学生人数,统计结果保存到内存变量M中。命令序列如下:USEdabCOUNTFOR专业班级=“英语3班”TOM&&在状态行显示“4记录”?"英语3班的学生人数有"+ALLTRIM(STR(M))+"人"&&将统计结果显示在主窗口上数据表的统计运算(P79-81)1)统计记录个数命令【例2)数值字段求和命令格式:SUM[范围][<表达式列表>][FOR|WHILE<条件>][TO<内存变量列表>]功能:对当前表的指定数值型字段或全部数值型字段在列方向上求和。说明:①<表达式列表>指定要求和的一个或多个字段或者字段表达式。如果省略<表达式列表>,则对所有数值型字段求和。②缺省[范围]和[FOR|WHILE<条件>],则对所有记录求和。③若指定<内存变量列表>,则将求和结果依次存于相对应的内存变量中,但要注意,其内存变量的个数必须与表达式列表或数值字段的个数相等,否则将出错。2)数值字段求和命令【例】对zggz.dbf表完成下列操作。①对所有数值字段求和。USEzggzSUMUSE统计计算结果如下所示:②对销售科的基本工资、岗位工资字段求和,结果保存到指定的内存变量中,并显示求和结果。USEzggzSUM基本工资,岗位工资TOX,YFOR部门="销售科"ALL?X,YUSE显示结果如下:1430.001230.00【例】对zggz.dbf表完成下列操作。②对销售科的基本工3)数值字段求平均值命令格式:AVERAGE[范围][<表达式列表>][FOR|WHILE<条件>][TO<内存变量表>]功能:对当前表中的数值字段在列方向上求平均值。各选项的含义与SUM命令相同。【例】对zggz.dbf表中销售科的jbgz、gwgz字段求平均值,结果保存到指定的内存变量中,并显示计算结果。USEzggzAVERAGE基本工资,岗位工资TOM,NFOR部门="销售科"ALL?M,N计算结果如下:715.00615.003)数值字段求平均值命令【例】对zggz.dbf表中销售科4)多功能计算命令格式:CALCULATE<表达式表>[范围][FOR|WHILE<条件>][TO<内存变量表>]功能:对表中的字段或包含字段的表达式作统计计算。<表达式表>可以是下列函数的任意组合,这些函数仅用于CALCULATE命令。说明:①这里的<表达式>指具有统计意义的函数。这些函数是:

CNT():统计记录数。

SUM(<数值表达式>):对当前表数值字段求和。

AVG(<数值表达式>):对当前表数值字段求平均值。

MAX(<表达式>):对当前表的C、N、D字段求最大值。

MIN(<表达式>):对当前表的C、N、D字段求最小值。CNT()、SUM(<数值表达式>)、AVG(<数值表达式>)、MAX(<表达式>)、MIN(<表达式>)4)多功能计算命令CNT()、SUM(<数值表达式>)、A②SUM()、AVG()这样的函数形式只能放在该命令后使用。③MAX()、MIN()这样的函数形式放在该命令后是指对当前表字段列方向求最大/小值。【例】计算zggz.dbf表中实发工资字段的最大值、最小值、平均值、总和。USEzggzCALCULATEMAX(实发工资),MIN(实发工资),AVG(实发工资),SUM(实发工资)计算结果为:②SUM()、AVG()这样的函数形式只能放在该命令后使用。5)分类汇总命令格式:TOTALTO<汇总表文件名>ON<关键字段>[范围][FIELDS<字段名表>][FOR|WHILE<条件>]功能:对数值型字段按指定的关键字段进行分类求和,结果存入指定的汇总表文件中。说明:①执行该命令要生成一个新的表文件。②使用该命令前,用于汇总的数据表必须按<关键字段>进行排序或索引③[FIELDS<字段名表>]指定汇总字段,汇总字段必须是数值型字段,若该项缺省则对所有数值型字段求和。④[范围]缺省时是对表中所有记录进行操作。5)分类汇总命令⑤汇总表文件中的一个记录值是按下述原则确定的:将当前表中“关键字段”值相同的记录汇总成一条记录;在该记录中,属于“字段名表”指定的数值型字段的值由各条同类记录对应字段之值求和产生;其余字段的值取同类记录中第一条记录对应字段的值。【例】对zggz.dbf表进行下列汇总统计。①按部门对所有字段进行汇总统计,汇总表文件名为gzhz1.dbf,命令序列如下:USEzggzINDEXON部门TObmsy1TOTALTOgzhz1ON部门ALLUSEgzhz1&&打开汇总表文件BROWSE⑤汇总表文件中的一个记录值是按下述原则确定的:【例】对z汇总表中的记录如下图所示。

可以看出,在gzhz1.dbf表中仅有4条记录,因为原表中只有4个部门。汇总表中的记录如下图所示。可以看出,在gzhz

②对zggz表中部门是厂部和销售科的记录按基本工资、岗位工资和实发工资字段进行汇总统计,汇总表文件名为gzhz2.dbf,命令序列如下

USEzggzINDEXON部门TObmsy2TOTALTOgzhz2ON部门FOR部门=“厂部”OR部门=“销售科”;FIELDS基本工资,岗位工资,实发工资ALLUSEgzhz2&&打开汇总表文件

BROWSE

汇总表中的记录如下图所示。②对zggz表中部门是厂部和销售科的记录按基本学号姓名性别年龄积分001张三男3020002李四女2510003王五男4050004赵七男2230005孙六女5020例:有如下数据表jf.dbf,按性别汇总积分。学号姓名性别年龄积分001张三男3020002李四女2510usejfindexon性别tagxbtotalon性别tohzfields积分usehzbrowse学号姓名性别年龄积分001张三男30100002李四女2530usejf学号姓名性别年龄积分001张三男30100002例:现有学生成绩表XSCJ.DBF,表结构及部分记录如下:XSCJ.DBF表结构:学号(C/10),课程号(C/6),成绩(N/7/1); XSCJ.DBF的部分记录:学号 课程号成绩

S01CA01 88

S01CA0265

S02CA01 72

S02CA02 51

S01 CA03 34

. .

.设该程序的文件名为cx4_1.PRG.应用分类求和(TOTAL)与统计(COUNT)命令,根据用户输入的学号,计算对应学号的学生的平均成绩。屏幕显示格式如下:学生的学号平均成绩最高成绩最低成绩

XXXXXXXXXXXXXXXXXXXXXXXXX(实验14任务2(1))例:现有学生成绩表XSCJ.DBF,表结构及部分记录如下:(usexscjAccept“输入学生学号:”

toxhCalculatecnt(),max(成绩),min(成绩)toks,zd,zxfor学号=xhindexon学号tagxhtotalon学号tohzfields成绩usehzLocatefor学号=xh?”学生的学号平均成绩最高成绩最低成绩”?学号,成绩/ks,zd,zxreturnusexscj例:已知某单位教师工资表JS.dbf有如下记录:Record#编号姓名年龄工资

13001李丽珍3669023002刘苏51168033003末言2282043004魏虎豹4696053005罗山40110063006甘甜3092073007丰潇潇471200下列程序用于统计工资表JS.DBF中40岁以上(包括40岁)的教师的平均工资。请填空完成。

USEJSS=0N=0LOCATEFOR①DOWHILE②

S=S+工资

N=N+1

③ENDDO?S/NUSE①年龄>=40②noteof()③continue例:已知某单位教师工资表JS.dbf有如下记录:USEJS例:设有数据库STUDENT.DBF的结构的内容如下:记录号姓名(C)性别(C)出生日期(D)总分(N)

1王青川男06/08/80586.002李凤女08/09/82532.003张方男05/06/81618.004赵雯女07/08/82609.005孙笑女06/23/80589.00阅读下列程序,写出运行结果:CLEARUSESTUDENTSCANIF性别="女"SKIPELSE?总分

ENDIFENDSCANUSERETURN586.00例:设有数据库STUDENT.DBF的结构的内容如下:阅读下下列程序统计银行客户关系表中,客户代码的第3、4位的字符是“F8”或“V7”,并且存款金额大于250000元的客户信息和人数。请填空完成。USE银行客户关系表GOTOTOP____(1)_____SCAN____(2)____ IF(SUBS(客户代码,3,2)=”F8”ORSUBS(客户代码,3,2)=”V7”) NUM=NUM+1 DISPLAYENDIF______(3)_____?”满足条件的客户人数有:”,numUSEnum=0(2)For存款金额>250000(3)endscan下列程序统计银行客户关系表中,客户代码的第3、4位的字符是“数据表的查询(P67页)

表中记录的查询就是在表的所有记录中查找满足条件的记录,并把记录指针定位在要查询的记录上。这里介绍2种传统查询方法:顺序查询和索引查询。

1)顺序查询(条件定位)顺序查询是一种按照记录的排列顺序,在表文件中逐个地查找满足条件的记录,查询速度较慢。

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

功能:按顺序搜索数据表,并将记录指针定位在满足条件的第一条记录上。数据表的查询(P67页)表中记录的查询就是在表(2)CONTINUE命令格式:CONTINUE

功能:LOCATE命令执行后继续移动记录指针到下一条满足条件的记录。说明:①LOCATE命令在指定范围内查找满足条件的第一条记录,并将该记录置为当前记录。如果找不到符合条件的记录,则显示“已到定位范围末尾”;缺省[范围]子句为ALL。②CONTINUE命令只能放在LOCATE命令后使用;可多次执行CONTINUE命令。③若LOCATE发现一条满足条件的记录,可使用RECNO()返回该记录号,且FOUND()函数的返回值为“真”(.T.),EOF()函数的返回值为“假”(.F.)。(2)CONTINUE命令说明:locate[范围]for<条件>

命令格式:继续查找命令

命令格式:continue配对使用不能单独使用locate[范围]for<条件>命令格式:继续查【例】在学生档案表(dab.dbf)中找出计算机1班的前2位同学,并将记录输出。USEdabLOCATEALLFOR专业班级="计算机1班"?FOUND()&&结果为.T.DISPLAYCONTINUE&&查找满足条件的下一记录?FOUND()DISPLAYUSE【例】在学生档案表(dab.dbf)中找出计算机1班的前22)索引查询(p79页)

索引查询是在数据表文件建立了索引的基础上进行的,因此必须打开相应的索引文件。打开索引后,记录将按索引关键字值升序或降序排列,查询的速度比顺序查询要快得多。(1)FIND命令格式:FIND<字符串>|<数值型常量>|<&字符变量>

功能:在索引文件中查找索引关键字值与指定的字符串或数值常数相等的记录。找什么索引什么2)索引查询(p79页)找什么索引什么说明:①FIND只能找C、N型数据,字符串常量可不加定界符;字符串变量前面必须用宏代换函数&。②FIND找到了与索引关键字相匹配的记录,则RECNO()返回匹配记录的记录号;FOUND()返回“真”(.T.);EOF()返回“假”(.F.)。③FIND命令找到的是与查询数据相匹配的第一条记录,没有继续查询命令。说明:(2)SEEK命令格式:SEEK<表达式>功能:在索引文件中查找索引关键字值与指定表达式值相等的记录。

说明:①只能在索引文件打开后使用SEEK命令。②SEEK命令查找的是表达式,表达式可以是C、N、D、L型的常量、变量及其组合。查找的字符串常量必须用定界符;变量不用&函数。③如果SEEK找到了与索引关键字相匹配的记录,则RECNO()返回匹配记录的记录号;FOUND()返回“真”(.T.);EOF()返回“假”(.F.)。④若找不到相匹配的关键字,则RECNO()返回表中记录个数加1。FOUND()返回“假”(.F.);EOF()返回“真”(.T.)。(2)SEEK命令

find<字符>|<数字>|&<内存变量>seek<表达式>|<内存变量>可以不加引号只能是字符、数值和日期表达式find<字符>|<数字>|&<内存变量>可以【例】使用FIND命令和SEEK命令在学生档案表(dab.dbf)中按如下要求分别查找满足条件的第一条记录。①查找姓名为“那措央中”的记录。②查找1987年出生的男生记录。USEdabINDEXON姓名TAGxmsyFIND那措央中&&或SEEK"那措央中"DISPLAYINDEXON性别+RIGH(DTOC(出生日期),2)TAGxbrqSEEK"男"+"87"&&按表达式的值查找?FOUND()&&根据FOUND()的值判断查找结果【例】使用FIND命令和SEEK命令在学生档案表(dab.d【例】:逐条显示学生表中84年出生的学生的信息。【例】:逐条显示学生表中84年出生的学生的信息。clearuse学生dowhile.not.eof() ifyear(出生日期)=1984 disp endif skipenddousecancel循环体改变条件取值的命令循环条件方法一:clear循环体改变条件取值的命令循环条件方法一:clearuse学生Locateforyear(出生日期)=1984

dowhile.not.eof() disp

continueenddousecancel方法二:改变条件取值的命令clear方法二:改变条件取值的命令扫描循环(scan…endscan循环)

格式:(见教科书146页,练习册148页)

该循环只对数据表中的指定记录逐个进行某种处理扫描循环(scan…endscan循环)该循环只对数据表中的方法三:clearuse学生scanforyear(出生日期)=1984

dispendscanusecancel方法三:clear当循环

gotopdowhilnoteof()

处理一个记录

skipendd扫描循环scan

处理一个记录ends当循环扫描循环例:在student.dbf中输入学生姓名,查询该学生的信息。(实验14任务1(1))例:在student.dbf中输入学生姓名,查询该学生的信息

方法一:

clearusestudentaccept"请输入学生姓名:"toxmlocatefor姓名=xmiffound()displayelse

?"查无此人"endifusereturn方法一:方法二:clearusestudentindexon姓名tagsxmaccept"请输入学生姓名:"toxmseekxmiffound() dispelse

?"查无此人"endifusereturn方法二:例:在student.dbf中统计江苏籍学生的人数。(实验14任务1(1))例:在student.dbf中统计江苏籍学生的人数。方法一:

clearusestudentstore0tors,zfdowhilenoteof() if籍贯="江苏" rs=rs+1 endif skipenddo?rsusereturn方法一:方法二:clearusestudentrs=0locatefor籍贯="江苏"dowhilefound() rs=rs+1 continueenddo?rsusereturn方法二:方法三:

clearusestudentrs=0scanfor籍贯="江苏" rs=rs+1endscan?rsusereturn方法三:例:对学生表逐条统计560分以上的学生人数,并显示。例:对学生表逐条统计560分以上的学生人数,并显示。数据表的统计运算(P79-81)

1)统计记录个数命令格式:COUNT[范围][FOR|WHILE<条件>][TO<内存变量>]功能:统计当前数据表中指定范围内满足条件的记录个数。统计主要是对于数据表中的记录数、数字型字段进行纵向统计。说明:①如果省略[范围]和[FOR|WHILE<条件>],则对当前表中所有记录进行统计。②[TO<内存变量>]选项是将统计结果存于内存变量中。【例】统计学生档案表(dab.dbf)中“英语3班”的学生人数,统计结果保存到内存变量M中。命令序列如下:USEdabCOUNTFOR专业班级=“英语3班”TOM&&在状态行显示“4记录”?"英语3班的学生人数有"+ALLTRIM(STR(M))+"人"&&将统计结果显示在主窗口上数据表的统计运算(P79-81)1)统计记录个数命令【例2)数值字段求和命令格式:SUM[范围][<表达式列表>][FOR|WHILE<条件>][TO<内存变量列表>]功能:对当前表的指定数值型字段或全部数值型字段在列方向上求和。说明:①<表达式列表>指定要求和的一个或多个字段或者字段表达式。如果省略<表达式列表>,则对所有数值型字段求和。②缺省[范围]和[FOR|WHILE<条件>],则对所有记录求和。③若指定<内存变量列表>,则将求和结果依次存于相对应的内存变量中,但要注意,其内存变量的个数必须与表达式列表或数值字段的个数相等,否则将出错。2)数值字段求和命令【例】对zggz.dbf表完成下列操作。①对所有数值字段求和。USEzggzSUMUSE统计计算结果如下所示:②对销售科的基本工资、岗位工资字段求和,结果保存到指定的内存变量中,并显示求和结果。USEzggzSUM基本工资,岗位工资TOX,YFOR部门="销售科"ALL?X,YUSE显示结果如下:1430.001230.00【例】对zggz.dbf表完成下列操作。②对销售科的基本工3)数值字段求平均值命令格式:AVERAGE[范围][<表达式列表>][FOR|WHILE<条件>][TO<内存变量表>]功能:对当前表中的数值字段在列方向上求平均值。各选项的含义与SUM命令相同。【例】对zggz.dbf表中销售科的jbgz、gwgz字段求平均值,结果保存到指定的内存变量中,并显示计算结果。USEzggzAVERAGE基本工资,岗位工资TOM,NFOR部门="销售科"ALL?M,N计算结果如下:715.00615.003)数值字段求平均值命令【例】对zggz.dbf表中销售科4)多功能计算命令格式:CALCULATE<表达式表>[范围][FOR|WHILE<条件>][TO<内存变量表>]功能:对表中的字段或包含字段的表达式作统计计算。<表达式表>可以是下列函数的任意组合,这些函数仅用于CALCULATE命令。说明:①这里的<表达式>指具有统计意义的函数。这些函数是:

CNT():统计记录数。

SUM(<数值表达式>):对当前表数值字段求和。

AVG(<数值表达式>):对当前表数值字段求平均值。

MAX(<表达式>):对当前表的C、N、D字段求最大值。

MIN(<表达式>):对当前表的C、N、D字段求最小值。CNT()、SUM(<数值表达式>)、AVG(<数值表达式>)、MAX(<表达式>)、MIN(<表达式>)4)多功能计算命令CNT()、SUM(<数值表达式>)、A②SUM()、AVG()这样的函数形式只能放在该命令后使用。③MAX()、MIN()这样的函数形式放在该命令后是指对当前表字段列方向求最大/小值。【例】计算zggz.dbf表中实发工资字段的最大值、最小值、平均值、总和。USEzggzCALCULATEMAX(实发工资),MIN(实发工资),AVG(实发工资),SUM(实发工资)计算结果为:②SUM()、AVG()这样的函数形式只能放在该命令后使用。5)分类汇总命令格式:TOTALTO<汇总表文件名>ON<关键字段>[范围][FIELDS<字段名表>][FOR|WHILE<条件>]功能:对数值型字段按指定的关键字段进行分类求和,结果存入指定的汇总表文件中。说明:①执行该命令要生成一个新的表文件。②使用该命令前,用于汇总的数据表必须按<关键字段>进行排序或索引③[FIELDS<字段名表>]指定汇总字段,汇总字段必须是数值型字段,若该项缺省则对所有数值型字段求和。④[范围]缺省时是对表中所有记录进行操作。5)分类汇总命令⑤汇总表文件中的一个记录值是按下述原则确定的:将当前表中“关键字段”值相同的记录汇总成一条记录;在该记录中,属于“字段名表”指定的数值型字段的值由各条同类记录对应字段之值求和产生;其余字段的值取同类记录中第一条记录对应字段的值。【例】对zggz.dbf表进行下列汇总统计。①按部门对所有字段进行汇总统计,汇总表文件名为gzhz1.dbf,命令序列如下:USEzggzINDEXON部门TObmsy1TOTALTOgzhz1ON部门ALLUSEgzhz1&&打开汇总表文件BROWSE⑤汇总表文件中的一个记录值是按下述原则确定的:【例】对z汇总表中的记录如下图所示。

可以看出,在gzhz1.dbf表中仅有4条记录,因为原表中只有4个部门。汇总表中的记录如下图所示。可以看出,在gzhz

②对zggz表中部门是厂部和销售科的记录按基本工资、岗位工资和实发工资字段进行汇总统计,汇总表文件名为gzhz2.dbf,命令序列如下

USEzggzINDEXON部门TObmsy2TOTALTOgzhz2ON部门FOR部门=“厂部”OR部门=“销售科”;FIELDS基本工资,岗位工资,实发工资ALLUSEgzhz2&&打开汇总表文件

BROWSE

汇总表中的记录如下图所示。②对zggz表中部门是厂部和销售科的记录按基本学号姓名性别年龄积分001张三男3020002李四女2510003王五男4050004赵七男2230005孙六女5020例:有如下数据表jf.dbf,按性别汇总积分。学号姓名性别年龄积分001张三男3020002李四女2510usejfindexon性别tagxbtotalon性别tohzfields积分usehzbrowse学号姓名性别年龄积分001张三男30100002李四女2530usejf学号姓名性别年龄积分001张三男30100002例:现有学生成绩表XSCJ.DBF,表结构及部分记录如下:XSCJ.DBF表结构:学号(C/10),课程号(C/6),成绩(N/7/1); XSCJ.DBF的部分记录:学号 课程号成绩

S01CA01 88

S01CA0265

S02CA01 72

S02CA02 51

S01 CA03 34

. .

温馨提示

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

评论

0/150

提交评论