免费预览已结束,剩余221页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/2/5,visual foxpro 6.0,1,关系数据库管理系统vfp,江苏科技大学 经济管理学院,2019/2/5,visual foxpro 6.0,2,为什么要学习关系数据库管理系统,予人以鱼,不如予人以渔,2019/2/5,visual foxpro 6.0,3,章节导航,1 数据库系统及vfp概述,2 vfp语言基础,4 数据库的创建和使用,5 查询和视图,3 表的创建和使用,6 对象模型和事件模型,7 表单,8 控件,10 类的创建和应用,11 菜单和工具栏,9 报表和标签,12 建立应用程序,2019/2/5,visual foxpro 6.0,4,第1章 数据库系统及visual foxpro 概述,1.1 vfp的发展概述及启动,1.2 数据库系统的组成,1.4 主流dbms产品,1.5 visual foxpro概述,1.3 数据模型,1.6 项目管理器,返回,2019/2/5,visual foxpro 6.0,5,1.1 vfp6.0的发展概述及启动,1、1986年6月推出了foxbase+ 1.0版 2、1987年7月推出了foxbase+ 2.0版 3、1988年7月推出了foxbase+ 2.1版 4、1992年下半年推出了foxpro 2.5版 5、1994年下半年推出了foxpro 2.6版 6、1995年6月推出了visual foxpro 3.0 7、1996年8月推出了visual foxpro5.0 8、1998年9月推出了visual foxpro6.0 目前已发展到visual foxpro9.0 beta,返回,2019/2/5,visual foxpro 6.0,6,visual foxpro 6.0 系统启动,返回,单击,双击桌面快捷方式,或,2019/2/5,visual foxpro 6.0,7,1.2 数据库系统的组成(1),返回,数据库系统的基本组成包括: 数据库 数据库管理系统 数据库管理员,2019/2/5,visual foxpro 6.0,8,1.2 数据库系统的组成 (2),返回,2019/2/5,visual foxpro 6.0,9,1.3 数据模型,关系模型:,关键字,数据模型体现了数据的组织形式及数据之间的联系.,返回,2019/2/5,visual foxpro 6.0,10,1.4 主流dbms产品,oracle db2 sybase ms-sql server access visual foxpro,返回,2019/2/5,visual foxpro 6.0,11,1.5 visual foxpro概述 集成操作环境,返回,菜单栏,工具栏,主窗口,“命令”窗口,状态栏,2019/2/5,visual foxpro 6.0,12,1.5 visual foxpro概述 命令示例,* , & 引导注释内容 ? , ? 在vfp主窗口中显示表达式的值 clear 清除当前vfp主窗口中的信息 dir 在vfp主窗口中显示文件的目录 md/rd/cd 创建文件夹/删除文件夹/改变当前工作文件夹 copy file/rename/delete file 复制/更名/删除文件 run 调用外部dos命令 quit 关闭所有文件,并结束当前vfp系统的运行 use xs 打开名为xs的表文件 count all for 性别=“女” 统计xs中女生的人数 use 关闭表文件cj ,将其保存在磁盘上,返回,2019/2/5,visual foxpro 6.0,13,从当前记录开始,按记录顺序从上向下处理,一旦遇到不满足条件的记录,就停止搜索并结束该命令的执行,1.5 visual foxpro概述 一般语法式,返回,命令动词 ; 表达式表 ; 范围 ; for 条件 ; while 条件 ; to file 文件名 /to printer/to array; 数组名 /to 内存变量 ; all like/except 通配符 ; in 别名 ,计算机要完成的操作,执行该命令所操作的结果参数,只对满足条件的记录进行操作,操作结果的输出去向,包括或不包括与通配符相匹配的文件、字段或内存变量,允许在当前工作区操作指定工作区,all/next /record /rest,2019/2/5,visual foxpro 6.0,14,1.5 visual foxpro概述 常用文件类型,返回,生成的应用程序 .app 复合索引 .cdx 数据库 .dbc .dct .dcx 表 .dbf .fpt 报表 .frx .frt 标签 .lbx .lbt 菜单 .mnt .mnx .mpr .mpx 内存变量 .mem 程序 .prg .fxp .qpr .qpx 项目 .pjt .pjx 可视类库 .vcx .vct 表单 .scx .sct,rn_123-lyx,主文件名,.dbf,分隔符,扩展名,主文件名最长由10个字符组成,可以大、小写字母子混合使用,文件命名示例:,2019/2/5,visual foxpro 6.0,15,1.6 项目管理器(1),项目管理器是vfp中处理数据和对象的主要组织工具,其管理信息以项目文件保存,是vfp的控制中心(control center)。 项目管理器的创建方法 : 1、用【文件】菜单中的【新建】菜单命令。 2、用“常用”工具栏上的“新建”按钮。 3、在“命令”窗口中利用如下命令: create project 项目管理器的打开方法 : 1、用【文件】菜单中的【打开】菜单命令。 2、用“常用”工具栏上的“打开”按钮。 3、在“命令”窗口中利用如下命令: modify project ,返回,2019/2/5,visual foxpro 6.0,16,返回,1.6 项目管理器(2),创建新文件或对象,在相应是设计器中打开选定项,将已存在且不被当前项目所管理的文件添加到项目管理器,打开/关闭指定的数据库、浏览指定的表、运行指定的查询/表单/程序等,从项目中移去或删除选定项,连编一个项目或应用程序,折叠/展开项目管理器,选项卡,2019/2/5,visual foxpro 6.0,17,小 结,1、vfp从foxbase开始发展大致经过了十一个阶段。 2、vfp的使用方法,vfp功能强大,使用简单。 3、vfp的启动通常可以通过windows的开始菜单或桌面快捷方式实现。 4、vfp退出可以通过在命令窗口中执行quit、系统菜单的退出菜单项或主窗口的“关闭”按钮实现。 5、vfp的文件类型。 6、应掌握vfp的一些基本概念。 7、vfp的命令构成。 8、可以用菜单方式和命令方式创建和打开项目管理器。,返回,2019/2/5,visual foxpro 6.0,18,2.2 数据存储容器,2.3 运算符,2.1 常用数据类型,2.4 函数,2.5 表达式,2.6 空值,第2章 vfp语言基础,2.7 程序设计基础,返回,2019/2/5,visual foxpro 6.0,19,1、字符型数据(character,简写为c) 2、数值型数据(numeric,简写为n) 3、逻辑型数据(logic,简写为l) 4、日期型数据(date,简写为d) 5、日期时间型数据(datetime,简写为t) 6、整形数据(integer,简写为i) 7、备注型数据(memo,简写为m) 8、通用型数据(general,简写为g),2.1 常用数据类型,返回,2019/2/5,visual foxpro 6.0,20,2.2 数据存储容器,2.2.2 常量,2.2.3 内存变量,2.2.1 名称命名规则,2.2.4 数组,返回,2019/2/5,visual foxpro 6.0,21,名称中只能包含字母、下划线、数字符号和汉字符号 名称的开头只能是字母、汉字或下划线,不能是数字 除自由表的字段名、表的索引标识名至多10个字符,其余名称长度1128个字符 应避免使用系统保留字,例: cvar、nvar2、x_2、sum_of_score、nsum_score、_aver_ 2x、2_x、num-of-xs、nsum&score、_aver#gz、use、do,合法,非法,2.2.1名称命名规则,返回,2019/2/5,visual foxpro 6.0,22,一个不变的数值或字符串。常量表达式中包括常量和操作符,但不包含变量,而且计算结果总是常值。visual foxpro支持多种类型的常量,如:数值常量、字符常量、日期常量、逻辑常量、货币常量、日期时间常量等。,2.2.2 常量,例: 3.12e-8、$1000 、8*7 、.f. 、08-25-2003,3.1210-8,返回,2019/2/5,visual foxpro 6.0,23,2 控制变量访问,3 保存内存变量,1 变量的创建,4 恢复内存变量,2.2.3 内存变量,返回,2019/2/5,visual foxpro 6.0,24,在赋值的同时完成了内存变量的创建,并确定了该变量的数据类型以及目前变量的值,store 表达式 to 内存变量名表,例: store 0 to a,b 将数值0赋给变量a,b store “张三” to name 将字符串“张三”赋给name,内存变量名 = 表达式,例: a=.t. 将逻辑真值赋给变量a csoft = “vfp” 产生一个字符型变量,1 变量的创建,返回,2019/2/5,visual foxpro 6.0,25,2 控制变量的访问,变量只在它的作用域范围内才有效: local:定义局部变量 访问变量: private:定义私有变量 ?换行显示, public:定义全局变量 ?不换行显示,aa.prg local a public b,c do bb ,bb.prg local d private b return,a仅在aa.prg中有效, b在全局有效,但在aa.prg和bb.prg中的值不一样,私有的b在bb.prg及其子程中有用 c在全局有效 d仅在bb.prg中有效,返回,2019/2/5,visual foxpro 6.0,26,save to filename all like skeleton |all except skeleton,3 保存内存变量,文件扩展名的缺省值为 .mem,变量名通配符,例:假设存在自定义变量a,b,ab,ba save to v1 将所有内存变量保存到v1.mem文件中 save to v2 all like ?a* 将所有第一个字符是任意字符,第二个字符是a的内存变量保存到v2.mem文件中,即ba save to v3 all except ?a* 将所有第二个字符不是a的内存变量保存到v3.mem文件中,即a,b,ab,返回,2019/2/5,visual foxpro 6.0,27,restore from filename additive,4 恢复内存变量,保留当前内存中的内存变量,将指定文件中的内存变量添加到当前内存变量之后。 若省略additive选择项,则内存中已有的内存变量全部释放,将指定文件中的内存变量调入内存 。,例: restore from v1 此时内存中存在变量a,b,ab,ba restore from v2 此时内存中存在变量ba restore from v3 additive 此时内存中存在变量a,b,ab,ba,返回,2019/2/5,visual foxpro 6.0,28,2 为数组元素赋值,1 数组的声明,2.2.4 数组,返回,2019/2/5,visual foxpro 6.0,29,数组可以为一维数组或二维数组。在绝大多数情况下,数组在使用时必须预先声明。,1 数组的声明,返回,declaer | dimension | public | local 数组名(行数,列数),全局数组,局部数组,维数和大小,例: declaer xx(4) 定义一个一维数组xx public a(6,3) 定义一个6行3列的一维数组a dimension b(3),c(2,3) 定义一个一维数组b和一个 2行3列的二维数组c,2019/2/5,visual foxpro 6.0,30,2 为数组元素赋值,数组在声明之后,每个数组元素的默认值均为逻辑值.f.,declaer xx 6,3 xx1,2 = 1113,使用数组名和元素位置为数组元素赋值,xx = 1113,用一个语句为所有数组元素赋相同的值,此外,可以使用scatter、gather、copy to array 、append from array等命令在数组元素与表的记录之间进行值的传递,返回,2019/2/5,visual foxpro 6.0,31,运算符可用于操作同类型数据,分为:数值运算符、关系运算符、逻辑运算符、字符运算符和日期(时间)运算符,数值运算符 + 加 - 减 * 乘 / 除 *或 乘方 % 模运算 ()括号,2.3运算符,关系运算符 大于 不等于 != 不等于 = 大于或等于 = 精确等于,“=”必须是字符串间的比较,其他的可以为字符串、数值或日期(时间)数据间的比较。关系运算产生逻辑结果 “真”或“假” 。,返回,2019/2/5,visual foxpro 6.0,32,逻辑运算符 and 逻辑与 not 逻辑非(单边运算符) or 逻辑或 ! 逻辑非(单边运算符),字符运算符 + 字符串精确连接 - 字符串非精确连接 $ 属于 (查看左边字符串是否包含在右边字符串中),日期(时间)运算符 + 加 - 减 说明:日期加上数值得到将来的日期;日期减去数值得到过去的日期;两日期相减得到两个日期相差的天数。,返回,2019/2/5,visual foxpro 6.0,33,2.4 函数,函数是预先编好的程序代码,可供用户或程序调用。,函数名(参数1,参数2,),例: ?mod(36,10) &显示6 ?max(6,9) &显示9 ?substr(hello world, 7,5) &显示world ?year(date() &显示2003 ?str(123.456,5,2) &显示123.4 messagebox(hi!,a) &显示标题为a内 容为hi!的对话框,mod(a,b) = a-int(a/b)-iif(a/b0,1,0)*b,返回,2019/2/5,visual foxpro 6.0,34,表达式: 由运算符和括号将常量、变量和函数连接起来的有意义的式子。单个常量、变量和函数都可以看作是最简单的表达式。 表达式可以分为: 字符表达式 数值表达式 关系表达式 逻辑表达式 日期表达式 名称表达式,2.5 表达式,例: ?“教师”+allt(js.xm)+ “的基本工资是”+str(js.jbgz,7,2) ?date()+1 ?int(3/2) mod(3,2) x = “off” set talk &x 即set talk off,不可set talk (x),返回,2019/2/5,visual foxpro 6.0,35,2.6 空值,null值不是一种数据类型,它0、空字符串(”)或空格不同,表示什么都没有,排序优先于其他数据,null值会影响命令、函数、逻辑表达式和参数的行为。 null不是一种数据类型,当给字段或变量赋.null.时,该字段或变量的数据类型不变,只是值变为.null.。 针对null值时,isblank()、isdigit()、islower()、isupper()、isalpha()和isempty()返回“假”(.f.),而isnull()返回“真”(.t.)。,返回,2019/2/5,visual foxpro 6.0,36,2.7.1 创建与运行程序,2.7.2 程序结构,2.7.3 过程与用户自定义函数,2.7 程序设计基础,返回,2019/2/5,visual foxpro 6.0,37,程序是为完成某一具体任务而编写的一系列指令。vfp程序由一系列代码组成,代码可以包括以命令形式出现的指令、函数或vfp可以理解的任何操作。 创建程序的方法有: 1、通过“文件”菜单中的“新建”命令,2.7.1 创建与运行程序,2、利用项目管理器创建程序文件,选择“程序”选项,然后单击“新建文件”按钮打开程序编辑窗口,在“代码”选项卡选择“程序选项,然后单击“新建”按钮打开程序编辑窗口,输入程序代码,并保存即可,3、在命令窗口中通过命令打开程序编辑窗口 modify command filename | ? ,运行程序的方法有: 1、当程序处于vfp编辑窗口时,单击“常用”工具栏上的 按钮,2、在项目管理器中选择程序文件,单击“运行”按钮 3、在命令窗口中使用do命令 do programname with parameterlist ,返回,2019/2/5,visual foxpro 6.0,38,vfp的程序结构可以分为三种:顺序结构、分支结构、循环结构。 1、顺序结构 按照顺序依次执行程序中的命令, 例: store 4.12 to p s = p * p * 3.14 ?”圆的面积为:” ,s 2、分支结构 包括单条件分支结构和多条件分支结构 单条件分支结构: if lexpression then commands1 else commands2 endif,2.7.2 程序结构,返回,例: x = 9 if x 10 then ? x else x = x + 1 endif,2019/2/5,visual foxpro 6.0,39,多条件分支语结构: do case case lexpression1 commands1 case lexpression2 commands2 case lexpressionn commandsn otherwise commands endcase,该语句从第一各case开始,判断其后条件表达式的值是否为.t. ,当遇到第一各结果为.t.的case表达式时,就执行它后面的命令组,然后跳过下一个case到endcase之间的所有语句。当包含otherwise语句时,当所有case表达式的值都为.f.时,执行otherwise后面的命令组。,返回,2019/2/5,visual foxpro 6.0,40,例:根据一元二次方程的系数a,b,c判断方程根的情况:,delta = b*b 4*a*c do case case delta 0 ? “方程有两个不等的实数根:” ?(-b + sqrt(delta)/(2*a) ?(-b - sqrt(delta)/(2*a) case delta = 0 ? “方程有两个不等的实数根:” ? b/(2*a) case delta 0 ? “方程有两个复根:” real_part = -b/(2*a) &实部 img_part = sqrt(-delta)/(2*a) &虚部 ?alltrim(str(real_part)+”+”+ alltrim(str(img_part)+”i” ?alltrim(str(real_part)+”-”+ alltrim(str(img_part)+”i” endcase,返回,2019/2/5,visual foxpro 6.0,41,3、循环结构,有三类命令:基于条件的循环、基于计数的循环和基于表的循环 1)基于条件的循环: do while lexpression commands loop exit enddo,例:计算连续自然数之和,并且显示和刚大于1000的最后一个自然数。 store 0 to aa,bb do while aa=1000 bb=bb+1 aa=aa+bb enddo 结果显示为45。 ? bb,循环的“短路”语句,执行到它时,跳过它与循环出口语句之间所有命令,进入下一次循环,退出语句,执行到它时,无论循环结束条件是否满足,都将退出循环,程序转到出口语句外,返回,2019/2/5,visual foxpro 6.0,42,2)基于计数的循环: for var = ninitialvalue to nfinalvalue step nincrement 语句序列 exit loop endfor/next,例:求1到100中偶数的和,a=0 for i=2 to 100 step 2 a=a+i endfor ? a,屏幕显示为:2550,返回,2019/2/5,visual foxpro 6.0,43,3)基于表的循环命令 scan scope for lexpression1 commands loop exit endscan 说明:scan命令自动将记录指针移到下一条满足条件的记录,例:逐条显示student表中男生的情况。 use student scan for 性别=”男” disp wait endscan use,或者使用右侧代码:,use student scan if 性别#”男” loop endif disp wait endscan use,返回,2019/2/5,visual foxpro 6.0,44,1、过程与自定义函数的建立 为保证良好的复用性,可以建立过程文件和自定义函数,内容如下: procedure procedurename1 commands1 return eexpression endproc function functionname commands return endfunc,2.7.3 过程与用户自定义函数,为使过程或自定义函数具有一定的灵活性,可以项它们传递一些参数,使其根据不同的参数进行不同的处理,为使过程或自定义函数能接收参数,必须在procedure或function命令后面的第一个可执行语句之前使用如下语句进行参数定义: parameters parameterlist,返回,2019/2/5,visual foxpro 6.0,45,2、过程和用户自定义函数的调用 过程和用户自定义函数的编写和修改方式与一般的程序一样,调用过程的程序是主程序,过程可以嵌套,即一个子程序可以再调用其它子程序,但不能形成循环嵌套。 调用之前应使用如下命令: set procedure to procs.prg 调用命令如下: do procedurename in programname2 with parameterlist 返回语句如下: return lexpression | to master | to procedurename ,返回,2019/2/5,visual foxpro 6.0,46,3、参数传递的两种方式 过程或自定义函数的参数可以是变量或数组元素,并可以通过值或引用传递。如果希望自定义函数修改参数,并将修改后的值返回给主程序,则应通过引用(reference)传递参数;如果主程序需要保持参数的原值,则应通过值(value)传递参数。系统默认为传值。 设置参数传递方式的语句为: set udfparms to reference | value 例: set udfparms to value store 1 to gnx ?str(plusone(gnx) &值为2 ?str(gnx) &gnx值为1 function plusone parameters gnz gnz = gnz + 1 return gnz,set udfparms to reference store 1 to gnx ?str(plusone(gnx) &值为2 ?str(gnx) &gnx值为2 function plusone parameters gnz gnz = gnz + 1 return gnz,返回,2019/2/5,visual foxpro 6.0,47,小 结,1、对内存变量的赋值操作可以使用store命令或“=”进行。 2、内存变量可以使用save命令保存,也可以使用release命令和clear命令删除,还可以使用restore 命令恢复。 3、数组必须先定义后使用,数组元素的赋值操作与内存变量的赋值操作基本相同。 4、表达式按其值的数据类型可以分为四类,字符型、数值型、日期型、逻辑型。 5、运算符按其运算的结果可以分为五类:算术运算符、关系运算符、逻辑运算符、字符串运算符、日期运算符 。 6、在过程化程序设计可面向对象程序设计中,都要用到条件选择和循环命令。这些命令包括ifelseendif、do caseendcase、do whileenddo、scan endscan、foreonfor。,返回,2019/2/5,visual foxpro 6.0,48,3.1 表结构,3.2 表的打开与关闭,3.3 记录的处理,3.4 表的索引,3.5 有关表操作的常用函数,第3章 表的创建和使用,返回,2019/2/5,visual foxpro 6.0,49,3.1.1 表结构概述,3.1.2 表结构的创建,3.1.3 表结构的修改,3.1 表结构,返回,2019/2/5,visual foxpro 6.0,50,表结构主要指表的字段及其属性,即由那些字段组成,这些字段的字段名、数据类型、宽度、小数位数和空值(null)支持情况是什么。 例如:创建xs(学生)表:,3.1.1 表结构概述,返回,2019/2/5,visual foxpro 6.0,51,方法一:用create table-sql命令创建表结构,create table tablename (fieldname1 fieldtype1 (nfieldwidth, nprecision) null | not null, fieldname2,),例:create table xs(xh c(8) not null,xm c(6),xb c(2),zydh c(6),xdh c(2),jg c(10),csrq d,zp g),1、打开“表设计器”。在项目管理器的“数据”选项卡中选择“自由表”,然后单击【新建】|【新建表】按钮。在出现的“创建”对话框中输入表文件名,并选择存储路径,然后选择【保存】,将打开表设计器。 2、在“表设计器”中创建表结构。即在“表设计器”的“字段”选项卡上,输入各个字段的定义信息。,3.1.2 表结构的创建,方法二:用“表设计器”创建表结构,返回,2019/2/5,visual foxpro 6.0,52,功能:显示表设计器,修改当前表文件的结构。 说明:如果没有在当前选定工件区打开表,则显示“打开”对话框,允许用户从中选择一个要修改的表。,方法一:通过命令modify structure 或交互界面进入表设计器修改表结构,方法二: alter table tablename add | alter column fieldname fieldtype (nfieldwidth , nprecision) 或 alter table tablename drop column fieldname 或 alter table tablename rename column fieldname1 to fieldname2,功能:直接修改表文件的结构。 说明: add子句用于增加字段,alter子句用于修改字段;drop子句用于删除字段,rename子句用于字段改名。,3.1.3 表结构的修改,返回,2019/2/5,visual foxpro 6.0,53,3.2.1 工作区与数据工作期,3.2.2 表的打开与关闭,3.2.3 表的独占与共享,3.2 表的打开与关闭,返回,2019/2/5,visual foxpro 6.0,54,1、工作区号与别名 vfp6提供了多达32767个工作区,每个工作区都有一个工作区号,分别用132767表示,其工作区110还分别对应有别名aj。系统规定,用工作区号作为各个工作区的标识符,即数字1-32767;同时还规定,可以用工作区的别名作为工作区的标识符,a-j这10个字母是工作区的标识符,因此,单个字母a-j是不能用来作为表的文件名的,它是系统的保留字。 每个打开的表也都有一个别名,当用命令use 表文件名 打开表时,系统默认的表的别名就是该表的主文件名。如果在打开表时,在use命令后面使用了alias参数指定了表的别名,则可为表另外起一个别名,这时的表文件名就不再是表的别名。,3.2.1 工作区与数据工作期,返回,2019/2/5,visual foxpro 6.0,55,功能:选择一个工作区作为当前工作区。 说明:选择一个工作区作为当前工作区,使该工作区打开的表成为当前表,要选择的工作区,可使用工作区号作为标识符,也可以用工作区的别名来作为工作区的标识符。若选择0,则系统自动选取当前未使用的最小工作区号作为当前的工作区。 例: select 3 use student alias xs select 1 use score use score alias cj in xs again,2、工作区的选择与多表文件的打开与关闭 若想改变当前工作区,则可使用select命令来转换当前工作区。,select nworkarea | ctablealias | 0,返回,2019/2/5,visual foxpro 6.0,56,表的打开(使用任何一个表以前,都必须首先打开表):,use tablename in nworkarea | ctablealias again alias ctablealias noupdate,功能:in子句用于指定在哪个工作区中打开,缺省时表示在当前工作区中打开;again用于说明改表再次打开,即表在多个工作区中被同时打开;alias子句用于定义表的别名,缺省时表的别名与一般表名相同;noupdate指定表打开后不允许修改其结构和数据。,3.2.2 表的打开与关闭,返回,2019/2/5,visual foxpro 6.0,57,关闭打开的表文件,close all,功能:关闭所在所有工作区中打开了的表、表和单索引文件并且选择1号工作区为当前工作区。,此外:退出vfp时,将关闭所有的表,使用use命令关闭打开的表文件,use in nworkarea | ctablealias ,功能:关闭指定的表,不使用in子句时关闭当前工作区中的表。,返回,2019/2/5,visual foxpro 6.0,58,use tablename exclusive shared,功能:指定系统打开表的方式。 exclusive为独占打开,即一张表只能被一个用户打开; shared为共享打开,即网络上的多个用户可以在同一时刻访问同一张表。默认独占。,set exclusive on |off,功能:指定系统打开表的方式为独占或共享。但不改变已打开表的状态。一张表被打开多次时,其打开状态以第一次打开方式为准。,3.2.3 表的独占与共享,返回,2019/2/5,visual foxpro 6.0,59,3.3.1 记录的输入,3.3.2 表的浏览与定制,3.3.3 记录的定位,3.3.4 记录的修改,3.3.5 记录的删除,3.3.6 数据的复制,3.3.7 数据的统计,3.3 记录的处理,返回,2019/2/5,visual foxpro 6.0,60,方法一:表结构创建后立即输入数据,方法二:通过菜单或browse命令在浏览器窗口中追加记录,例: use xs browse,例:append from xs1 从xs1表中向当前表中导入数据,例: insert into xs(xh,xm) values (0001,张三) 向学生表中插入一条记录,学号“0001”,姓名“张三”,方法三:使用insert-sql命令追加记录 insert into tablename(fieldname1,fieldname2 , ) values(eexpression1,eexpression2,),方法四:使用append 与append from命令 append blank in nworkarea | ctablealias append from filename delimited | xls,另外:备注与通用型字段,通过针对字段双击或ctrl+home组合键打开内容,编辑后保存。,3.3.1 记录的输入,返回,2019/2/5,visual foxpro 6.0,61,如何将数据输入到表中,并根据需要对表中的数据进行处理、利用和维护?,返回,2019/2/5,visual foxpro 6.0,62,界面操作方式:通过设置“数据过滤器”(填写条件)来筛选记录。,格式1:browse fields fieldlist for lexpression freeze fieldname noappend nodelete nomodify title cexpression 浏览命令 格式2:set filter to lexpression 进行记录的筛选 格式3:set field to fieldlist 限制对字段的访问,3.3.2 表的浏览与定制,返回,例1: browse fields xh,xm for xb=“女” nomodify title “女学生” 显示女学生的学号、姓名信息 例2: set filter to xb=“女” 仅显示女学生信息 browse fields xh,xm nomodify title “女学生” 例3: set field to xh,xm 仅显示学号、姓名信息 browse for xb=“女” nomodify title “女学生”,2019/2/5,visual foxpro 6.0,63,记录的开始标志,记录指针,记录的结束标志,当用户向表中输入数据时,vfp为每个记录都按输入顺序指 定了,是vfp系统内部的一个指示器,可以将记录指针理 解为保存当前记录号的变量。每当打开一个表结构时,记录指针 总是指向第1条记录。,在进行数据处理时,经常要将记录指针移到,用户所需要操作的那个记录,这个过程即是,记录指针,记录号,。第一个输入的记录,其记录号为1。依次类推。,记录的定位,。,3.3.3 记录的定位,返回,2019/2/5,visual foxpro 6.0,64,返回,打开表时记录指针情况如下:,bof():测试指针是否指向记录的开始标志。.t.是,.f.不是 eof():测试指针是否指向记录的结束标志。.t.是,.f.不是 recno():测试记录指针的值。,用户可以从vfp主窗口的状态栏上看出记录指针的值。,1,.f.,.t.,1,.t.,.f.,2019/2/5,visual foxpro 6.0,65,返回,绝对定位:,goto nrecordnumber in workarea | in ctablealias |top | bottom,记录指针移动到第条记录,goto top,记录指针移动到记录号为3的记录,goto 3,记录指针下移4条记录,skip 4,记录指针上移2条记录,skip 2,记录指针下移1条记录,skip,相对定位:,skip nrecords in workarea | in ctablealias,记录定位的方法(1),2019/2/5,visual foxpro 6.0,66,张三,set order to xm seek 张三,found()函数可测试是否找到匹配的记录,.t.是,.f.否。,locate for,快速定位:,xm= 张三,输入待查学生姓名,顺序定位:,查询定位按钮,例:在xs表中寻找首次出现姓名为张三的记录 use xs,locate for lexpression scope,seek eexpression order tagname ascending|descending in nworkarea|ctablealias,或表尾,出于对效率的考虑,建议更多地使用seek命令。,利用continue命令可以进行下一条满足条件记录的定位。,记录定位的方法(2),返回,2019/2/5,visual foxpro 6.0,67,前提:xs表有6条记录,仅第3条记录的xm字段值为“张三”。,(打开xs表),use xs,?bof( ),seek 张三 order xm,?recno( ),?recno( ),?eof( ),goto top,skip -1,?bof( ),.f.,(寻找xm为“张三”的记录),3,(移动记录指针到第一条记录),7,.t.,(记录指针上移一条记录),.t.,continue,(继续寻找下一条xm为“张三”的记录),?bof( ),.f.,记录指针的状态,?,?,?,?,?,?,?,?bof( ),?eof( ),.t.,.t.,一起来思考:,返回,2019/2/5,visual foxpro 6.0,68,例: update xs set xh = x + xh 将学号前加个x close tables all use xs replace xh with x+xh all,1、界面方式的记录修改 通过项目管理器、菜单选择或browse命令打开表,3.3.4 记录的修改,格式1:update tablename set column_name1 = eexpression1 , column_name2 = eexpression2 where filtercondition ,格式2:replace fieldname1 with eexpression1 additive , fieldname2 with eexpression2 additive scope for lexpression ,2、使用命令修改记录,返回,2019/2/5,visual foxpro 6.0,69,返回,3.3.5 记录的删除,例:对xs表文件中所有男生加注删除标记 use xs delete for xb=“男” 等价于: delete from xs where xb=“男”,可以通过界面操作或如下命令实现,删除标记,可以通过set delete on | off指定是否处理有删除标记的记录,delete scope for lexpression in nworkarea | ctablealias 或 delete from tablename where filtercondition,1、标记要删除的记录,2019/2/5,visual foxpro 6.0,70,例: recall 恢复当前记录 recall all 恢复所有记录 recall all for xb=“男” 恢复所有性别为“男”的记录,、 彻底删除记录,可以通过菜单命令“表彻底删除”或pack命令实现对加注了删除标记记录的物理删除;也可以通过zap命令从当前表中清除全部记录。两种命令均要求当前工作区中的表以独占方式打开。 zap比pack快。,delete for xb=“男” pack,返回,2、 恢复带删除标记的记录,可以通过界面操作或如下命令实现,recall scope for lexpression,2019/2/5,visual foxpro 6.0,71,copy to filename fields fieldlistscopefor lexpressiontypesdf|xls|delmitedwith delimiter|with blank|with tab|with character delimiter 例: use xs copy to xs01 xls 生成xs01.xls文件,count scopefor lexpressionto varname sumnexpressionscopefor lexpressionto varname average nexpressionscopefor lexpression to varname 例: count for cj 80 to a1 统计80分以上人数 average cj to a2 for cj 80 统计80以上平均分,3.3.7 数据的统计,3.3.6 数据的复制,返回,2019/2/5,visual foxpro 6.0,72,索引文件有二种:独立索引文件和复合索引文件,而复合索引文件又可分为结构复合索引文件和非结构复合索引文件两种。 vfp对结构复合索引文件提供了四种类型:主索引、候选索引、唯一索引、普通索引,结构复合索引文件的建立,index on eexpression to tag tagname for lexpression ascending | descending unique candidate,3.4 表的索引,返回,2019/2/5,visual foxpro 6.0,73,转移焦点,(1)利用表设计器的字段选项卡建立索引文件,在项目管理器中建立索引,在“数据”选项卡中选择要建立索引的表,单击“修改”按钮,打开表设计器,单击“索引”选项卡,输入索引标识,选择索引类型,输入索引表达式,也可选择表达式生成器进行表达式的生成,返回,2019/2/5,visual foxpro 6.0,74,1 在打开表时打开索引文件 复合索引文件在打开表时将自动被打开。,use tablename index ascending| descending,2、打开表后设置主控索引 如果在打开索引文件时未指定主控索引,打开索引文件之后需要指定主控索引,或者希望改变主控索引,可使用下面的命令。,set order to tagname innworkarea |ctablealias ascending | descending,说明:如果命令中不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中外合作开发合同(新能源)
- 2025金融机构贷款合同标准版
- 2025投资合同范本
- 2025企业资产管理与服务的合同协议
- DB14∕T 2164-2020 生物特征识别技术应用指南公共安全领域
- 屠宰车间质检培训
- 肾内科iga肾病治疗指南
- 总台服务员培训
- 水电施工管理团队总结
- 2025企业雇佣合同制员工合同范本
- 《国际散装运输危险化学品船舶构造和设备规则》(《IBC 规则》)
- 关节镜设备及器械
- 第十七章-全身系统性疾病在口腔的表现
- 干部人事档案目录(样表)
- GB/T 5080.7-1986设备可靠性试验恒定失效率假设下的失效率与平均无故障时间的验证试验方案
- 人物《袁隆平》PPT介绍
- GB/T 13576.1-2008锯齿形(3°、30°)螺纹第1部分:牙型
- 内蒙古鄂尔多斯煤矿
- 高中英语3500词汇
- 幼儿园中班社会:《田野里有什么》 课件
- 集中供水点项目邀标书
评论
0/150
提交评论