江苏理工学院-王建江苏省计算机等级考试二级VisualFoxPro上机攻略目录项目、数据库和表操作知识点.................................................1查询知识点..................................................................................6菜单知识点..................................................................................9表单知识点................................................................................13程序改错知识点.......................................................................201项目、数据库和表操作知识点一、零碎知识点1、做第一题的时候,必须按考试要求设置默认目录语句为:setdefaultto…2、“记录有效性规则”与“字段有效性规则”不同,前者表,后者字段3、比较冷门的字段类型备注型M(memoMemo)(存文字)通用型G(genGen)(存图片)(备注型和通用型都是双击插入记录)整型I(同数值型,无小数位)货币型Y4、设置参照完整性,必须要先清理数据库(★★★非常重要★★★)先打开数据库设计器,然后菜单栏——数据库——清理数据库5、设置参照完整性和索引的时候,要注意保持字段类型一致,相同时不用改,不同时基本上都是转化成字符型来设置(★★★非常重要★★★)数值型转化为字符型:STR(字段名,整数位,小数位)没有小数时直接省略日期(时间)型转化为字符型:DTOC(字段名,1)TTOC(字段名,1)括号中必须要加1将当前日期转化为字符型:DTOC(DATE(),1)6、修改项目文件的项目信息右键点击项目——项目信息,然后进行设置,常考设置图标7、自由表的相关操作(★★★非常重要★★★)(1)题目让编辑自由表时,无法用use命令打开自由表,直接在项目管理器中双击自由表使其处于打开状态,然后在进行相关数据的命令操作;同理,当用use无法打开题目中的某个表时,要自然地想到它是自由表。(2)将自由表添加到数据库中,并设置为包含。打开数据库设计器,在项目管理器中将对应的自由表直接拖到数据库设计器中,右击选择包含。如果不要求添加到数据库中的,直接右击,选择“包含”即可。8、显示类的名称Checkbox复选框Combobox组合框Editbox编辑框Listbox列表框OptionGroup选项按钮组Spinner微调框Textbox文本框Grid表格OLEBoundControlOLE绑定型控件29、表记录个数:RecnoCount10、表的触发器:不可用时,输入.F.二、字段格式和字段输入掩码(★★★非常重要★★★)1、字段格式删除前导空格T字段全为大写字母!只允许输入字母或汉字A2、字段输入掩码只能输入数字9只能输入字母或汉字A可以输入任意字符X可输入数字、空格和正负符号#举例:某字段宽度为6,第一位只能输入数字(字母),其他为任意字符分别为:9XXXXXAXXXXX注意:会计格式。所谓的会计格式,就是只能输入数字,然后从右向左每3位加一个逗号,小数位不加逗号。举例:gzN(8)会计格式为:99,999,999gzN(5,2)会计格式为:99,999.99三、字段的有效性规则1、常用到的一些函数(★★★非常重要★★★)(1)某字段值不能为空(空字符串),假设字段为cj!Empty(cj)或.NOT.Empty(cj)某字段值不能为空值!ISNULL(cj)或.NOT.ISNULL(cj)同样的,如果需要设置为空或空值时,直接Empty(cj)、ISNULL(cj)(2)某字段值大于(等于)A,小于(等于)B,假设字段为cj(★★非常重要★★)两种表达:cj=A.AND.cj=BBetween(cj,A,B)注意:第一种表达方式的等于号根据题目要求来填写;第二种表达,无论题目中是否包含等于,都可以使用,没有影响。(3)性别只能是男或女xb$”男女”(4)IIF(条件,A,B)(★★★非常重要★★★)条件成立则取值为A,否则取值为B,非常重要。3(5)截取字符串(★★★非常重要★★★)Left(字段,长度)Right(字段,长度)Substr(字段,开始截取位置,长度)(6)B能够被A整除B%A=0或者Mod(B,A)=0(7)某字段值必须包含非空字符Len(Allt(字段))0(★★非常重要★★)(8)在字段后面补充字符,用“-”,可同时保证添加字符与原字符间没有空格在字段前面添加字符,直接用“+”举例:在字段mc(名称)前后分别添加书名号《》,并使其与字段间无空格则为:“《”+mc-“》”(9)四舍五入如果数值型字段含有小数,则用函数ROUND()如:zhcj(综合成绩)字段含有4位小数,四舍五入保留两位小数ROUND(zhcj,2)如果数值型字段为整数,要四舍五入,用Int((字段+5)/10)*10如:cj(成绩)字段全部四舍五入Int((cj+5)/10)*10(10)当前系统的日期DATE()(★★★非常重要★★★)当前系统的日期时间DATETIME()另外截取日期型变量常用的函数有以下几个,但是他们转变之后都是数值型的,要是想变成字符型,需要额外用STR()函数转换。YEAR()、MONTH()、DAY()、HOUR()举例:“生日信息”使用“xx月xx日”表示,从csrq中截取STR(MONTH(csrq),2)+”月”+STR(DAY(csrq),2)+”日”有效性规则常考某个字段在几个年、月、日、小时之间什么的,表示方法为:当前系统日期进行转化:Between(YEAR(DATE()),A,B)某个字段日期进行转化:Between(YEAR(csrq),A,B)2、字段有效性信息和默认值(★★★非常重要★★★)(1)字段有效性信息输入时,比较要加上双引号(2)字段默认值如果为数值型和逻辑型直接输入,其他的需要加上定界符字符型加双引号,日期型加上花括号{},货币型加$(3)有的题目会说“设置xx字段的有效性规则信息”,这样既要输入有效性规则也要输入有效性信息,不能遗漏。4四、表记录修改的相关命令(★★★非常重要★★★)1、添加删除标记(逻辑删除表中记录)(1)DELETE-SQL语句Deletefrom表where条件(2)use表deletefor条件举例:给kc表中所有学分大于或等于5的记录追加删除标记第一种:deletefromkcwherexf=5第二种:usekcdeleteforxf=52、彻底删除表中记录第一种:use表第二种:use表deleteallzappack3、更新表中数据(最常考)(★★★重中之重★★★)update表set字段=表达式where条件举例:计算并修改jy表中所有记录的fk字段值:学生lx字段值为X借阅天数超过30天每天罚款0.1元(借阅天数根据借阅日期jyrq和还书日期hsrq计算)。updatejysetfk=(hsrq-jsrq-30)*0.1wherelx=”X”注意:对于涉及到百分数的,不能使用%,只能通过小数来转化举例:修改jc表数据,使所有记录单价字段的值增加10%updatejcsetdj=dj*1.14、复制表中记录保存到新表中(可以复制到其他文件中,见书95页)use表copyto新表名for条件举例:将jc表中出版社名称(cbsmc)为“高等教育出版社”的记录复制到表名为gdjy的新表中usejccopytogdjyforcbsmc=”高等教育出版社”5、为表新增一个字段Altertable表名add字段名字段类型(字段宽度)举例:为jc表添加ndj字段,字段类型为数值型,宽度为5,小数位数为2AltertablejcaddndjN(5,2)56、IIF()函数的具体应用(1)计算并修改gz表中所有记录的ylbx的值,计算方法如下:如果gz+jt+qt≥1800元,则ylbx=(gz+jt+qt)×15%,否则ylbx=1800×11.5%updategzsetylbx=IIF(jbgz+gwjt+qt=1800,(gz+jt+qt)*0.15,1800*0.115)(2)IIF()函数当中,可以再包含IIF函数,无限的套嵌举例:修改cj表中的数据,按照成绩值设置备注字段内容,若成绩大于或等于90,则备注字段中设置为“A”;若成绩大于等于80且小于90,则备注字段设置为“B”;低于60分设置为“D”;其余设置为“C”。updatecjsetbz=IIF(cj=90,”A”,IIF(cj=80,”B”,IIF(cj60,”C”,”D”)))(3)一道特殊的题目,原来还可以这样用—_—!!!举例:计算并修改jy表中所有记录fk的字段值:借阅天数超过30天(借阅天数根据借阅日期jyrq和还书日期hsrq计算),超过部分,学生(lx字段的值为X)每天罚款0.1元,教师(lx字段的值为J)每天罚款0.2元。updatejysetfk=IIF(lx=”X”,0.1,0.2)*IIF(hsrq-jyrq30,harq-jyrq-30,0)7、在表中插入记录Insertinto表名(字段1,字段2,…)values(字段1值,字段2值,…)举例:在xs表中插入一条新纪录,姓名:李明,学号:12121212,性别:男Insertintoxs(xm,xh,xb)values(“李明”,”12121212”,”男”)6查询知识点一、零碎知识点1、查询时涉及到自由表的,在添加窗口中点击“其他”,然后选择题目中要求自由表,并设置关联字段。2、引号问题(★★★非常重要★★★)在一个表中,设置需要输出的字段时,对于姓名(xm)字段,有的题目会说输出字段为xm,这个时候直接双击该字段即可;有的说输出字段为“姓名”,这时候要通过表达式来设置,在表达式生成器中输入xmAS姓名,然后点击确定添加。需要注意的是,表达式中的汉字不需要加引号,直接输入。3、查询设计器与Select-SQL语句的对应关系(★★★非常重要★★★)字段:即select后面的内容联接:即Innerjoin…on…,两个表通过相同字段进行内联接筛选:即where,筛选符合where后条件的记录排序依据:即orderby,设置输出记录以某字段排序分组依据:即groupby,设置输出记录以某字段分组(分组依据里包含“符合条件”:即Having,设置输出记录的条件)杂项:包含两个面(1)记录是否唯一,对应语句为distinct(2)输出前X(X%)的记录,对应语句topX/Xpercent(不设置则输出全部)74、查看查询的SQL语句在查询设计器的空白处点击右键——查看SQL信息5、设置查询去向(★★★非常重要★★★)菜单栏——查询——查询去向,直接输入文件名,不加后缀名注意:如果查询去向为文本文件,则在前面的步骤全部做完时候,右键点击查看查询的SQL语句,然后将其复制粘贴到命令窗口中,在最后一句之后加上分号(;),然后在下一行输入:tofile文件名.txt(有时候题目中会出现保存为文本文件,且不输出“列标头”,则语句为:tofile文件名.txtplain)6、关于是否需要分组(Groupby)(★★★非常重要★★★)在题目的表述中,基本上都没有明确要求我们“按……分组”,但是是必须要操作的,分组字段可能为1个也可能为多个,根据一些关键词来分辨:(1)在设计查询中,用到了函数表达式,则必须要设置分组(2)题目中出现“每个、每门、各个、按”之类的词,他们后面的基本就是分组字段;或者在输出字段中出现“总分、人数”等。举例:基于xs表和cj表,查询每位学生参加考试的课程门数、平均成绩。则:分组字段为