VFP程序设计数据操纵.ppt
第五章 数据操纵,5.1 表中记录的定位 5.2 数据的传递5.3 表中数据的删除 5.4 表中数据的编辑 5.5常见VFP文件操纵命令5.6 排序5.7 索引5.8 数据统计命令,5.1表中记录的定位,绝对定位格式:GO|top|bottom功能:记录指针的绝对定位相对定位格式:skip 功能:将记录指针从当前记录移动N个记录。说明:N0,指针向下移动,N0时,向上移动。,5.1表中记录的定位,条件定位格式:locate for 功能:在指定范围中定位第一条满足的记录为当前记录若想定位到下一条满足条件的记录,使用命令continue菜单定位打开表浏览表表菜单转到记录,5.2 数据的传递,将当前记录传送到内存变量格式:scatter memvar功能:当前记录中的数据传送到内存变量说明:内存变量的名称与字段名称相同,引用时要用m.或m-加以区分。可使用fields子句:fields|fields like|fields except,use 学生.dbfGo 3Scatter memvar?m.学号,m.姓名,m.生日,5.2 数据的传递,将当前记录传送到数组格式:scatter to 功能:当前记录中的数据传送到数组说明:可使用fields子句:fields|fields like|fields except,use 学生.dbfGo 3Scatter to a?a(1),a(2),a(3),5.2 数据的传递,将内存变量的数据传送到记录格式:gather memvar功能:将内存变量中的数据传送到当前记录中与其同名的字段。补充:查看内存变量命令格式:list|display memory说明:list为卷屏方式显示;display为分屏方式显示,Go 3Scatter memvardisplay memoryGo 5Gather memvarlist,5.2 数据的传递,将数组中的数据传送到记录格式:gather from 功能:将数组中的数据按次序传送到当前记录。说明:可使用fields子句fields|fields like|fields except,Go 3Scatter to bdisplay memoryb(1)=”555555”Go 6Gather from blist,5.2 数据的传递,成批记录传送到数组格式:copy to array fields for功能:当前选定的数据复制到数组中说明:单条记录复制到一维数组中,多条记录复制到二维数组中。,Dimension c(2,3)Copy to array c for 生日1989/01/01?c(1,1),c(1,2),c(1,3)?c(2,1),c(2,2),c(2,3),5.2 数据的传递,从数组向表追加记录格式:append from array 功能:将数组中的数据追加到表后,listappend from array clist,5.3 表中数据的删除,逻辑删除delete命令鼠标单击删除标记(由白变黑)表菜单删除记录删除恢复recall范围for鼠标单击去除删除标记(由黑变白)表菜单恢复记录物理删除pack命令,物理删除已打上删除标记的记录表菜单彻底删除zap命令删除表中所有数据(无论其是否有删除标记),5.4表中数据的编辑,记录数据的追加格式:insert into 表名(字段名列表)values(表达式列表)功能:在表尾追加新记录,并输入其数据。格式:append from fields for功能:将文件名中的数据进行投影或选择操作后追加到当前表中。手动成批修改数据格式:edit|change 范围 fields for功能:修改指定范围、满足条件的记录的指定字段的值自动成批修改数据格式:replace with,with 范围for功能:用表达式n的值替换字段名n的字段值,5.5常见VFP文件操纵命令,文件复制格式:Copy FileTo功能:复制任何类型文件。说明:不能对已打开的文件进行复制操作。若复制的是表文件则其附属备注文件须另行复制。,copy file 学生.dbf to xs.dbf&复制表文件copy file 学生.fpt to xs.fpt&复制备注文件use xs.dbf&打开表list,5.5常见VFP文件操纵命令,表结构的复制格式:copy structure to fields功能:复制当前表的结构到指定文件中说明:只复制结构,不复制数据若有fields子句,则新表中只包含指定的字段。,use 学生.dbflistcopy structure to xsb fields 学号,姓名,生日use xsb.dbflist structure,5.5常见VFP文件操纵命令,文件重命名格式:renameto功能:给指定的文件重新命名。若为表改名,则备注文件名也要同步改动。删除文件格式:erase|delete file 功能:删除指定的文件显示文件目录命令格式:dir,rename 学生.dbf to 学生2.dbfrename 学生.fpt to 学生2.fpt,delete file xsb.dbferase 学生2.dbf&file 可以省略,5.5常见VFP文件操纵命令,表和其他类型文件中数据的转换格式:Copy To for while Fields|LIKE|EXCEPT TYPESDF|XLS|DELIMITEDWITH|BLANK|TAB功能:表中数据复制到其他类型的文件中说明:复制之后,当前表仍是原表,不是新表。要使用新表,必须重新打开。且备注文件同时被复制。若不含TYPE子句,表示是从表复制到表。Type子句中:Sdf:表示复制到文本文件,数据无定界符,数据间也无分隔符。Xls:表示复制到excel文件Delimited:复制到文本文件,但指定定界符和分隔符不带with:表示逗号为分隔符,双引号为定界符With:表示逗号为分隔符,指定定界符With blank:表示空格为分隔符,双引号是定界符With tab:表示制表符为分隔符,双引号是定界符,5.5常见VFP文件操纵命令,其他类型文件中的数据传入数据表格式:append from for whileFields|LINK|EXCEPTTYPESDF|XLS|DELIMITEDWITH|BLANK|TAB功能:将其他类型文件中的数据插入当前表中,5.6 排序,格式:Sort To On/A/c/d;,/A/c/d.范围 for while Fields功能:依据指定的关键字段对当前表中记录按指定顺序重新排列,结果存入指定的表文件中。说明:1、需排序的表应打开并为当前表。2、排序将产生一个新表,新表的记录顺序按指定顺序排列而源表的记录顺序不变。即排序改变的是数据的物理顺序。新表默认为关闭。3、ON子句用以指定排序关键字。4、/A/d参数用以指定排序方式,前者表示升序(默认);后者表示降序。5、/c参数用以指定是否区分大小写,缺省表示区分。6、指定多个关键字段表示多重排序(先对第一个关键字按要求排序对其中同值数据再按第二个字段要求排序以此类推),5.7 索引,排序与索引 索引的分类按功能分:主索引主索引不允许有重复值。一个表只能建立一个主索引,自由表没有主索引。候选索引候选索引也不允许重复值。但一个表可以创建多个候选索引。普通索引普通索引中,允许重复值出现。惟一索引有重复值记录时,惟一索引只包含第一个。其它仍然在表中,但不在索引文件中。按扩展名分:简单索引文件:.IDX。又称单索引文件,它仅仅按单一个字段索引排序,只能按升序排序。复合索引文件:.CDX。可包含多个索引,使用时选择其中某一个字段索引排序,可以按升序排序,也可以按降序排序。,5.7 索引,索引的创建命令方式:创建单索引文件格式:Index On To for 功能:按指定字段,建立简单索引文件。扩展名为.IDX创建结构复合索引格式:Index On Tag ascendingdescending candidate|unique功能:按指定字段,建立复合索引文件。复合索引文件与表文件同名,扩展名为.CDX说明:ascending表示升序,descending表示降序。Candidate表示建立的是候选索引,unique表示建立的是唯一索引,否则表示普通索引。,index on 生日 tag sr descending,index on 生日 to aa&按照生日字段建立单索引文件aaListindex on right(学号,2)to aa&按照学号的后两位进行排序,5.7 索引,菜单方式:显示表设计器选择索引顺序索引选项卡输入索引名选择索引类型输入索引表达式确定,5.7 索引,思考题:如何用命令方式按照一年中学生过生日的先后顺序建立索引?,5.7 索引,5.7.4 索引的使用使用索引必须先打开,一个表可以打开多个索引文件打开表时,结构复合索引自动打开打开的索引不一定起作用,必须成为主控索引才起作用任何时刻,主控索引只有一个删除索引时索引必须关闭表关闭,所有索引自动关闭,5.7 索引,打开和关闭索引文件 格式:set index to additive功能:打开当前表的一个或多个索引文件,默认第一个索引文件为主控索引说明:加additive表示不关闭原来打开的那些索引文件,结构复合索引除外。格式:set index to功能:关闭所有的索引文件,但结构复合索引除外。确定主控索引菜单方式:打开表浏览表在“表”菜单中选择“属性”在索引顺序下拉框中选择主控索引命令方式:set order to|tag,5.7 索引,删除索引单索引文件的删除(同文件的删除)结构复合索引中索引标记的删除:命令:delete tag,索引的更新当表中数据发生变动时,若无主控索引,则需要用命令进行更新。格式:reindex,5.7 索引,5.7.5 索引查询格式:seek 说明:此方法必须要求按关键字进行索引,在这里,为关键字的某个值,5.8 数据统计命令,计数命令命令:CountTofor功能:统计当前范围中满足指定条件的记录数。说明:通常结果显示在状态栏中可使用To子句存入指定的内存变量中。求平均命令命令:Average To|ARRAYfor功能:在当前表中对指定字段表达式求平均。说明:只对数字型字段适用若指定内存变量表则其个数不得少于表达式的个数。求和命令命令:Sum for To|ARRAY 功能:对当前表中指定的字段表达式求和。,5.8 数据统计命令,计算命令命令:CALCULATE for To|ARRAY 功能:在当前表中计算表达式表的值。说明:表达式中应包含8个标准函数之一,常见5种:AVG(),CNT(),MAX(),MIN(),SUM()汇总命令命令:Total On To Fields for功能:将当前表中数字型字段依指定的关键字和设置进行分组求和结果存入指定的汇总表文件中。说明:汇总前应先按汇总关键字进行排序一组关键字值相同的记录合并为一条新记录存入汇总文件。,