【文档说明】《数据库技术原理与应用》第02章课件.ppt,共(98)页,2.003 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92252.html
以下为本文档部分文字说明:
1第2章表的基本操作2§2.1表的建立与修改编号名称启用日期价格部门主要设备备注商标016-1车床03/05/9062044.6121.T.Memogen016-2车床01/15/9227132.7321.T.memogen037-2磨床07/21/90241292.1222.T.m
emogen038-1钻床10/12/895275.0023.F.Memogen100-1微机08/12/978810.0012.T.memoGen101-1复印机06/01/9210305.0112.F.
memogen210-1轿车05/08/95151000.0011.F.memoGen3一、建立表结构1、设计表结构由于VFP采用关系型数据模型,故能方便地将二维表作为“表”存储到存储器中。建表时,二维表标题栏的列标题将成为表的字段。
标题栏下方的内容输入到表中成为表的数据,每一行数据称为表的一个记录。也就是说,表由结构和数据两部分组成。建立表结构就是定义各个字段的属性,主要是字段名、类型、宽度等内容。4(1)字段名字段名用来标识字段,它是一个以字母或汉字开头,长度不超过1
0的字母、汉字、数字、下划线序列。注意:表名的命名规则随操作系统而定。即在Windows操作系统中文件名最多可达255个字符、仅\/:?x”<>|等字符不能使用。5(2)类型与宽度字段类型、宽度及小数位数等属性都用来描述字段值。字段宽度用以表明允许字段存储
的最大字节数。对于字符型、数值型、浮点型这3种字段,在建立表结构时应根据要存储的数据的实际需要设定合适的宽度。其它类型字段的宽度均由VFP规定,例如日期型宽度为8,逻辑型宽度为1等。注意,备注型与通用型字段的宽度
一律为4个字节,用于表示数据在.FPT文件中的存储地址。具体参见P34表2.26(3)小数值数只有数值型与浮点型字段才有小数值数。应注意小数点和正负号都须在字段宽度中占一位。例如,设备最大价格若为6位整数与
2位小数.则该字段的宽度应设定9位。由此可知.对于纯小数,其小数位数至少应比字段宽度小1,若字段值都是整数,则应定义小数位数为0。虽然双精度型允许输入浮点数(带小数的数),但不需事先定义小数位数,小数点
将在输入数据时键入。72、建立表结构(1)设置操作环境:SETDEFAULTTO[路径]或修改系统配置文件(2)建立表结构使用菜单命令,“文件”——“新建…”——“表”;使用交互命令,CREATE[文件名],如:CREATESHB(3)表设计器
的选项卡893、表文件的说明表中的数据保存在扩展名为.dbf的文件中,如果表中有备注类型的字段,系统会自动生成一个与表文件同名,扩展名为.fpt的文件,用来保存备注字段中的内容。特别注意,如果有备注文件,两个文件必须在一起才能打开表文件。10二、
数据的输入1、数据输入要点(1)表的数据可通过记录编辑窗口按记录逐个字段输入。一旦在最后一个记录的任何位置上输入数据,VFP即自动提供下一记录的输入位置。(2)逻辑型字段只能接受T、Y、F、N这4个字母之一(不论大小写)。T与Y同义.若输
入Y也显示T;同样,F与N同义,若键入N也显示F。11(3)日期型数据必须与日期格式相符。默认按美国日期格式mm/dd/yy输入;若要设置中国日期格式yy.mm.dd,只要在命令窗口中键入命令SETDATEANSI便可;若还要显示世纪19,可键入命令SETDATECEN
TURY;回到美国日期格式的命令为SETDATEAMERICAN。122、备注型字段数据的输入打开当前记录的备注型字段编辑窗口就可以输入或修改备注信息。当光标停在备注型memo时,若不想输入数据可按
回车键跳过;若要输入数据,按CTRL+PgDn或用鼠标双击都能打开相应的字段编辑窗口。某记录的备注型,其字段标志首字母格以大写显示,即显示为Memo。133、编辑窗口的打开和关闭前已涉及表的记录编辑窗口、宇段编辑窗口的打开。不同的编辑窗口其打开的方
法可能不同,而关闭的方法却是一致的,表2.4列出了这些窗口的开关方法。144、表的打开和关闭只有在表打开后才能打开编辑窗口对它修改或检索;但编辑窗口的关闭并不意味着表也会关闭;表关闭时数据会自动存盘。(1)用USE命令来打开或关闭表命令格
式:USE[<文件名>]功能:在当前工作区中打开或关闭表。若该表有备注文件,则自动打开同名的.FPT文件。15说明:<文件名>表示被打开的表的名字,缺省<文件名>表示关闭当前工作区(工作区的概念)。例如在命令窗口键入命令US
ESB即打开表SB.DBF,若要关闭该表可键入命令USE。打开一个表时,该工作区中原来打开的表自动关闭。已打开的表总有一个记录指针,指针所指的记录称为当前记录录指针指向第一个记录。表操作结束后应及时关闭.以便将内存的数据保存到表中。16(2)打开表的其它常用方法通过文件菜单的打开命令
来打开表。注意,若要修改结构或记录还应选定打开对话柜中的“独占”复选框.否则打开的表是只读的,不能修改。通过窗口菜单的数据工作期命令来打开表。17(3)关闭表的其它方法A、可用以下命令之一来关闭表CLEARALL:关闭所有的表,
并选择工作区1;从内存释放所有内存变量及用户定义的菜单和窗口。但不释放系统变量。CLOSEALL:关闭所有打开的数据库与表,并选择工作区1;关闭表单设计器,查询设计器,报表设计器,项目管理器。18CLOSEDATABAS
E[ALL]:关闭当前数据库及其中表,若无打开的数据库,则关闭所有自由表,并选择工作区1。带有ALL则关闭所有打开的数据库及其中的表和所有打开的自由表。CLOSETABLES[ALL]l:关闭当前数据库中所有的表,但不关闭数据库。若无打开的数据库,则关闭所有自由表,带有ALL则关闭所有效
据库中所有的表和所有自由表,但不关闭数据库。19B、通过窗口菜单的数据工作期命令来关闭表。C、通过退出VFP来关闭。选定“文件”菜单的“退出”命令,或在命令窗口中键入命令QUIT。20三、表结构的修改表建立后若要修改结构,例如改变字段属性、增加或删除字段等,可以打开表设计器或利用表向导来操
作。1、打开表设计器来修改表结构打开表以后,使用以下方法打开表设计器进行:使用“显示”菜单中的“表设计器”命令;使用命令MODIFYSTRUCTURE2、利用表向导来修改表结构21四、表数据的修改
1、两种记录显示方式编辑方式浏览方式222、浏览窗口的操作(1)打开浏览-界面操作方式-命令方式:键入相应命令,如BROWSE等。(2)滚动查看:内容较多时,采用多种方法查看。(3)一窗两区233、在浏览窗口追加与删除记录(1)记录的追加
分别可以使用“显示”菜单中的“追加方式”命令或表菜单中的“追加记录…”命令来追加记录,其差别主要是前者可以连续追加,后者为只追加一个记录。也可以使用APPEND命令进行。24(2)记录的删除注意:记录删除分逻辑删除和物理删除两种,逻辑删除并未将记录真正的删除,
只是作了一个删除标志,而物理删除才是将记录真正删除。首先应进行逻辑删除,用鼠标单击记录左边的删除标志;若该记录已经被逻辑删除,再次单击后删除标志为白色,表示已经被恢复。然后进行物理删除,命令格式为:PACK25§2.2表达式一、常量常量是固定不变的数据。1、数值
型常量:整数、小数或用科学计数法表达的数都是数值型常量。2、字符型常量:字符型常量是用双引号、单引导或方括(“‘[)号等定界符括起来的字符串,VFP字符串的最大长度为254个字符。若字符串中含有定界符,则须用另一种定界符括起来。
263、日期型和日期时间型常量日期型常量必须用花括号括起来,空白的日期时间可表示为{}或{/}。还有一种“严格的日期格式”为:^yyyy-mm-dd[,][hh[:mm[:ss]][a|p]]必须注意,执行命令时VFP6.0默认
使用严格的日期格式,如果要使用通常的日期格式.必须先执行SETSTRICTDATETO0命令,否则会引起出错。若要设置严格的日期格式可以使用命令SETSTRICTDATETO1。274、逻辑型常量:逻辑型常量只有真和假两种值。用T、Y、N、F表示均可,但是其前后用“.”与其他隔开。5
、货币型常量:货币型常量以$符号开头,并四舍五入到小数4位。28二、变量在命令操作和程序运行过程中其值允许变化的量称变量。1、内存变量内存变量可用来存储数据,定义内存变量时需为它取名并赋初值,内存变量建立
后存储于内存中。(1)VFP的命名规则在VFP中除字段和文件外,所有的用户命名,例如内存变量、函数的取名,均遵守以下规则:29以字母(也可汉字)或下划线开头,由字母、数字、下划线组成;至多128个字符;不可与系统保留字同名。所谓系统
保留字是指VFP语言使用的字,例如USE命令中的USE就是一个系统保留字。30(2)内存变量赋值命令命令格式1:(内存变量)=<表达式>命令格式2:STORE<表达式>TO(n存变量表)功能:计算(表达式),然后将计算结果赋给内存变量。31说明:内存变量在赋值时定义了它的
值及类型,其类型与所属的值的类型相同,可以不事先定义。STORE命令的(内存变量表)可包括多个内存变量,但须用逗号来分隔。该命令可将同一值赋给多个内存变量,而“=”命令仅可为一个内存变量赋值。32(3)
表达式值显示命令命令格式:?|??<表达式表>功能:计算表达式的值,并将其显示在屏幕上。说明:?表示从屏幕下一行的第一列起显示结果。??表示从当前行的当前列起显示结果。<表达式表>表示可用逗号来隔开多个表达式,命令执行时遇逗号就
空一格。33例:a=“I‟mstu”?a??astore2*3ton1,n2,n3?n1,n2,n3store2*3,3*4,4*5ton1,n2,n3*342、数组数组是按一定顺序排列的一组内存变量,
数组中的各个变量称为数组元素。数组必须先定义后使用。(1)数组的定义命令格式:DIMENSION|DECLARE功能;定义一维或二维效组、及其下标的上界.35说明:-系统规定各下标的下界为1。-理论上VFP中最多可定义65000个数组,且每个数组最多可包含65000个元素,实际上最大数将
受可用内存的制约。36(2)数组的赋值VFP不仅允许同一数组的元素取不同类型.而且同一个元素的前、后类型也允许改变。在定义数组时,系统将各数组元素的初值设置为.F.。用赋值命令可为数组元素单个地赋值,也可为整个数组的各个元素赋以相同值。二维数组各元素在内存中按行的顺序存储,而且
也可按一维数组来表示其数组元素。37例:dimensionx(3),a(2,3)?x?ax(1)=2x(2)='hqu„x(3)={03/04/99}&&显示同一数组可以赋不同类型值?x(1)?x(2)?x(3)a(2,2)='a22'?
a(2,2)?a(5)383、字段变量表的每一个字段就是一个字段变量。说字段是变量,是由于对于某一字段.它的值允许因记录而异。字段变量在建立表结构时定义,修改表结构时可重新定义、或增删字段变量。为简便计,内存变量常简称为变量,而
字段变量则直接以字段来称呼。编号名称启用日期价格部门主要设备备注商标016-1车床03/05/9062044.6121.T.Memogen016-2车床01/15/9227132.7321.T.memogen037-2磨床07/21/9024
1292.1222.T.memogen394、系统变量VisualFoxPro自动创建和命名的变量称为系统变量,其以下划线作为开始字符。系统变量用于处理各种系统信息。其具体内容可以查看系统的帮助文件MSDN。405、内存变量的显示命令格式:LIST|DISPLAYMEMORY[LIK
E<通配符>][TOPRINTER[PROMPT]|TOFILEFileName]功能:显示当前已定义的内存变量名、作用范围、类型和值。41说明:LIKE子句表示将选出与通配符相匹配的内存变量,<通配符>有?和*两种,前者代表单
个字符,后者代表一个或多个字符。缺省该选项则选出全部内存变量(此时包括系统内存变量).井同时显示当前内存变量总的个数、字节数等。选项TOPRINTER能将屏幕显示内容输出到打印机,使用[PROMPT]则能提供要否打印的提示窗口。选项TOF
ILE(文件名)能将显示内容存入文件。42例:listmemorylistmemorylike??6、内存变量的清除命令格式:RELEASE内存变量名表RELEASEALL[LIKE<通配符>|EXCEPT<通配符>]功能:从
内存清除指定的内存变量。43三、运算符VFP运算符共有5种:算术、关系、逻辑、字符、日期与日期时间。1、算术、关系、逻辑运算(1)算术运算的操作数必须是数值。运算的结果也是数值。运算顺序是:先乘方、再乘除与取
模、后加减,同一级别要从左向右。有圆括号时圆括号内先算,若有圆括号嵌套.则按先内后外次序处理。44(2)关系运算两操作数类型须一致。比较的结果是逻辑值。数值型数据按数值大小进行比较;日期型数据按年、月、日的先后进行比较;字符型
数据按相应位置上两个字符ASCII码值的大小进行比较。45(3)逻辑运算的操作数须是能得出逻辑值的表达式,运算结果也是逻辑值。若操作数类型不符要求,特会出现“操作符/操作数类型不一致”的出错提示。关系运算常
用来描述某种条件,而逻辑运算可用于描述复合的条件。若两个条件中有一个成立便算成立,应使用OR运算,而两个条件同时成立才算成立,应使用AND运算,至于NOT则用于否定一个条件。46(4)表达式计算按优先级从高到低执行。(5)表达式值的类型决定了表达式的类型,运算结果为数值的表达式称数值
表达式,运算结果为逻辑值的表达式称逻辑表达式。472、字符、日期与日期时间运算(1)字符运算符“+”运算符:用于连接两个字符串。“-”运算符:用于连接两个字符串,并将前一个字符串尾部的空格移到结果字符串的尾部。示例:a1="华侨大学"
a2=“土木工程学院"?a1+a2?a1-a2a1="华侨大学"a2=“土木工程学院"?a1+a2?a1-a248(2)日期与日期时间运算符日期或日期时间的运算,以运算符“+”表示数据相加,以运算符“-”对日期型数据
进行运算指日期的加减。49示例:setstrictdateto0setcenturyon?date()&&取当前系统日期?date()-20?date()+20?date()-{09/14/73}&&看看到今天一共过了多少天?{09/14/20
1312:00:00am}+2050四、函数函数(function):一个预先编制好的模块,可供VisualFoxPro程序在任何地方调用。函数可由VisualFoxPro提供,也可由用户定义。1、函数的要素函数有函数名、参数和
函数值3个要素。(1)函数名起标识作用(2)参数是自变量,一般是表达式,写在括号内(3)函数运算后会返回一个值,称为函数值,这就是函数的功能,函数值会因参数值不同而异。有的函数缺省参数,称为哑参,但仍有返回值。如EOF()。512、函数的类型所谓函数类型就是函数值的类型。在表达式中联入函
数时须了解函数值的类型,免得发生效据类型不一致的错误。使用TYPE函数能返回表达式的类型,也能测出函数的类型。3、常用函数见表2.7、2.8、2.9、2.10、2.1152五、VFP命令常用子句VFP命令总是由一个命令动词开头,其后跟上若干
子句,用来说明命令的操作对象、操作结果和操作条件等信息。子句:附加在一条命令后的附加语句,用以给出执行该命令的进一步指示。53命令格式:LIST|DISPLAY[[FIELDS]<表达式表>][<范围>][
FOR<条件>][WHILE<条件>][OFF][TOPRINT[PROMPT]|TOFILE<文件>](1)命令动词:命令动词是VFP的命令的名字(2)范围子句:用来确定执行该命令涉及的记录,54范围子句:ALL所有记录NEXT<N>从当前记录起的N个记录RECORD<N>第N个记录REST
从当前记录起到最后一个记录止的所有记录55(3)FOR子句的<条件>为逻辑表达式,它指定选择记录的条件。若命令中还含有范围子句,则在指定范围中筛选出符合条件的记录。(4)WHILE子句:该子句也用于指明操作条件,但它仅在当前
记录符合<条件>时开始依次筛选记录,一旦遇到不满足条件的记录时就停止操作。应注意,若一条命令中同时有FOR与WHILE子句则优先处理后者。56示例:listfor价格>50000listfor价格<50000listwhile价格>50000&&显示
第一条记录,指针停在第二条记录gotoplistwhile价格<50000&&没有记录显示,指针停在第一条记录57(5)FIELDS子句:范围、FOR与WHILE子句都能将表中需要操作的记录筛选出来,FIELDS子句则确定需要操作的字
段。该子句的保留字FIELDS可以缺省,而<表达式表>用来列出需要的字段,LIST命令将按筛选得到的记录依次算出表达式的值,并显示出来。FIELDS子句缺省时显示除备注型、通用型字段外的所有宇段。58(6
)为使用户能了解记录位置,LIST命令自动显示记录号,若要求记录号不显示,只须在命令中使用[OFF]造项。(7)LIST和DISPLAY命令除命令动词外格式一致,功能略有区别:前者以滚动方式输出,后者则为分屏输出;在缺省范围时,前者默认所
有记录.后者只指当前一个记录。59例:USESHBGO2&&记录指针指向第2个记录LISTNEXT5FOR价格>10000&&显示第2,3,6等3个记录LISTRECORD5FIELDS编号,名称,价格LISTNEXT3&&显示从当前位置开始的3个记录,要注
意指针所在位置LIST部门,编号,名称,备注FOR部门=“21”LIST编号,名称,价格*0.9,起用日期FORYEAR(起用日期)<1995OFF602、命令和子句的书写规则(1)命令动词与子句、子句与子句、子句内的各部分(如NEXT
与3,FOR与条件)之间必须用空格隔开,但各子句的次序允许任意排列。(2)命令动词与各子句中的保留字,包括以后将介绍的函数名都可简写为前4个字符,而且对其中出现的英文字母,使用大小写等效。例如MODIFYSTRUCTURE只需表达
为MODISTRU。61(3)一条命令的长度可达8192个字符。若一行写不下,可在适当位置控入续行符“;”并回车.然后在下一行继续键入该命令。(4)命令或函数格式中以“|”分隔的两项表示两者之中只选其一
。用中括号“[]”括起来的部分表示可选项。用尖括号“<>”括起来的部分表示由用户定义的内容。但这些符号并非命令或函数的组成都分。62§2.3表的维护命令一、表与表结构的复制1、复制任何文件命令格式:COPYFILE<文件名1>TO<文件名2>说明:(1
)若对表进行复制,该表必须处于关闭状态。(2)<文件名1>和<文件名2>都可使用遇配符*号和?号。632、从表复制出表或其它类型的文件复制命令:COPYTO<文件名>[<范围>][FOR<条件>][WHILE<条件>][FIELDS<字段名表>|FIELDSLIKE<通配字段名>|
FIELDSEXCEPT<通配字段名>][[TYPE][SDF|XLS|DELIMITED[WITH<定界符>|WITHBLANK|WITHTAB]]]功能:将当前表中选定的部分记录和部分字段复制成一个新表或其它类型的
文件。64说明:(1)对于含有备注型字段的表,系统在复制扩展名为DBF的文件的同时自动复制扩为.FPT的备注文件。(2)复制所得的新表必须被打开,也即被选作为当前表后才可进行操作。(3)<通配字段名>指
表示字段名时可以使用通配符“*”和“?”,FIELDSLIKE表示取<通配字段名>指出的字段,FIELDSEXCEPT表示取<通配字段名>外的字段。(4)新文件的类型除了可以是表外,还可以是文本文件或Excel文件。65示例:c
opytoshb.xlstypexls&&将表复制成EXCEL文件copytoshb.txttypedelimitedwithtab&&将表复制成文本文件,用TAB表示分隔符。663、复制表的结构命令格式:COPYSTRUCTURETO(文件名)[FIELDS
(字段名表)]功能:仅复制当前表的结构,不复制其中的数据。若使用FIELDS选项,只包含其指明的字段,同时也决定了这些字段在新表中的排列次序。674、其它文件操作命令VFP除能复制各类文件外,还提供文件改名、删除、显示等功能,(1)更名命令:RENAME文件名1T
O文件名2(2)删除命令:DELETEFILE[文件名|?][RECYCLE](3)显示:TYPE68二、记录指针移动在表中存取数据,往往先要进行记录定位。记录定位就是将记录指针指向某个记录,使之成为当前记录,RECNO()函数的值就是当前记录的记录号。表打开时,记录指针
总是指向第一条记录。1、记录定位命令GO[RECORD]nRecordNumberGOTOP|BOTTOM69说明:(1)“GOTOP”将记录指针指向表的第一个记录。(2)“GOBOTTOM”将记录指针指向表的最后一个记录
。(3)“GO<数值表达式>”将记录指针指向表的某记录,<数值表达式>指出改记录的记录号。702、记录移位命令命令格式:SKIP[nRecords]功能:从当前记录开始移动记录指针<数值表达式>表示移
位记录的个数;说明:负值表示向文件头移位,否则表示向文件尾部移位;<数值表达式>缺省等同于<数值表达式>的值为1。71三、记录的插入与追加1、插入新记录:INSERT命令用来插入表记录。命令格式;INSERT[BEFORE][BLANK]
作用:在当前记录之后插入一条记录。说明:(1)使用BEFORE子句能在当前记录前插入新记录。(2)使用BLANK子句立即插入一条空白记录,缺省该子句则出现编辑窗口,等待用户输入记录。722、INSERT—SQL命令命令格式;INSERTIN
TO表名[(字段名1[,字段名,...])]VALUES(表达式1[,表达式2,...])功能:在表尾追加一个新记录,并直接输入记录数据。说明:(1)表不必事先行开.字段与表达式的类型必须相同。(2)若字段名全部缺省,就须按表结构字
段顺序填写VALUES子句的所有表达式追加新记录时还可将数组或内存变量的值填入该记录之中。73示例:insertintoshb(编号,名称,起用日期,价格);values("210-2","越野车",{09/03/98},512345)若要添加的内容已经保存在数组中,可以使用以下命令,命令格
式:INSERTINTO表名FROMARRAY数组名|FROMMEMVAR说明;(1)数组元素依次填入新加的记录之中。(2)若存在与字段同名的内存变量,则它的值填入新加的记录之中。743、APPEND命令APPEND命令也可在表尾追加记录(注意与INSERT的差别),但它只可追加空白记录或以
交互方式填写记录数据。命令格式:APPEND[BLANK]说明:(1)使用BLANK子句能在表尾追加一条空白记录,留待以后填入数据。(2)若缺省BLANK子句就会出现记录编辑窗口,并且窗口内会有空白的记录位置等待用户输入数据。754、A
PPENDFROM命令该命令用于追加成批记录命令格式:APPENDFROM文件名[FIELDS字段列表][FOR<条件>][TYPE][DELIMITED[WITH<定界符>|WITHBLANK|WITHTABSDF||XLS功能:在当前表末尾追加一批记录,这些
记录来自于另一文件。说明:(1)源文件的类型可以是表,也可以是系统数据格式、定界格式等文本文件,或Excel文件。(2)执行该命令时源文件不需打开。76四、表记录的删除和恢复1、记录逻辑删除命令命令格式:DELETE[<范围>][FOR<条件>][WHILE<条件>]功能:对当前表在指定<范围>内
满足<条件>的记录加上删除标记。若不选只指当前记录。示例:deleteallfor名称="车床"deleteallfor价格>50000deleteallfor.not.主要设备&&删除所有非主要设备77提示:1、记录删除分逻辑删除和物理删除两种。逻辑删除
并未将记录真正的删除,只是作了一个删除标志。物理删除才是将记录真正的从数据文件中删除。2、SETDELETEDON|OFF指定系统是否处理被添加删除标志的记录,即是否可以用其他命令操作它们。设置为ON,则忽略这些记录;设置为OFF,则不能忽略,即可以操作它们。78go
bottomdeletebrowrecallbrowdeletesetdeletedonbrowsetdeletedoffbrow792、记录物理删除命令命令格式:PACK功能:从物理上删除,也即真正删除带有删除标记的记录。3、记录恢复命令记录的恢
复是指去掉删除标记,但已被物理删除的记录是不可恢复的。RECALL[Scope][FORlExpression1][WHILElExpression2]功能;对当前表在指定<范围>内满足<条件>的记录去掉删除标
记。若可选项都缺省只恢复当前记录。示例:recallallfor.not.主要设备804、记录清除命令命令格式:ZAP功能;物理删除当前表中的所有记录。81五、表数据的替换1、成批修改数据在浏览您口中修改数据必须由
用户键入修改值,而REPLACE命令能直接将字段位用指定的表达式值来替换。因此在程序设计中常使用该命令。命令格式:REPLACE字段名1WITH表达式1[ADDITIVE][,字段名2WITH表达式2[ADDITIVE]]...[<范围>][FOR<条件>][WHILE<条件>]功能:在当前表的指
定记录中,特有关字段的值用相应的表达式值来替换。若<范围>与<条件>等选项都缺省,只对当前记录的有关字段进行替换。82说明:(1)该命令对<范围>内符合<条件>的记录用<表达式i>的值来替换<字段i>的值。(2)ADDITIVE用于备注型字段,表示将表达式值添加到
字段的原有内容后,而不是替代。83replace价格with价格-1000,部门with“11”for主要设备AppendBlankreplace编号with"201-3",部门with"11"842、单个记录与数组间的数据传送在VFP中
,数组元素值或内存变量值能传送到表内以替代记录中的数据,反之,记录中的数据也可以送入数组或内存变量。(1)将记录传送到数组或内存变量命令格式:SCATTER[FIELDS<字段名表>|FIELDSLIKE<通配字
段名>|FIELDSEXCEPT<通配字段名>][MEMO]TO<数组名>BLANK|MEMVARBLANK作用:将当前记录的字段值按<字段名表>的顺序依次送入数组元素或一组内存变量中。85说明:使用MEMVAR能将数据复制到一组内存变量之中。这些内存变量由系统自动建立,每一个内
存变量与相应字段的名称、类型、大小完全相同,为与字段变量相区分,使用时可在其前加上m。使用TO<数组名>子句能将数据复制到<数组名>所示的数组元素中。VFP会自动建立数组,或自动扩大虽已存在但却不够大的数组。若缺省FIELDS子句,只传
递备注型字段外所有字段的值。若要传递备注型字段值,还需使用MEMO选项。86(2)将数组或内存变量的数据传送到记录命令格式:GATHERFROM<数组名>|MEMVAR|[FIELDS<字段名表>|FIELDSLIKE<通配字段名>|FIELDSEXCEPT<通配字段名>][MEMO
]功能:将数组或内存变量的数据依次传送到当前记录,以替换相应字段值。87说明:由于GATHER命令是将数据传送到当前记录,故修改记录前应确定记录指针位置。若数组元素多于宇段数.则多出的数组元素不传送;而数组元素少于字段数,则多出的字段其值不会改变。内存变量值将传送给与它同名的字
段,若某字段元同名的内存变量则不对该字段进行数据替换。若使用FIELDS子句,仅<字段名表>中的字段才会被数组元素值替代。缺省MEMO子句时该命令将忽略备注型字段。即使包含MEMO子句,该命令也忽略通用型字段
。883、成批记录与数组间的数据传送SCATTER与GATHER命令只能在表的单个记录与数组间进行数据传送,现在介绍绍表的成批记录与数组传送数据的两条命令。(1)将表的一批记录复制到数组命令格式:CO
PYTOARRAYArrayName[FIELDSFieldList|FIELDSLIKESkeleton|FIELDSEXCEPTSkeleton][Scope][FORlExpression1][WHILElE
xpression2][NOOPTIMIZE]功能:将当前表选定的数据复制到<数组名>表示的数组之中,但不复制备注型字段。89(2)从数组向表追加记录命令格式:APPENDFROMARRAYArrayName[FORlExpression][FIELDSFieldL
ist|FIELDSLIKESkeleton|FIELDSEXCEPTSkeleton]功能:将满足条件的数组行数据按记录依次追加到当前表中,但忽略备注型字段。90六、逻辑表的设置1、过滤器有时VFP中的若干命令都要求满足某种条件,若每一个命令中都输入一个相同的条件,显然浪费了人力
和时间。这时可以使用过滤器将不满足条件的记录“遮蔽”起来,即让这些记录在逻辑上消失.当操作完以后,再去掉过掳器来恢复这些记录。命令格式:SETFILTERTO[条件表达式]功能;从当前表过虑出符合<条件>的记录,不符合<条件>的记录将被“遮蔽“,该操作仅限
于满足过滤条件的记录。说明:缺省<条件>表示取消前所设置的过滤器。91示例:useshblistsetfilterto主要设备listsetfiltertolist922、字段表字段表用于限定命令操作能作
用的字段。命令格式:SETFIELDSON|OFF-or-SETFIELDSTO[[字段名1[,字段名2...]]|ALL[LIKE<通配字段名>|EXCEPT<通配字段名>]]93说明:SETFIELDSTO命
令用来为当前表设置字段表,ALL表示所有字段都在字段表中。命令SETFIELDSON|OFF决定字段表是否有效。ON状态时,只能访问字段表所列的字段,此时其它字段就像不存在一样。当用SETFIELDSTO命令设置字段表时,SETFIEDLS自动置ON。OFF表示取消字段表,恢复到
原来状态,系统默认为OFF状态。94七、建立与修改表结构的命令建立或修改表结构、无论通过菜单操作还是使用MODIFYSTRUCTURE命令,只要是打开表设计器来操作,都属于交互方式。若要在程序执行过程中建立或修改表的结构,需使用的CREATETABL
E和ALTERTABLE命令。1、表结构的建立命令格式:CREATETABLE<表名>(<字段名1><字段类型>[<字段宽度>[,<小数位>][<字段名2><字段类型>…]功能;建立一个由<表名>表示的表,表中含有指定的字段。
95说明:(1)<字段类型>用字符表示,例如D为D期型表示,各种字段类型的代号见表2.2(P30)。(2)命令格式中的小括号是必须的。示例:createtabledx(编号c(5),时间d,费用n(6,2))modistruinsertintodx(编号,时间,费用
)values("00001",{09/13/2004},2000)962、表结构的修改命令格式:ALTERTABLE<表名>ADD|ALTER[COLUMN]<字段名><字段类型>[(<字段宽度>[,<小数位>])]ALTERTABLE<表名>DROP[COLUMN]<字段名1>
|RENAMECOLUMN<字段名2>TO<字段名3>功能;修改<表名>表示的表的结构。说明:(1)ADD[CLOUMN]子句的<字段名>用于指定要添加的字段。字段的类型、宽度及小数值数分别由<宇段类型>、<字段宽度>、<小数位数>来表示。(2)ALTER[CLOUMN]子句的<字段名>指
定要修改的已有字段,用户可以重新指定字段类型、宽度及小数位数,它们分别由<宇段类型>、<字段宽度>、<小数位数>表示。(3)DROP[COLUMN]子句的<字段名>指定要删除的字段。(4)RENAMECOLUMN
子句、将<字段名2>表示的字段名改为<字段名3>表示的字段名。9798示例:altertabledxadd备注m&&向表中添加一个字段altertabledxdrop备注&&删除该字段altertabledxrename备注
to摘要&&将字段的名字改变altertabledxalter编号c(8)&&修改已有的字段的属性设置