常用函数与命令汇编教案_第1页
常用函数与命令汇编教案_第2页
常用函数与命令汇编教案_第3页
常用函数与命令汇编教案_第4页
常用函数与命令汇编教案_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

常用函数与命令汇编教案 常用函数、命令及实例汇编以下内容在引用时,需注意下面几点字符串定界符,如单引号、双引号、方括号等均采用半角符号。 各参数之间分隔符,如逗号,小数点等,均采用半角符号。 3.使用函数时,请关注函数的类型、函数的格式及函数返回值的类型。 4.使用函数时,请关注函数间引用时的类型必须匹配。 一、数值处理函数1.绝对值函数格式ABS()功能返回指定的数值表达式的绝对值。 举例?ABS(1030)&202.求最大、最小值函数MAX()、MIN()格式MAX(eExp1,eExp2,eExp3,)MIN(eExp1,eExp2,eExp3,)功能两个函数分部返回所给表达式中最大的值、最小的值。 举例?MAX(3.14,0,-3.14)&3.14?MIN(3.14,0,-3.14)&-3.14?MAX(“C”,”A”,”W”)&W3.取整数函数格式INT()功能返回指定的数值表达式的整数部分。 举例?INT(5.8)5考题INT(-3.64)的返回值A4B.3C.3D.44.求模函数(取余函数)格式MOD(nExp1,nExp2)或MOD(被除数,除数)功能该函数返回nExp1除以nExp2的余数。 如果nExp2为正数,则函数数值为正,否则为负。 表达式先自动取整后再进行取模运算。 该函数的功能与%运算符功能一样。 函数符号与nExp2(或除数)的符号相同函数的值如果nExp1与与nExp2同号,函数值即为两数相除的余数;如果nExp1与与nExp2异号,函数值即为除数-两数相除的余数其中被除数决定结果的小数位,除数决定结果的符号举例?MOD(23,5),?MOD(-23,-5),?MOD(-23,5),?MOD(23,-5)3-3,2-2?MOD(25.250,5.0)结果0.250作业?MOD(25.250,-5.0)结果5.四舍五入函数格式ROUND(nExp1,nDecimalPlaces)功能该函数返回圆整到指定小数位数的数值表达式的值,即从该位四舍五入。 nDecimalPlaces0,表示整数部分的舍入位数。 nDecimalPlaces0,表示要保留的小数位数。 举例SET DECIMALSTO4&设置小数点位数SET FIXEDON&设置固定显示小数位?ROUND(1234.5678,3)&显示1234.5680?ROUND(1234.5678,2)&显示1234.5700?ROUND(1234.5678,1)&显示1234.6000?ROUND(1234.5678,0)&显示1235.0000?ROUND(1234.5678,-1)&显示1230.0000?ROUND(1234.5678,-2)&显示1200.0000?ROUND(1254.5678,-2)&显示1300.0000?ROUND(1234.5678,-3)&显示1000.0000?ROUND(1834.5678,-3)&显示2000.0000SET FIXEDOFF&关闭固定显示小数位作业MOD(25.5,5.0)ROUND(34.19,-1)的运行结果6.RAND()取随机数格式RAND()功能该函数是返回一个01之间的随机数。 举例?RAND()&返回一个01之间的随机数?RAND()&返回一个010之间的随机数 二、字符处理函数1.求字符串长度函数格式LEN(cExp)功能返回cExp中包含的字符个数。 函数值为数值型。 若cExp为空串,则返回值为0.举例1)?LEN(“数据库管理系统”)&142)x=“中文VisualFoxPro6.0”?LEN(x)&213)x=“”&空串?LEN(x)&0考题(07春上机VFP01)分类号(flh)字段的值为非空格字符串时不可更新LEN(ALLT(flh)=0.考题(04春)在VFP系统命令窗口中,输入并执行下列命令后,VFP主窗口显示内容为?32+2=MOD(12,7)+LEN(“FoxPro”)2.删除前后空格函数格式ALLTRIM(cExp)功能删除指定字符表达式值的前导和尾部空格后形成的字符串。 举例cVar=“VFP6.0”&表示一个空格,输入时用空格代替?ALLTRIM(cVar)&cVar的值为“VFP6.0”格式RTRIM()或或TRIM()函数功能删除指定字符表达式值的尾部空格后形成的字符串。 举例cVar=“VFP6.0”?TRIM(cVar)&cVar的值为“VFP6.0”格式LTRIM()函数(补充)功能删除指定字符表达式值的前导空格后形成的字符串。 举例cVar=“VFP6.0”?LTRIM(cVar)&cVar的值为“VFP6.0”3.计算子串出现位置函数格式AT(cExp1,cExp2,nExp)功能该函数返回cExp1在cExp2中第nExp次出现的位置(从最左边开始计数)。 若cExp1不在cExp2中则返回值为0,若不给出nExp则缺省时为1。 AT()函数区分搜索字符的大小写。 若不区分搜索字符的大小写可用ATC()函数举例STORE“This isVisual FoxPro”TO x&赋值语句?AT(“fox”,x)&0?ATC(“fox”,x)&16?AT(“Fox”,x)&16?AT(“is”,x,3)&10注意AT()函数与$运算符的区别。 cExp1$cExp2运算返回的是逻辑型,AT()返回的是数值型。 例如?”tea”$”teacher”.T.考题函数AT(“B”,“AbcaBc”)和ATC(“B”,“AbcaBc”)的返回结果是_。 A2和2B2和5C5和2D5和54.指定位置取字符串函数格式SUBSTR(cExp,nExp1,nExp2)或SUBSTR(字符表达式,起始位置,长度功能这里nExp1指定取字符的起始位置,nExp2指定取字符的个数。 若缺省nExp2,则将截取cExp字符串中从nExp1指定位置一直取到最后一个字符为止的子串。 举例STORE“数据库管理系统”TO strl?SUBS(strl,7,4)&管理?SUBS(strl,7)&管理系统如浏览学号为“98”开头的所有记录(若学号为xh=980101)Browse FORSubs(xh,1,2)=”98”&此命令将在第3章浏览命令中介绍。 5.左取字符串函数格式LEFT(cExp,nExp)或LEFT(字符表达式,长度)功能该函数截取字符表达式最左边指定长度的的子字符串。 若nExp的值大于cExp的长度,则该函数值返回整个字符串若nExp小于或等于零,该函数返回一个空串。 ?LEFT(Redmond,WA,4)&值为Redm BrowseFOR left(xh,2)=”08”&08115100016.右取字符串函数格式该函数截取cExp最右边的nExp个字符为一个子字符串。 若nExp的值大于cExp的长度,则该函数值返回整个字符串若nExp小于或等于零,该函数返回一个空串。 ?RIGHT(Redmond,WA,2)&值为WA7.空格字符串生成函数格式SPACE(nExp)功能该函数返回一个由nExp指定数目的空格组成的字符串。 举例?LEN(SPACE (20)&20个空格?LEN(SPACE (3)&3个空格?SPACE (0)&没有空格字符,常用于给字符型变量赋空值8.求子串出现次数函数格式OCCURS(cExp1,cExp2)功能返回cExp1在cExp2中出现的次数。 举例?OCCURS(“is”,”This isa desk.”)&2 三、日期及日期时间处理函数1.系统日期函数格式DATE()功能返回系统设定的当前日期。 举例?DATE()&显示07/04/03,默认显示格式(mm/dd/yy),菜单设置“工具”“选项”“区域”2.系统时间函数格式TIME(nExp)功能该函数返回系统的当前时间。 举例?TIME(),TIME (1)&20:18:0020:18:12.533.系统日期时间函数格式DATETIME()功能返回系统设定的当前日期和时间。 举例?DATETIME()&06/12/04/20:21:52PM4.求年份函数格式YEAR(dExp)功能返回日期表达式dExp中的年份。 返回值为数值型数据。 举例?YEAR(DATE()&xx?YEAR(xx/01/28)&xx5.求月份函数格式MONTH(dExp)功能返回日期表达式dExp中的月份。 返回值为数值型数据。 举例?MONTH(xx/01/28)&16.求天数函数格式(dExp)功能返回日期表达式dExp中的月份。 返回值为数值型数据。 举例?DAY(xx/01/28)&28 四、数据类型转换函数1.字符转换成ASCII码值函数格式ASC(cExp)功能函数返回cExp中首字符的ASCII码值对应的十进制数。 举例?ASC(“APPLE”)&65?ASC(“apple”)&972.ASCII码值转换成字符函数格式CHR(nExp)功能该函数把nExp的值转换成相应的ASCII字符。 举例?CHR (65)&A?CHR(ASC(A)+1)&B考题已知字母D的ASCII值是68,则函数ASC(CHR (71)的返回结果是_。 A68B71CA DG答案B3.字符串转换成数值函数格式VAL(cExp)功能该函数将字符型表达式转换成数值。 字符型表达式可是任一字符串,但只转换字符串最左边连续出现的数字字符(包含09数字、小数点、正负号等)。 若左边的第一个非空字符不是数字,则转化为0。 举例?VAL(12)+VAL(13),VAL(A3.145)&25.000.00?VAL(3+5),VAL(4E2)&4E2是浮点数,显示3.0400.00?VAL(4E2)+VAL(4F3)&404.004.日期及日期时间转换成字符串函数格式DTOC(dExp|tExp,1)TTOC(tExp,1|2)功能该函数用于把日期值转换成字符值。 其中选择参数“1”,用于指定以年月日顺序且无分隔符的形式即YYYYMMDD,年份为4位,共8个字符。 注意参数“1”以以适合作为索引的格式返回日期。 所以TOC(DATE(),1)的值为xx0302选择参数“2”,用于指定仅返回含时间部分的字符型时间。 举例?DTOC(DATE()&06/12/01?DTOC(02/28/xx,1)&xx0228?DTOC(CSRQ,1)&CSRQ在在XS表中以05/26/89显示,索引时需按出生日期的先后顺序排序,不加参数“显示,索引时需按出生日期的先后顺序排序,不加参数“1”是按月份大小排序,加参数“1”后是按年的大小排序。 所以”后是按年的大小排序。 所以DTOC(CSRQ,1)的值为19890526?TTOC(02/28/xx9:20,2)&09:20:00am5.字符串转换成日期函数格式CTOD(cEXP)功能该函数把字符值转换成日期型值。 其中日期的缺省格式为“mm/dd/yy”,可用SET DATE和SET CENTURYON命令改变这种缺省格式。 有效输入范围为01/01/100012/31/9999。 举例?CTOD(“10/01/99”)&10/01/99SET CENTURYON?CTOD(“10/01/03”)&10/01/xx6.数值转换成字符串函数格式STR(nExp1,nExp2,nExp3)功能将数值表达式nExp1的数值型转换为对应的字符串。 返回值类型为字符型。 参数给出转换后字符串长度。 若省略nExp2和nExp3,默认宽度为10。 小数位数小数位数。 若指定长度小于的整数位,则用一串星号(),表示数值溢出。 举例?STR(314.15)314&没有指定宽度和小数位数,默认宽度为10,整数部分数值宽度不够,需用前导空格(表示空格)填补。 例需加7个前导空格填补?STR(314.15,5,2)314.2&指定总宽度为5,总宽度不够时,首先保证整数部分?STR(314.15,2)*&指定总宽度为2,指定宽度小于整数部分宽度,溢出7.宏替换函数格式.功能宏替换函数是一个特殊函数,返回的是字符型内存变量的内容,它的返回类型与字符型内存变量的值去掉字符定界符后的值的类型一致,可以是各种数据类型。 宏替换的结束标志是在字符内存变量的后面加一个圆点。 举例a=”123”?&a&结果为数值型数据123Aa=”bb”bb=”北京”?&aa&替换后为内存变量bb,bb的值即为字符串型数据“北京”?”&bb.是中国的首都”&结果为“北京.是中国的首都” 五、测试函数1.数据类型测试函数格式TYPE(cExp)或或TYPE(“表达式”)功能该函数先计算cExp的值,然后返回代表该值数据类型的单个大写字母,表达式必须用引号。 举例?TYPE(DATE()&日期型D?TYPE(3+5)&数值型N?TYPE(.F.or.T.)&逻辑型L?TYPE(“ABCD”)&字符型C2测试是否在指定区间内格式BETWEEN(eExp1,eExp2,eExp3)或BETWEEN(表达式,下界,上界)功能判断一个表达式的值是否介于表达式值之间。 当eExp1大于或等于eExp2而又小于或等于eExp3时,函数返回.T.,否则返回.F.(eExp2eExp1eExp3)举例?BETWEEN(3.14,1,5)&.T.?BETWEEN(g,a,d)&.F.?BETWEEN(cj,0,100)&cj=0.and.cj=60,“合格”,“不合格”)?IIF(CJ=60,xf,0)?SUM(IIF(XB=”女”,1,0)2文件查找函数格式FILE(cFileName)或或FILE(“文件名”)功能该函数用于测试辅助存储器上指定的文件是否存在。 其中cFileName是一个字符串,用于指定文件。 如果文件存在,则FILE()的返回值为.T.如果文件不存在,则FILE()的返回值为.F.举例?FILE(js.dbf)&JS表若存在,则结果为.T.,否则结果为.F. 七、数据库函数(一)、记录处理函数1.表文件首函数格式BOF(nWorkAreacAlias)功能该函数用来确定当前记录指针是否在表头。 当把记录指针移到表文件的第一条记录位置之前时,该函数值为.T.,否则返回.F.。 举例GO TOPSKIP-1?BOF()&记录指针是否在表头标记2.表文件尾函数格式EOF(nWorkAreacAlias)功能该函数用来确定记录指针是否指向表中最后一条记录之后。 如果记录指针已指向表文件的末尾,函数返回.T.,否则返回.F.。 BOF()和EOF()函数的应用见第3章。 举例GO BottomSkip?EOF()&记录指针是否在表尾标记3.记录个数函数格式RECCOUNT(nWorkAreacAlias)功能该函数返回指定工作区中数据表记录总数,若指定工作区中没有打开的表文件,则函数值为0。 举例USE js&设js表中有9条记录?RECCOUNT()&94.记录删除函数格式DELETED(cAlias)功能若当前记录已作删除标记,该函数返回.T.,否则返回.F.。 举例USE jsDELETED RECORD6&将第6条记录加上删除标记?DELETED()&.T.5.记录号函数格式REO(nWorkAreacAlias)功能该函数返回指定表中当前记录号。 举例USE js?REO()6.记录查找函数格式FOUND(nWorkAreacAlias)功能该函数用于执行查询命令LOCATE、CONTNUE、FIND或或SEEK后,判断查找是否成功。 若查找成功,返回.T.,否则返回.F.。 7.记录快速查找函数格式SEEK(eExp)功能该函数用于在当前工作区,根据当前主索引,查找与eExp值相匹配的的第一条记录,若查找成功,返回.T.,否则返回.F.。 注FOUND()、SEEK()函数的应用见第3章。 (二)、索引和关系函数1.ORDER()函数格式ORDER(cAlias,1)功能该函数返回主控索引文件名(.IDX文件)或索引标识名(.CDX文件)。 选择第二个参数1,可以获得文件路径。 2.TAG()函数格式TAG(CDXcFileName,nExp,cAlias)功能该函数返回任一独立索引文件名(.IDX文件)或索引标识名(.CDX文件)。 nExp的缺省值相当于1,所有打开的索引文件按顺序编号为 1、 2、 3、,接着就是.CDX文件的索引标识。 3.TARGET()函数格式TARGET(nExp,cAlias)功能该函数返回指定工作区第nExp个关联的SET RELATIONINTO目的工作区的别名,如果没有关联存在,函数将返回一个空串。 (三)、数据库与表函数1.测试表是否打开)函数格式USED(nWorkAreacAlias)功能确定是否在指定工作区中打开了一张表。 如果已打开,则函数返回.T.;否则返回.F.。 举例USE jsIN2?USED (2)&.T.2.表文件字段数函数格式FOUNT(功能返回已打开表的字段个数。 3.表文件字段名函数格式FIELD(字段序号,功能返回已打开表的指定序号的字段名。 4.DBGETPROP()函数格式DBGETPROP(cName,cType,cProperty)功能返回当前数据库、字段、表或视图的属性。 ?DBGETPROP(“js.xb”,”FIELD”,Caption”)5.DBSETPROP()函数格式DBSETPROP(cName,cType,cProperty,cPropertyValue)举例要设置js表的xb字段的标题属性的值为“性别”。 ?DBSETPROP(“js.xb”,”FIELD”,Caption”,”性别”)(四)、其他类函数1.NUMLOCK()函数格式NUMLOCK(lExp)功能返回或设置【NumLock】键的状态,使用方法同【Caps Lock】键。 2.CREATEOBJECT()函数格式CREATEOBJECT(cClassName,ePara1,ePara2,)功能从类定义或可用OLE应用程序中创建对象。 参数cClassName指定用以创建新对象的类或OLE对象。 ePara1,ePara2,用来把值传给类的Init事件过程。 当发出CREATEOBJECT()时,Init被执行,并进行对象初始化工作。 3.TABLEREVERT()函数格式TABLEREVERT(lAllRows,cAliasnWorkArea)功能该函数放弃对缓冲行,缓冲表或临时表的修改。 返回值类型为数值型,表示放弃修改的记录数目。 4.TABLEUPDATE()函数格式TABLEUPDATE(AllRows,lForce,cAliasnWorkAreal)功能该函数执行对缓冲行、缓冲表或临时表的修改。 返回值类型为逻辑型。 以上两函数详见第3章。 5.GETFILE()函数格式GETFILE(cFileExtensions,cDialogCaption,cOpenButtonCaption,nButtonType,cCreatorType)或GETFILE(文件扩展名,文件名)功能该函数用于显示“打开”对话框,并返回选定的文件名字符串。 如果未选定文件,或按“取消”退出对话框,函数返回空字符串。 6显示信息函数(对话框)格式MESSAGEBOX(cMessageText,nDialogBoxType,cTitleText)或MESSAGEBOX(提示信息,对话框类型,标题)功能该函数显示用户自定义的对话框。 举例MESSAGEBOX(大家都看明白了吗?,4+32+256,老师的担心)MESSAGEBOX(祝大家考试顺利!,0+64+0,VFP考试)对话框使用示例MESSAGEBOX()函数中nDialogBoxType的数字含义第第1个数字表示按钮值第第2个数字表示图标值第第3个数字表示默认按钮0只有“确定”按钮16停止图标X0第一个按钮得焦点1“确定”和“取消”32问号?256第二个按钮得焦点2“终止”、“重试”和“忽略”48惊叹号!512第三个按钮得焦点3“是”、“否”和“取消”64信息图标i4“是”和“否”5“重试”和“取消”MESSAGEBOX()的返回值代表用户选取了哪个按钮,可以据此决定下一步该做什么。 MESSAGEBOX()函数返回值的数字含义返回值1234567按钮确定取消终止重试忽略是是否否X=MESSAGEBOX(“密码输入错误”,148,“友情提示”)?X注意MESSAGEBOX()函数名缩写不能写成前4个字符MASS(),成只能写成MESSAGEB(),以免发生错误。 因为有MESSAGE()是出错信息函数 八、常用的函数与表达式构造示例函数类型函数使用格式表达式构造示例与说明字符SUBSTR(expC,expN1,expN2)SUBSTR(xh,2,3)+LEFT(xm,2)将xh的第2至4位和xm的头两位连接起来LEFT(),RIGHT()LEN(expC)RIGHT(xh,LEN(ALLTRIM(xm))举例xh=0204112xm=李宾则结果是4112ALLTRIM(expC)STR(expN1,expN2,expN3) (1)STR(cj,5,1)+xh(可作为索引表达式)当成绩相同时,按学号排序 (2)CHR (66)+A+STR(ASC(C),3)结果是“BA67”数学MAX(),MIN(),AVG()MAX(cj)as最高分(可作为查询输出字段)SUM(expN)只对数值型字段SUM(IIF(bxk=.T.,xf,0)as必修课总学分COUNT()可对多种类型字段COUNT(xs.xh)as学生总数VAL(expC)VAL(LEFT(xh,2)+6将xh的前2位转换为数值再加6日期CTOD(expC)用“月/日/年”的短日期格式时容易产生误解CTOD(xx/07/20)-10返回07/10/05CTOD(05/07/20)-10返回04/27/20此处第1种为精确日期格式,不会出现误解DTOC(expD)带参数1时,按年月日顺序且无分隔符形式返回字符型日期DTOC(gzrq,1)+xm工作日期相同时按xm排序YEAR(expD),DATE()YEAR(DATE())-YEAR(csrq)年龄逻辑BETWEEN(变量,下界,上界)BETWEEN(cj,0,100)cj在0-100分之间(即0cj=60,合格,不合格)Cj不低于60为合格,否则不合格INLIST(变量,值1,值2,)INLIST(zc,教授,副教授,讲师)职称只可以为教授、副教授或讲师字段的有效性规则设置举例字段类型有效性信息有效性规则字符型性别只能为男或女xb=男.OR.xb=女或INLIST(xb,男,女)或xb$男女解析INLIST()函数和$均可表示字符包含关系字符型“姓名的有效宽度必须4个字节以上,且首字符必须为汉字”LEN(ALLTRIM(xm)=4.AND.ASC(LEFT(xm,1)127解析ALLTRIM(xm)去掉xm首尾的空格LEN(ALLTRIM(xm)xm的有效长度LEFT(xm,1)从左取xm的第一个字节ASC(LEFT(xm,1)返回姓名的首字节ASCII码值,汉字的首字节大于127,这样可以保证输入的首字符是汉字日期型年龄在18至22岁之间BETWEEN(YEAR(DATE()-YEAR(csrq),18,22)或YEAR(DATE()-YEAR(csrq)=18.AND.YEAR(DATE()-YEAR(csrq)=1960.AND.YEAR(gzrq)0“课时数(kss)大于等于2并且小于等于6”BETWEEN(kss,2,6)或kss=2.AND.kss=6 九、如何根据条件修改数据表中的大量记录( (1)利用表菜单中的“替换字段”对话框进行可视化操作【例1】在成绩表中,从当前记录开始至向后20条记录,对课程号(kch)是“S02”的记录,要求将其中成绩(cj)低于60分的记录全部加10分。 修改记录的操作界面如下图1.2-4 (1)用For引导kch条件图1.2-4 (2)用While引导kch条件图1.2-4 (3)当前记录指针在S02处图1.2-4 (4)当前记录指针在S01处解析对图1.2-4 (3)所示的当前记录所在位置,图1.2-4 (1)与图1.2-4 (2)中的操作能实现完全相同的效果,即可以对图中标注出的3条记录进行修改;对图1.2-4 (4)所示的当前记录所在位置,图1.2-4 (1)可以对图中标注出的3条记录进行修改,而图1.2-4 (2)不会进行任何修改,因为当前位置的kch是S01,不满足While中的条件,该命令不再往下执行。 可见,本题该采用图1.2-4 (1)所示的操作才能实现题意要求。 【特别提醒】由上图可以看出,同样的条件写在while框里与写在For框里有时效果是不同的,while引导的条件在指定范围内遇到一个不满足该条件的记录后,就不再对其余记录进行判断,即使后面还有记录是满足条件的也不再执行;而for引导的条件则对指定范围内的记录全部进行判断、执行。 ( (2)在命令窗口执行Update命令【命令格式】UPDATE表名SET字段名1=修改值1,字段名2=修改值2,WHERE条件1AND条件2AND对应前面图1.2-4 (1)的命令如下(这里没有指定范围)UPDATE表cj SETcj=cj+10WHERE cj80AND kch=S02【例2】修改课程表(表kc)中所有记录的课时数(kss)和学分(xf)字段的值,要求将所有必修课(即bxk字段的值为.T.)的课时数加 16、学分增加1。 答案UPDATE答案UPDATE表kc SETkss=kss+16,xf=xf+1WHERE bxk=.T.【例3】调整工资表(表gz)中所有讲师的综合津贴(zhjt),要求1996年(含1996年)以前参加工作的讲师每人为280元,其余的讲师为150元。 答案UPDATE表gz SETzhjt=iif(YEAR(gzrq)=1996,280,150)WHERE zc=讲师【例4】修改学生表(表xs)中所有记录的xh字段值,用班级编号(bjbh)中的第2至4位插入到学号中的第4与第5位之间。 答案UPDATE表xs SETxh=LEFT(xh,4)+SUBS(bjbh,2,3)+SUBS(xh,5)【提示】Update语句是针对整个表进行操作的,不支持指定范围,如果要特殊限制的话,需要转换为where中的条件。 Update命令不需要打开表,推荐采用Update命令来完成根据条件修改数据表中的大量记录的操作。 ( (3)行在命令窗口执行replace语句【命令格式】REPLACE范围字段名WITH修改值FOR条件1WHILE条件2REPLACE范围字段名WITH修改值FOR条件1AND条件2对应前面图1.2-4 (1)的命令如下REPLACE NEXT20cj WITHcj+10FOR cj80AND kch=S02对应前面图1.2-4 (2)的命令如下REPLACE NEXT20cj WITHcj+10FOR cj60WHILE kch=S02【例5】修改课程表(表kc)中所有记录的课程名(kcm)字段的值,要求所有必修课的课程名前加字母“B”,所有非必修课的课程名前加字母“X”。 答案REPLACE ALLkcm WITHiif(bxk=.T.,B+kcm,X+kcm)图1.2-5Replace命令操作结果示意说明要先打开待修改的表,然后才可以执行REPLACE命令。 【提示】?在VFP的命令和表达式中用到的符号,如逗号、双引号、单引号、点号、大括号、小括号等,都应该采用英文状态下的符号,否则系统报错;?VFP中的命令、函数名在不混淆的情况下均可以简写为前4个字符,也可以是4个字符到全名之间,但所简写字符必须逐个正确;图1.2-6在表设计器中建立结构复合索引示例 十、排序与索引?排序指定索引的排序顺序,单击按钮改变顺序。 向上箭头表示升序,向下箭头表示降序。 ?索引名(索引标识)即索引关键字的名称,必须以下划线、字母或汉字开头,且不可超过10个字。 命名应该意义明了,对单个关键字建立的索引,索引名可以直接与字段名相同;对多个关键字组合而成的索引,索引名最好用字段名的合成,这样从名称就可以了解到索引关键字信息。 ?索引类型有四种类型主索引(仅适用于数据库表)、候选索引、唯一索引或普通索引(默认值)只能把表中的一个索引设置为“主索引”,其它类型的索引可以有多个。 注意建立索引后并不立即改变记录的显示顺序,只有将某个索引设置为主控索引后,记录才按该主控索引的顺序显示。 主索引不同于主控索引。 设置主控索引的命令是SET ORDERTO索引名?索引表达式(索引关键字)即用来建立索引的一个字段或字段表达式,可以在“表达式生成器”中创建或一个表达式,一个表达式最多可有240个字符。 注意用多个字段建立索引表达式时,表达式的计算结果将影响索引的结果;不同类型字段构成一个表达式时,必须转换成统一的数据类型。 ?筛选指定记录参加索引的条件,即哪些记录参加索引,条件表达式的构造方法同前。 【例1】在表gz(工资)表中按zfgj(住房公积金)创建一个普通索引,索引名zfgj,要求按zfgj(住房公积金)降序排序。 单个字段的索引表达式非常简单,直接输入即可,结果如图1.2-7所示。 图1.2-7单个关键字建立索引示例【例2】在表js(教师)表中创建一个普通索引xdhzcdh,要求先按xdh(系代号)字段排序,系代号相同的再按zcdh(职称代号)字段排序。 这两个索引字段都是字符型的,直接相加组合成索引表达式即可,结果如图1.2-8所示。 图1.2-8两个字符型关键字组合建立索引示例【例3】在表kc(课程)表中创建一个普通索引ksskcdh,要求先按kss(课时数)字段排序,kss(课时数)相同的再按Kcdh(课程代号)字段排序。 这两个索引字段一个是数值型,一个是字符型的,不可以直接相加组合,需要将数值型转换成字符型才可以组合成索引表达式,结果如图1.2-9所示。 图1.2-9一个数值型和一个字符型关键字组合建立索引示例【例4】在表gz(工资)表中创建一个普通索引jbgzzfgj,要求先按jbgz(基本工资)字段排序,jbgz(基本工资)相同的再按zfgj(住房公积金)字段排序。 这两个索引字段虽然都是数值型,但如果直接相加将会按两者之和排序,这不符合题意要求,故需要将这两个数值型字段都转换成字符型才可以组合,结果如图1.2-10所示。 图1.2-10两个数值型关键字组合建立索引示例 十一、如何设置参照完整性参照完整性用来控制如何在相关表中插入、更新或者删除记录,尤其是不同表的主关键字和外部关键字之间关系的规则,从而控制数据一致性。 比如,当删除学生表中的某个学生记录时,可以将成绩表中关于该学生的成绩记录同时删除;而当更改学生表中的学号时,成绩表中的学号也应该相应更改,以免二者不符。 (1)更新规则指定修改父表中关键字(key)值时所用的规则。 (2)删除规则;指定删除父表中的记录时所用的规则。 (3)插入规则;指定在子表中插入新的记录或更新已存在的记录时所用的规则。 设置参照完整性的操作要点是右击父表与子表之间的永久关系连线(如果尚不存在,需要先建立该关系),根据题意要求设置对应规则,不作多余规则设置。 当有多个父表时,要先选中需要设置规则的父子关系表,不可选错。 【例1】表xs中已存在主索引xsxh,索引表达式为xh;表cj已存在普通索引cjxh,索引表达式为xh。 以表xs为主表、表cj为子表,按xh建立永久关系,并设置表xs和表cj之间的参照完整性更新级联。 图1.2-13参照完整性设置示例【提示】设置参照完整性时,系统有时候会提示要先清理数据库,此时从数据库菜单中选择“清理数据库”命令即可。 参照完整性设置完毕,系统会自动在父表的相应触发器中生成参照完整性代码(本例中是更新触发器),如图1.2-14所示。 图1.2-14父表中自动生成的触发器代码 十二、如何设置表的触发器触发器是在一个插入、更新或删除操作之后运行的记录级事件代码,常用于交叉表的完整性。 默认情况下,即触发器器中无任何规则时,可以对数据表进行自由插入、更新、删除操作。 (1)插入触发器是向数据表中插入新记录时要验证的规则,如果插入的记录不满足要求,系统提示“触发器失败”。 如学生表的插入触发器设置为xb=”男”,则女生记录将不能插入表中。 (2)更新触发器是修改数据表中现有记录时要验证的规则,如果记录不满足要求,系统提示“触发器失败”。 如学生表的更新触发器设置为xb=”男”,则只能修改表中男生的记录,对女生记录不能修改。 (3)删除触发器是删除数据表中现有记录时要验证的规则,如果记录不满足要求,系统提示“触发器失败”。 如学生表的删除触发器设置为xb=”男”,则只能删除表中男生的记录,不能删除女生记录。 【例2】设置xs表的插入触发器只有学号开头两位是“00”至“03”的记录允许插入,否则不允许插入。 图1.2-12触发器设置示例【例2】设置XS表的插入触发器班级编号(bjbh)字段值不能为空字符串和Null值。 答案在插入触发器的表达式器中输入bjbh“”.AND.bjbh.NULL.【提示】不同触发器的规则对应不同的操作,互不影响,互不取代。 十四、常用命令(在命令窗口键入)1.SET DEFAULT命令,设置隐含的驱动器及目录。 设置了隐含的路径,我们可以在程序运行打开每个隐含路径下的文件时不用再指定路径了。 语法:SET DEFAULTTO路径参数说明:路径可以是符合操作系统要求的任何路径,比如Set default to d:实验&实验为D盘上已存在的文件夹Set defaultto d:softrsgl Set defaulttoSetdefaultto.注意如果路径中带有空格,必须用引号将路径括起来,否则会出错。 如Set Defaulttod:softrsgl佳帆2.在VFP主窗口中显示文件目录格式DIR路径3.创建/删除/进入某路径格式MD/CD/RD路径MD路径建立文件目录CD路径进入文件目录RD路径删除文件目录4.拷贝/重命名/删除文件格式COPY FILE源文件名TO目的文件名格式RENAME源文件名TO目的文件名文件路径不同还起到移动操作的作用格式DELETE FILE文件名|?RECYCLE?弹出对话框RECYCLE指定从硬盘上删除的文件被放入回收站5.调用外部命令/应用程序格式RUN/n外部命令/应用程/n表示NOWAIT,即可以执行另一个Windows应用程序6.关闭所有文件,结束当前VFP系统的运行格式QUIT7.创建/修改项目文件格式CREAT|MODIFY PROJECT文件名8.传统/严格日期格式的设置格式SET STRINCTDATETO0/1/20不进行严格日期格式检查1进行严格日期格式检查2进行严格日期格式检查,且对CTOD()、CTOT()也进行严格日期格式检查9.变量的创建格式STORE表达式1TO变量列表例STORE0TO A,B,C STORE“0”TO D?A,TYPE(A),B,C,D,TYPE(D)10.控制变量的访问访问局部/私有/全局变量格式LOCAL/PRIVATE/PUBLIC变量列表11.内存变量的保存与恢复格式SAVE TO文件名ALL LIKE/ALL EXCEPT变量名变量名可含统配符ALL LIKE变量名指定保存的变量ALL EXCEPT变量名指定不保存的变量格式RESTORE FROM文件名ADDITIVE12.数组的定义格式DECLEAR/DIMENSION/PUBLIC/LOCAL数组名(行数,列数)13.字符串比较格式SET EXECTON/OFF ON两串成等长比较OFF右串在左串内比较14.设置字符的排序序列机器/拼音(默认)/笔画格式SET COLLATETO“Machine”/“PinYin”/“Storke”Machine空格大写字母小写字母PinYin/Storke空格小写字母属性-工作区属性(有难度下次再做)格式SET FILTERTO条件FOR

温馨提示

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

评论

0/150

提交评论