VFP冲刺辅导

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第一次课内容:数据库、函数、程序结构、变量作用范围项目、数据库和表操作:上机操作为主,按惯例,12分1、记录的修改,删除,运用UPDATE和DELETEFROM,几十条记录,例如:删除专业表中所有专业代号最末位为“1”的记录。DELETEFROMzyWHERERIGHT(zydh,1)=1删除学生表中所有“99”级学生的信息DELETEFROMxsWHERELEFT(xh,2)=99将所有kcdh为“01”的学生成绩加5分UPDATEcjSETcj=cj+5WHEREkcdh=01假定cj中存放100分制成绩,cj5中存放5分制成绩,根据cj字段的值在cj5中填入数据。规则为100分对应分,99~80之间对应4分,79~60之间对应3分,59~40之间对应2分,其余成绩对应1分。UPDATEcjSETCj5=IIF(cj=100,5,IIF(cj79,4,IIF(cj59,3,IIF(cj39,2,1))))修改xh字段的值,若xh以“9”开头,则在其前插入“19”,否则则在其前插入“20”UPDATExsSETxh=IIF(LEFT(xh,1)=”9”,”19”,”20”)+xh2、字段标题、默认值、字段宽度例如:将学号字段的标题设置为“学号”,默认值设置为“2004”,宽度修改为10将教师表的基本工资设置为能容纳6位整数和2位小数。(9,2)3、字段注释(字段说明)例如:为学号加入字段注释“学生的唯一编号”4、格式、掩码例如:要求输入和显示学号时所有字母均转换成大写字母,在格式中输入!要求学号接受6个字节的字符,且只接受数字,在掩码中输入999999学号中可以输入任何字符,在掩码中输入XXXXXXXXX5、字段有效性和出错信息控制输入到字段中的数据的取值范围,在字段值改变时发生作用。有效性规则用表达式来构造例如:设置姓名字段的有效性规则和出错信息:姓名至少要有两个汉字LEN(ALLTRIM(xm))=4性别必须为“男”或“女”:xb=男.OR.xb=女将基本工资的有效性规则设置为“基本工资应该在0~2500之间”:jbgz0ANDjbgz=25006、记录有效性可以校验多个字段之间的关系是否满足某种规则。例如:工作年龄不能小于20,YEAR(gzrq)–YEAR(csrq)=20,不要考虑月份日期。学分大于或等于3的课程必须是必修课:(xf=3.AND.bxk).OR.xf37、索引索引表达式,一般在界面中设计,三种情况:如果索引表达式为字符型表达式,则各个字段在索引表达式中的前后顺序将影响索引的结果,如xdh+xb与xb+xdh是不同的如果索引表达式为算术表达式,则按照表达式的运算结果进行排序,如kss+xf,如果先按kss再按xf,应该STR(kss)+STR(xf)不同类型字段构成一个表达式时,必须转换为同一类型,(通常为字符型)索引中做个条件表达式,如xb+STR(jbgz),DTOC(gzrq,1)+STR(jngz)创建普通索引kccj,要求先按kcdh排序,如果kcdh相同,再按cj排序,设置索引的过滤条件为cj60:kcdh+STR(cj))8、插入/删除/更新触发器性别为“女”不能删除,在DELETE中写:xb”女”xh以“99”考试不能更新,在UPDATE中写:LEFT(xh,2)#99删除出发器设置为不可以删除,在DELETE中写:.F.工号为空的记录可以删除,否则不可以,EMPTY(gh)或LEN(ALLT(gh))=0允许修改2001(含2001年)以后参加工作的教师的记录,在UPDATE中写:YEAR(gzrq)=2001工号为“A0001”的记录可以插入:gh=”A0001”9、永久关系和参照完整性先设置一个住索引,在设置一个普通索引,一拖,1分来了,双击,一设置即可大家只要看到设置参照完整性,就进入设置界面,依据题目要求就可以轻松完成,比如题目回要求设置“删除级联”或“当父表中记录被删除时,删除子表中所有相关记录”是一样的,只要进入了界面就一目了然,千万别想太多。“如果在教师表中不存在匹配的关键字,则禁止在任课表中插入记录”,对应一找,为插入限制10、会将表添加为项目中的数据库表或自由表,项目中文件的添加和移去11、把项目中的文件设置为包含或排除函数:我们常用的AT()返回一个字符表达式或备注字段在另一个字符表达式或备注字段中出现的位置(从最左边开始计数)。区分大小写。a=”Itistimetogetup”b=”is”?AT(b,a)&&4c=”IS”?AT(c,a)&&0,表示未出现?ATC(c,a)&&4?AT(“信息”,“管理信息系统”)&&5SUBSTR()从给定的字符表达式或备注字段中返回一个子字符串?SUBSTR(“abcdefg”,2,3)&&”bcd”?SUBSTR(“abcdefg”,2)&&”bcdefg”DBF()、DBC()返回当前打开的表/数据库的路径和名称ALLTRIM()返回删除前后空格的字符串?ALLT(“vfp”)&&”vfp”YEAR()从指定的日期表达式或日期时间表达式的值中返回年份,数值型?YEAR(DATE())&&2004MONTH()从指定的日期表达式或日期时间表达式的值中返回月份值,数值型?MONTH(DATE())&&9DAY()从指定的日期表达式或日期时间表达式的值中返回某月的第几天,数值型?DAY(DATE())&&29LEFT()从字符表达式最左边一个字符开始返回指定数目的字符?LEFT(“abcdefg”,4)&&”abcd”RIGHT()从字符表达式最右边一个字符开始返回指定数目的字符?RIGHT(“abcdefg”,4)&&”defg”STR()将数值表达式的值转换为对应的字符串?STR(314.14,5,2)&&314.1?STR(314.14,5)&&314小数位数缺省为0VAL()返回由数字组成的字符表达式的数字值,忽略前面的空格。若字符表达式的第一个字符不是数字,也不是加减号,返回0?VAL(“12”)&&12.00?VAL(“-12”)&&-12.00?VAL(“a12”)&&0.00DTOC()由日期表达式或日期时间表达式的值返回字符型日期。参数1指定以年月日顺序且无分隔符的形式返回字符型日期。?DTOC(DATE())&&09/29/04?DTOC(DATE(),1)&&20040929CTOD()把字符型表达式的值转换成日期型数据?CTOD(“7/16/2004”)&&07/16/04IIF()根据逻辑表达式的值返回两个值中的一个。x=60?IIF(x=60,x+10,x-10)&&70EOF()测试记录指针是否指向了记录的结束标志打开空表,.T.GOTOBOTTOM,SKIP,.T.Found()=.F.时.T.FOUND()查找下一条满足条件的记录,返回.T.或.F.RECCOUNT()返回记录个数SEEK()在一个已建立索引的表中搜索一个记录的第一次出现位置,该记录的索引关键字与指定表达式相匹配。SEEK()函数返回一个逻辑值,指示搜索是否成功。USExsORDERxh&&打开xs表?SEEK('990301')&&返回.T.,找到了记录LEN()返回字符表达式的值中字符的数目?LEN(“vfp”)&&3宏代换,搞搞清楚,将连字符&放在变量前,告诉VFP将此变量当作名称使用,并使用一个符号(.)来结束这个宏替换表达式。X=”OFF”SETTALK&Xb=”database”a=”b”&a=”vfp”?a,b,&a&&”b”,”vfp”,”vfp”程序结构:数学算法,按惯例5分结构对称性:如完型填空,上机改错,输入就有一分如IF…ELSE…ENDIFDOCASE…ENDCASEFOR…ENDFORDOWHILE…ENDDOSCAN…ENDSCANLOOP:“短路”语句EXIT:无条件退出完整性:语句的结构完整、RETURN、例1:下列程序用来求0~100偶数之和,请将它写完整:N=0S=0DOWHILE.T.IFN100_______ELSES=S+NENDIFN=N+2ENDDO答案:EXIT例2:已知教师表(JS.DBF)已经按姓名(XM)建立索引,阅读下列程序:SELEJSSETORDERTOxmSEEK'王一平'IFFOUND()DISPLAYELSEWAITWIND'查无此人'ENDIF如果要用SEEK函数完成上述相同的功能,应将程序改成:SELEJSSETORDERTOxmIF________DISPLAYELSEWAITWIND'查无此人'ENDIF答案:SEEK(王一平)例3:计算s=1!+2!+3!+4!+5!s=0p=___&&1FORi=1TO5p=p*is=____&&s+pENDFOE?s例4:函数RV()将任意给定的字符串倒序返回FUNCTIONRVPARAMETERchI=0Mch=””DOWHILEILEN(ch)Mch=Mch+SUBSTR(ch,LEN(ch)-I,1)I=I+1ENDDORETURNMch子程序:SETPROCTOxx打开该过程文件即可程序与函数的最大区别:函数必须有返回值返回:程序RETURN,函数RETURN值参数传递:程序传址,函数传值,不提算了接收:PARAMETER变量的作用范围:LOCALPRIVATEPUBLICCommand中默认全局程序中默认私有ppt例子第二次课内容:查询和SQL语句查询设计,按惯例8分SQL(SELECT)命令按惯例20分查询掌握双表查询,或者一个表,一个视图,相同的用法。查询设计器中的各个选项。已知xs表和cj表存在一对多关系,基于xs表和cj表查询学生的平均成绩,要求输出字段为:xh、xm、平均成绩。结果按平均成绩从高到低顺序排序,查询结果的输出去向为屏幕。SELECTXs.xh,Xs.xm,AVG(Cj.cj)AS平均成绩;FROMxs,cj;WHEREXs.xh=Cj.xh;GROUPBYCj.xh;ORDERBY3DESC;TOSCREEN在sjk数据库中,xs表xh的前两位数字和含义为年级,要求基于xs表,按学号字段的前两个数字(即年级)分组查询学生人数,要求输出字段为:年级和人数,查询结果按字段年级的升序排序。SELECTLEFT(Xs.xh,2)AS年级,COUNT(*)AS人数;FROMxs;GROUPBY1;ORDERBY1已知kc表和cj表存在一对多关系,基于kc表和cj表查询各课程不及格成绩中的最高分。要求输出字段为:kcdh、kcm、不及格最高分。查询结果按kcdh升序排列,查询结果的输出去向为临时表tmpb。SELECTKc.kcdh,Kc.kcm,MAX(Cj.cj)AS不及格最高分;FROMkc,cj;WHEREKc.kcdh=Cj.kcdh;WHERECj.cj60;GROUPBYCj.kcdh;ORDERBYKc.kcdh;INTOCURSORtmpb已知js表和rk表存在一对多关系,基于js表和rk表查询各教师的任课门数。要求输出字段为:gh、xm、任课门数。查询结果中只包含任课门数为2门或2门以上的教师。SELECTJs.gh,Js.xm,COUNT(*)AS任课门数;FROMjs,rk;WHEREJs.gh=Rk.gh;GROUPBYRk.gh;HAVING任课门数=2基于xs表按学生的姓氏分组查询各姓氏的学生人数,要求输出字段为:姓氏和人数。查询结果按人数的降序排列。SELECTLEFT(Xs.xm,2)AS姓氏,COUNT(*)AS人数;FROMsjk!xs;GROUPBY1;ORDERBY2DESC基于js表查询所有的系名,要求输出字段为ximing,查询结果中不允许出现相同的系名,查询结果按系名的升序排序,查询去向为临时表ximing。SELECTDISTINCTJs.iming;FROMsjk!js;ORDERBYJs.ximing;INTOCURSORximing基于xs表和cj表查询出cj表中的所有

1 / 44
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功