第二章 表的基本操作---Visual Foxpro 数据库程序设计教案1-9章_第1页
第二章 表的基本操作---Visual Foxpro 数据库程序设计教案1-9章_第2页
第二章 表的基本操作---Visual Foxpro 数据库程序设计教案1-9章_第3页
第二章 表的基本操作---Visual Foxpro 数据库程序设计教案1-9章_第4页
第二章 表的基本操作---Visual Foxpro 数据库程序设计教案1-9章_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 表的基本操作n 教学目的与要求熟练掌握表的建立和修改的方法,熟记VFP表达式的构成元素及其作用,掌握各种表的维护命令。n 教学内容表的类型;表的建立和修改;VFP表达式的构成;表的维护。n 教学重点与难点表的建立和修改;VFP表达式的构成;表的维护。2.1 表的建立与修改2.1.1 表结构的建立表由表的结构和数据组成。例如:设备清单表(P29,表2.1)一、设计表(关系型数据表)的结构建立表的结构就是定义各字段的属性:字段名、字段类型、字段宽度和小数位数等。1、字段名命名规则:以字母或汉字开头;长度一般不超过10个字符(最长允许达255个);构成元素为字母、汉字、数字、下划线等( /

2、: ? * “ | )除外。2、类型与宽度P30,表2-2 字段类型与宽度3、小数位数注意:只有数值型、浮动型、双精度型含有小数位,小数点和正负号都占一位。二、建立表的结构 默认目录(用户目录)的设置:1)菜单方式:“工具” “选项” “文件位置” “默认目录”2)命令方式:SET DEFAULT TO 目录 命令窗口(Ctrl+F2快捷键打开)的辅助作用: 对照学习VFP命令。 供用户修改、重用或剪贴命令,减少命令的重复输入。例2-1 建表操作示例:建立表SB.DBF的结构(P33)三、表设计器的字段选项卡(1)“字段名”文本框:输入字段名。(2)“类型”组合框:选取字段类型。(3)“宽度”

3、微调器:直接输入或微调数据。(4)“小数位数”微调器:直接输入或微调小数位数。(5)“索引”列:建立索引。(6)“NULL”按钮:设置可否接收NULL值。(NULL:指无明确值,不同于零、空串或空格)。(7)移动按钮:按住鼠标左键改变字段的前后位置。(8)删除按钮:删除一个字段。(9)插入按钮:在当前字段之前插入新的按钮。2.1.2 表数据的输入一、数据输入要点(1)顺序输入,自动提示下一条记录。(2)逻辑型:只能接收T、Y、F、N t、y、f、n 8个字母之一。(3)日期型:默认是美国格式(mm/dd/yy)。设置中国格式命令:SET DATE ANSI 返回美国格式命令:SET DATE

4、AMERICAN 设置日期年月日: set date YMD / DMY / MDY设置日期中年、月、日分割符号:SET MARK TO “-“显示/隐藏世纪的设置命令:SET CENTURY ON/OFF(4)备注型或通用型:回车可跳过;输入按Ctrl+PgDn或鼠标双击。非空时显示:Memo或Gen。二、备注型数据的输入可以输入和编辑备注信息。利用“编辑”和“格式”菜单。三、编辑窗口的打开和关闭数据存盘:单击关闭按钮或按下Ctrl+W键。废弃本次输入:按Esc或Ctrl+Q键。四、表的打开和关闭1、用USE命令来打开或关闭表命令格式:USE &若有备注型或通用型字段,则自动打开同名的.FP

5、T文件。说明:(1)缺省时,表示关闭当前工作区。VFP中有32767个工作区。(2)打开一个表时,该工作区原来的表自动关闭。(3)表刚打开时,记录指针指向第一条记录。(4)表操作结束时,应及时关闭、保存。2、打开表的其它常用方法(1)“文件”菜单 “打开” “类型(表)” “确定”。(2)在“数据工作期”窗口中打开表。(以后再介绍)3、关闭表的其他方法(1)命令:clear all:关闭所有表,并选择工作区1;同时释放内存空间及用户定义的菜单和窗口,但不释放系统变量。close all:关闭所有的数据库和表,并选择工作区1;关闭表单设计器、查询设计器、报表设计器和项目管理器。close dat

6、abase all:关闭当前数据库及其中表;若无打开的数据库,则关闭所有自由表,并选择工作区1。带有ALL则关闭所有打开的数据库及其中的表和所有打开的自由表。close tables all:关闭当前数据库中所有的表,但不关闭数据库;若无打开的数据库,则关闭所有的自由表。带ALL则关闭所有数据库中所有的表和所有自由表,但不关闭数据库。(2)通过“数据工作期”命令关闭表。(略)(3)“文件” “退出”或命令窗口输入命令(quit)。2.1.3 表结构的修改一、打开表设计器来修改表结构1、打开表向导方法一:“文件” “新建” “表” “向导”方法二:“工具” “向导”2、字段选取窗口的操作选表 确

7、定字段 下一步 确定2.1.4 表数据的修改一、两种记录显示方式(编辑和浏览方式:利用“显示”菜单切换)打开一个表后在“显示”菜单中自动增加一个浏览命令(相当于命令:browse)二、浏览窗口的操作1、打开浏览窗口(1)界面操作方式:“显示” “浏览”(2)命令方式:browse2、滚动查看在记录多的情况下,利用滚动条。注意:若要修改表的结构和记录,在打开表是应设置“独占”方式。3、一窗两区浏览窗口左下角的“窗口分割器”。 两个窗口之间的记录显示的连接。三、在浏览窗口追加与删除记录1、记录的追加 “显示” “追加方式”:连续追加。 “表” “追加新记录”(append):仅追加一条记录。 “表

8、” “追加记录”(append from):从其他表中追加一批记录。2、记录的删除分两步:“逻辑删除”:打上删除标记。 “物理删除”(pack):从磁盘上删除。2.1.5 通用型字段(用于存放多媒体信息)(1) 内容存放在.PFT文件中;(2) gen Gen;(3) 双击编辑或Ctrl+PgDn键。一、通用型数据的输入(1)利用剪贴板; (2)“编辑”菜单的“插入对象”。二、通用型字段数据的编辑“链接”方式:只是建立链接,不存储对象本身。“嵌入”方式:存放对象本身,占空间大。三、通用型数据的删除“编辑” “清除”2.2 表达式表达式:由常量、变量、函数和运算符组成的式子。2.2.1 常量(即

9、固定不变的量)一、数值型常量整数、小数或用科学记数法表达的数值型常量。如:10,-56,3.14,1.5E3等。二、字符型常量用双引号、单引号或方括号等定界符括起来的字符串。如:”你好”,XYZ,计算机等。字符串最长可以达到254个字符。特例:”老师说: 上课了! ”三、日期型和日期时间型常量定界符: 如:9/11/06 9/11/06 16:20空白日期型和日期时间型: 或 / 和 / :“严格的日期格式”:yyyy-mm-dd,hh:m:ssa|p 如: 2006/9/11 注意:执行VFP6.0命令时默认使用严格的日期格式,如果使用非严格形式则需先执行命令:set strictdate

10、to 0,否则会引起错误。再设置严格格式命令:set strictdate to 1。四、逻辑型常量“真”:.T. ,.t. ,.Y. ,.y.“假”:.F. ,.f. ,.N. ,.n.五、货币型常量以$开头,四舍五入到小数点后4位小数。2.2.2 变量在命令操作和程序运行中其值允许变化的量称为变量。3种:内存变量、字段变量和系统内存变量。一、内存变量1、 VFP的命名规则(除字段和文件外):(1) 以字母(汉字)或下划线开头;(2) 字母、数字、下划线组成;(3) 至多128个字符;(4) 不可与系统保留字同名。2、内存变量赋值命令(1)命令格式1: =(2)命令格式1: store to

11、 例2-4:s=VFP &字符串VFP赋给变量s,结果s值为VFP,并成为字符型变量。store 2*4 to n1 , n2 , n3 &计算2*4得8,结果3个变量值都是8,都成为数值型变量。3、表达式值的显示命令命令格式:?| ? 注意:?表示从屏幕下一行的第一列起显示结果。 ?表示从当前行的当前列起显示结果。 表示可用逗号来隔开多个表达式,命令执行时遇逗号就空一格。二、数组数组是按一定顺序排列的一组内存变量,数组中的各个变量称为数组元素。(黑板解释!)1、数组的定义命令格式:dimension | declare (,),(,)说明:(1)系统规定各下标的下界为1。(2)在VFP中最多

12、可定义65000个数组,每个数组最多可包含65000个数组元素。2、数组的赋值(1)同一数组中的元素可以取不同类型,且同一个元素的前、后类型也允许改变。在定义数组时,系统默认的初值是.F.。(2)可以将各个元素赋给相同的值。如:dimension a(2,3) a=8(3)二维数组的元素在内存中按行存储。三、字段变量四、系统变量:以下划线开头例:_diarydate:存储当前日期 _cliptext:接受文本并送入剪贴板。五、内存变量的显示命令格式:list | display memory like to printer prompt | to file 说明:(1)like子句表示将选出与

13、通配符匹配的内存变量,有?和*。(2)选项to printer将内容输出到打印机上,prompt则提供是否打印的提示窗口。选项to file能将显示内容存入文件。六、内存变量的清除命令格式:release all like | expect &release 数组名用于释放数组!2.2.3 运算符一 、算术、关系、逻辑运算符(P49,表2.6)(1)算术运算符的操作数必须是数值,结果也是数值。注意:运算顺序和结合方向。(2)关系运算两操作数类型必须一致,比较的结果是逻辑值。注意:数值型数据比较大小;日期型数据比较先后;字符型数据比较字符的ASCII的值。(3)逻辑运算的操作数必须是能得出逻辑值

14、的表达式,运算结果也是逻辑值。(4)表达式计算按优先级别从高到低。(5)表达式值的类型决定了表达式的类型。数值表达式;逻辑表达式等。二、字符、日期与日期时间运算1、字符运算符+ 运算符:用于连接两个字符串。- 运算符:用于连接两个字符串,并将前一个字符串尾部的空格移到结束字符串的尾部。如:? “宿州 ” + “学院” &显示“宿州 学院” ?“宿州 ” - “学院” &显示“宿州学院 ”2、日期与日期时间型的运算日期-日期=天数 ; 日期+天数=日期 ;日期-天数=日期日期时间-日期时间=秒数 ; 日期时间+秒数=日期时间 ; 日期时间-秒数=日期时间如:?2006/9/11+7 ?2006/

15、9/11,16:30:32+602.2.4 函数(VFP提了200余种函数)一、函数的要素1、函数名:起标识符作用,满足命名规则。2、参数:自变量,一般是表达式,在括号内。3、函数值:函数返回的值。二、函数的类型即是函数值的类型。三、常用函数(P50,表2.7)2.2.5 VFP命令常用子句一、四种常用命令子句命令格式:list | display fields forwhile off to printerprompt | to file 说明:(1)命令动词:用来表示命令的操作。(2)4个表示范围子句:all:所有记录。next :从当前起的n个记录。record :第n个记录。rest:

16、从当前记录起到最后一个记录止的所有记录。(3)for 子句(次之):为逻辑表达式,指定选择记录的条件。如:use sb go 2list next 5 for 价格10000(4)while子句(优先)也用于指明操作条件,但它仅在当前记录符合时开始依次筛选记录,一旦遇到不满足条件的记录时就停止操作。(5)fields子句用于筛选记录所需要的字段。可以是除备注型和通用型之外的所有字段。(6)off:表示不显示记录号。(7)list和display的区别:list:滚动方式输出;默认是所有记录。display:分屏方式输出;默认是当前记录。例2-5:use sblist next 3list 部门

17、,编号,名称,备注 for 部门=”21”list 编号,名称,价格*0.9,启用日期 for year(启用日期)1995 off二、命令和子句的书写规则(1)命令中的各部分用空格隔开;各子句排列顺序任意。(2)命令动词、保留字和函数名可以只写到前4个字符,且大小写等效。(3)一条命令最长可达8192个字符,续行符为“;”。(4)命令或函数格式中:| :表示分隔的两项只选其一。 :表示可选项。:表示由用户定义的内容。2.3 表的维护命令2.3.1 表与表结构的复制一、复制任何文件命令格式:copy file to &复制表文件时,要有扩展名,且*.fpt也要复制!说明:(1)若对表进行复制,

18、该表必须处于关闭状态。 (2)和 可以使用通配符(?和*)。二、从表复制出表或其它类型的文件命令格式:copy to for while fields | fields like | fields except type sdf | xls | delimited with | with blank | with tab 说明:(1)对于复制有备注型字段的表,系统在复制扩展名为.dbf的文件的同时自动复制扩展名为.fpt的备注文件。例2-6:use sbcopy to a1copy to a2 fields 名称,编号 for left(部门,1)=”2”(2)复制所得的新表必须被打开,也即被

19、选作为当前表后才可进行操作。listuse a2list(3)指表示字段名时可使用通配符*号和?号,fields like表示取指出的字段,fields except 表示取外的字段。(4)新文件的类型可以是表,可以是系统数据格式、定界格式等文本文件,或Excel文件。若不含type子句,默认新文件的类型是表。若要得到Excel文件,type子句中必须取xls。若要得到文本文件,则type子句中必须取sdf或delimited,具体为:sdf表示数据无定界符,数据间也无分隔符不带with的delimited表示用逗号作为分隔符,定界符为双引号delimited with 表示用指定的字符作为定

20、界符,分隔符为逗号delimited with blank表示用空格作为分隔符,没有定界符delimited with tab表示制表符作为分隔符,定界符为双引号注意:定界符指字符型字段的定界符,其它类型没有定界符;分隔符是指字段之间用来分隔的字段。例2-7use sbcopy to b1 next 3 sdftype b1.txt & type是显示文本文件命令;文件的扩展名必须写清!说明:系统数据格式文件中的记录都是定长的且以回车符结束;数据之间无分隔符,数据也无定界符;记录每个字段的宽度固定,字段数据不足宽度时,数值型置前导空格,字符型则置后补空格;日期型数据改变为yyyymmdd的形式

21、,逻辑型数据两侧的圆点去除,备注型和通用型数据被舍弃。三、复制表的结构命令格式:copy structure to fields 说明:仅复制当前表的结构,不复制其中的数据。例:use sbcopy structure to sb2 fields 名称,价格,编号,备注四、其它文件操作命令1、文件改名rename to use sb2rename sb2.dbf to sb_bat.dbf & 必须写出扩展名!use sb_datbrow&含有通用、备注型字段的表必须同时也要改*.fpt文件后才能正常打开。2、删除文件erase | delete file &删除前源表必须关闭!,同时表文件名

22、要有扩展名*.dbf。3、显示文件目录dir to print &显示文件目录4、显示文本文件内容type to print &显示文本文件(*.txt)的内容2.3.2 记录指针的移动 记录定位:将记录指针指向某个记录,使之成为当前记录。recno( )函数的值就是当前记录的记录号。 & Record No.表打开时,记录指针总是指向第一个记录。一、记录定位命令命令格式1:go to top | bottom & goto命令格式2: go to & goto /go 5 例:use sb?recno( ) go bottom?recno( )go 4?recno( )2?recno( )u

23、se二、记录移动命令命令格式:skip 说明:负值表示向文件头移动,否则是向文件尾;缺省表达式等同于值例:use sb?recno( ), bof( ) & 1 .f.skip 1 ?bof( ), recno( ) & .t. 1skip 6?recno( ), eof( ) & 7 .f.skip?recno( ), eof( ) & 8 .t.2.3.3 记录的插入与追加一、插入新记录命令格式:insert blank before &不能通过该命令向记录中插入记录数据,只能插入空记录和进入编辑状态。说明:(1)before表示在当前记录之前,缺省表示在当前记录之后插入新记录。(2)bl

24、ank立即插入一条空白记录,缺省表示进入记录编辑状态。二、追加新记录1、insert-sql命令命令格式:insert into 表名(字段名1 ,字段名2,) values (表达式1,表达式,)功能:在表尾追加一条新记录,并直接输入数据。说明:(1)表不必事先打开,字段和表达式的类型必须相同。例: &注意下面的VFP命令中日期的形式:set strictdate to 0/1!insert into sb(编号,名称,启用日期,价格,主要设备,备注) values (“110-1”,”打印机”,08/5/97,5000.00,.f.,”调拨”)(2)若字段名全部缺省,则必须按表结构字段顺序

25、填写values的所有表达式。追加新记录可以将数组值填入该记录中,命令格式: insert into 表名 from array 数组名说明:数组元素的依次填入新加的记录之中。2、append命令(交互式填写)命令格式:append blank说明:(1)blank表示在表尾追加一条空白记录,待以后输入。 (2)缺省blank即出现编辑窗口。3、append from命令(成批追加)命令格式:append from fields for typedelimitedwith | with blank | with tab | sdf | xls说明:(1)源文件类型可以是表、系统数据格式、定界符

26、、Excel文件等。不含type时,类型是表;Excel是xls;文本文件是sdf或delimited。(2)执行命令时源文件不需打开。例2-8:use sbappend from a1 fields 名称,价格例2-9:use sbappend from b1 sdf2.3.4 表记录的删除和恢复一、记录逻辑删除命令命令格式:delete for while &逻辑删除时,记录号处显示星号*二、记录物理删除命令命令格式pack例:use sbdelete for not 主要设备packlist三、记录恢复命令即指去除删除标记。命令格式:recall forwhile例:use sbdele

27、te for 价格10000listrecall for left(编号,1)=”1”list四、记录清除命令命令格式:zap 相当于 delete all 和 pack &表的结构仍然存在,但是表的记录全部被物理删除.2.3.5 表数据的替换一、成批修改数据命令格式:replace with additive, with additivefor while 说明:(1)该命令对内符合的记录用的值来替换的值。例:use sbreplace 价格 with 价格-1000,部门 with “11” for 主要设备append blankreplace 编号 with “301-1”,名称 wi

28、th “扫描仪”(2)additive用于备注型字段,表示将表达式的值添加到字段的原有内容后,而不是取代。例:use sbreplace 备注 with “,”+编号+名称 additive二、单个记录与数组间的数据传递1、将记录传送到数组或内存变量命令格式:scatter fields | fields like | fields except memo to blank | memvar blank说明:(1) 使用memvar能将数据复制到一组内存变量中。系统自动建立内存变量,名称、类型与字段名相同,用m.字段名表示。例:use sbgo 5scatter memvar?m.编号,m.名

29、称,m.价格(2)使用to 将数据复制到所示的数组元素中。例:use sbgo 3scatter to ss & ss为数组?ss(1),ss(2),ss(3),ss(4) (3)若缺省fields,只传送备注字段之外的所有字段值。备注型需要memo选项。2、将数组或内存变量的数据传送到记录命令格式:gather from | memvar fields | fields like | fields except memo说明:(1)由于gather命令是数据传送到当前记录,故修改记录前需确定记录指针位置。例:use sbgo 4scatter to a memo?a(1),a(2),a(4)

30、,a(7)a(4)=6000gather from adisplay(2)若数组元素多于字段数,则多出的数组元素不传送;而数组元素少于字段数,则多出的字段其值不会改变。(3)内存变量值将送给与它同名的字段,若某字段无同名的内存变量则不对该字段进行数据替换。(4)若使用fields,仅中的字段才会被数组元素值替代。缺省memo将忽略备注型。即使包含memo,也忽略通用型字段。三、成批记录与数组间的数据传递1、将表的一批记录复制到数组命令格式:copy to array fields for while 功能:将选定的字段复制到数组中,但不复制备注型字段。说明:(1)若命令中指定的数组不存在,VF

31、P会自动建立它。(2)可以将单个记录的数据复制到一维数组中。(3)该命令能将当前的多个记录复制到二维数组中。例:use sbdimension jz(2,3)copy to c1 fields 编号,价格,启用日期,名称 & c1是表文件copy to array a & 将当前记录的数据复制到未建立的数组a中?a(1),a(2),a(3),a(4),a(5),a(6)copy to array jz for 价格10000 fields 编号,价格,启用日期?jz(1,1),jz(1,2),jz(1,3),jz(2,1),jz(2,2),jz(2,3)2、从数组向表追加记录命令格式:appe

32、nd from array for fields 功能:将满足条件的数组按记录依次追加到当前表中,忽略备注型字段。说明:(1)可以是一维或二维数组。注意:本命令在表尾追加1个记录,而gather则对表的当前记录替换数据。(2)如数组列数多于字段数,多余列的数组元素将被忽略;反之,若字段数多于数组列数,则多出来的字段留空。例:use c1append from array jzlist2.3.6 逻辑表的设置逻辑表与对表的命令操作的区别: 表的命令操作只能在执行该命令时生效一次;而逻辑表一旦生成后,对该逻辑表执行任何操作时一直有效,直至撤消逻辑表为止。一、过滤器命令格式:set filter to 功能 :从当前表过滤出符合的记录,不符合的就被“遮蔽”起来,随后的操作都是对满足条件的记录。例:use sbset filter

温馨提示

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

评论

0/150

提交评论