VF全套
- 格式:doc
- 大小:1.10 MB
- 文档页数:12
全国计算机等级考试二级VF全套二级VF学习讲义 (1)第一章前言――从零开始 (2)第一章数据库基础知识 (3)第2章V ISUAL F OX P RO 程序设计基础 ............................................................................ 错误!未定义书签。
第3章V ISUAL F OX P RO 数据库及其操作 ........................................................................ 错误!未定义书签。
第4章关系数据库标准语言SQL ........................................................................................ 错误!未定义书签。
第5章查询与视图 ................................................................................................................ 错误!未定义书签。
第6章表单设计与应用 ........................................................................................................ 错误!未定义书签。
第7章菜单设计与应用 ........................................................................................................ 错误!未定义书签。
第8章报表的设计和应用 .................................................................................................... 错误!未定义书签。
实验一 VFP数据表基本操作1、数据表的建立和数据的输入一、实验目的1、了解数据表的基本概念2、掌握数据表的建立2、掌握数据表中数据的添加3、掌握从其他数据表中添加数据二、实验内容及任务1、将所附带的VFPEX文件夹及该文件夹中的所有文件复制到C盘根目录下。
2、在文件夹VFPEX345、从数据表三、实验环境和实验材料1、Visual FoxPro 6.0中文版;2、素材软盘四、实验方法和步骤1、复制实验所需文件双击“我的电脑”,打开窗口,双击A驱动器,窗口中显示A盘中的内容,鼠标右击VFPEX文件夹,显示快捷菜单,选择“复制”命令;打开C盘根目录并右击,显示快捷菜单,选择“粘贴”命令,软盘中的VFPEX 文件夹及其文件被复制到C盘根目录中。
2、创建数据表并输入数据1)进入Visual FoxPro 6.0环境。
2)选择“文件/新建”命令,显示“新建”对话框,如图1-1,选择“表”并单击“新建文件”,显示创建对话框,如图1- 2,“保存在”选择“VFPEX文件夹”,“输入表名”为“XS.DBF”,单击“保存”,显示表设计器,如图1-3。
图1-1 图1-23)按要求输入相关的字段名、字段类型、字段宽度等内容,具体如图1-3。
图 1-34)单击“确定”,显示“现在输入数据吗?”确认框,如图1-4,单击“是”,显示数据表窗口,如图1-5,将上述三条记录依次输入到数据表中,并关闭窗口。
图1-4图1-53、向数据表添加记录1)选择“文件/打开”命令,显示打开对话框,如图1-6,在“查找范围”中选择“VFPEX文件夹”,“文件类型”中选择“表(*.dbf )”,双击XS.DBF数据表,打开数据表。
图1-62)选择“显示/浏览”命令,显示数据表窗口,如图1-5。
3)选择“表/追加新记录”命令,在数据表窗口中添加新的空记录,将上述记录添加到数据表,并关闭数据表4、从其他数据表添加数据到当前数据表1)打开数据表XS.DBF,并显示数据表窗口,如图1-5。
VF命令一览表一、命令e 表名打开表2.List 显示表记录,但不能修改3.browse 浏览表记录,可以修改4.display 显示记录指针指向的记录5.append 追加记录6.append blank 追加空白记录7.insert blank 插入空白记录8.delete 逻辑删除记录,记录前出现星号9.pack 物理删除,将逻辑删除的记录彻底删除10.recall 记录恢复11.zap 删除表里的所有记录12.go n 指向第n条记录13.go top 指向第一条记录14.go bottom 指向最后一条记录15.skip n 往下跳n条记录16.skip -n 往上跳n条记录17.? 从屏幕的下一行的第一列起显示结果18.? ? 从当前行当前列起显示结果e sb copy to sb() 复制sb表给sb()表20.recno() 记录号函数21.bof() 上溢出22.eof() 下溢出23.dimension x(4) 定义数组x,里面有四个元素,其中每个元素的默认值为.F. declare和dimension 相同24.replace 替换25.add 表示增加字段26.distinct 不重复记录27.error 错误28.continue 继续29.else if 否则30.column 列31.input 显示数值32.accept 显示字符串33.wait 是弹出的一个信息框34.drop 删除字段或删除表35.otherwise 其它情况36.check 规则37.cursor 临时表38.build 连编二、VF里文件类型1.项目 .pjx project2.数据库 .dbc database3.表 .dbf table4.菜单 .mnx .mpr menu5.程序 .prg6.表单 .scx form7.报表 .frx report 8.查询 .qpr query9.视图 .vue view 10.文件 .txt11.备注型文件 .fpt三、例题1.creat table student(学号 c(6),姓名c(8),性别c(2),年龄n(2)) 创建学生表2.insert into student values("001","张三","男",20) 插入一条学生记录3.alter table student alter 学号 c(8) 将学号字段的宽度改为84.alter table student rename 学号 to 学生编号将学号字段重命名为学生编号5.alter table student drop 年龄将年龄字段删除6.alter table student add 所在院系c(10) 为student表增加一个字段7.select *from student into table xusheng 将表student复制给表xuesheng8.update student set 成绩=成绩+10 where 性别="男" 将男生的成绩提高10分9.delete from student where 性别"女" 册除所有女生的记录10.alter table student alter 学号 set check left(学号,2="00")四、创建、运行与修改1.create database 123 创建数据库123modify database 123 修改数据库123 (注意:alter在SQL中修改表结构)2.modify command 123 修改程序123do 123 运行程序1233.create form 123 创建表单123modify form 123 修改表单123do form123 运行表单1234.create menu 123 创建菜单123modify menu 123 修改菜单123do 123.mpr 运得菜单1235.modify query 123 修改查询123do 123.qpr 运得查询1236.modify report 123 修改报表123report form 123 运行报表1237.drop view 123 删除视图123create view 123 创建视图123 (打开视图用use)五、排序1.sort to nl on 年龄按年龄升序排列,产生一个新表nl2.sort to cj on 成绩/d 按成绩降序排列,产生一个新表cj六、索引1.index on 姓名 tag xm //按姓名升序建立普通索引,索引标识为xm//2.index on 性别 tag xb //按性别升序建立普通索引,索引标识为xb//3.index on 成绩 tag cj descending //按成绩降序建立普通索引,索引标识为cj//4.index on 性别 tag xb1 unique(唯一索引) //按性别升序建立唯一索引,索引标识为xb1//5.index on 年龄 tag nl candidate //按年龄升序建立候选索引,索引标识为nl//6.index on 性别+str(成绩) tag xbcj //按性别升序,如性别相同按成绩升序建立普通索引,索引标识为xbcj//7.index on 性别+str(成绩) tag xbcj1 descending //按性别降序,如性别相同按成绩降序建立普通索引,索引标识为xbcj1//8.index on 年龄-成绩/1000000 tag nlcj //按年龄升序,如年龄相同按成绩降序建立普通索引,索引标识为nlcj//9.index on 年龄-成绩/1000000 tag nlcj1 descending //按年龄降序,如年龄相同按成绩升序建立普通索引,索引标识为xbcj1//七. 命令set index to 打开当前的一个或多个索引文件并确定主控索引文件(to后加东西是打开,不加是关闭)set order to 确定主控索引locate 顺序查找满足条件的记录,并且指向它seek 索引查找count 记数命令sum 求和命令average 求平均值命令total 汇总命令max 求最大值min 求最小值八.SQL查询结构1.select 字段列表要显示的字段2.from 表名列表查询涉及到的所有表3.where 条件条件4.into 目标查询结果输出到哪去5.group by 条件表达式对记录进行分组6.having 筛选条件选择符合条件的分组7.order by 关键字对查询结果按某几个字段进行排序8.top 数值表达式对显示表的前几个记录九.程序结构1.顺序结构2.选择结构:(1)if 条件表达式 (2)if 条件表达式 (3)do case语名序列语名序列1 case 条件表达式1endif else 语句序列1语句序列1 case 条件表达式2endif 语句序列2case 条件表达式3语句序列33.循环结构:(1)for (2)do while 条件表达式 (3)scan(扫描)循环体循环体循环体endfor enddo endscanLoop 重新回到循环的最开始 input to x 从键盘输入一个数给变量xexit 结束循环跳出循环 accept to y 从键盘输入一个字符串给变量yset sysmenu to default 退出菜单thisform.release 退出表单thisform.refresh 刷新表单十.函数数值型函数函数名功能例子结果1.abs() 求绝对值 ?abs(-4) 42.sqrt() 求平方根 ?sqrt(4) 23.int() 取整数 ?int(7.5) 74.max() 求最大值 ?max(3,4,5) 55.min() 求最小值 ?min(3,4,5) 36.mod() 取余 ?mod(11,3) 27.round() 四舍五入 ?round(3.1415,3) 3.1428.ceiling() 返回不小于某值 ?ceiling(3.3) 4的最小整数9.floor() 返回不大于指定数的最大整数 ?floor(3.3) 3十一.字符处理函数1.substr() 求子串 ?substr("abcd",2,2) "bc"2.left() 取左串 ?left("abcd",2) "ab"3.right() 取右串 ?right("abcd",2) "cd"4.len() 求串长 ?len("abcd") 45.at() 求一个串在另一个串中出现的位置 ?at("bc","abcd",1) 26.space() 输出空格 ?space(4) " "7.upper() 将小写字母转换成大写字母 ?upper("aBc") "ABC"8.lower() 将大写字母转换成小写字母 ?lower("aBc") "abc"9.val() 将字符串转换为数值 ?val("3.14") 3.1410.str() 将数值转换为字符串 ?str(3.14,5,1) "3.1"11.alltrim() 去掉字符串前面和后面的空格去掉 ?alltrim("abcd") "abcd"12.stuff 修改字符串 ?stuff("good boy",5.3) "goodgirl"十二.日期处理函数1.date() 当前日期 6.ctod() 将字符转换为日期 ?ctod("10/1/99") {10/01/99}2.time() 当前时间 7.dtoc() 将日期转换为字符 ?dtoc({10/01/99}) "10/01/99"3.year() 取年函数 8.dtos() 将日期转换为年月日4.month() 取月函数格式字符串 ?dtos({10/1/99}) "19991001"5.day() 取日函数。
VF常用命令和程序命令一、主要命令:1、CREATE作用:建立一个新的表。
格式:CREATE [<文件>|?](注意,命令字符可取前面四个字符,后面可省略不写,即CREA,下同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同时选择,下同。
)说明:文件指建立以.dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会弹出对话框,要求用户输入想要建立的表名。
在命令中不加文件名或问号系统也会弹出对话框,要求用户输入想要建立的表名。
2、MODIFY STRUCTURE作用:显示表文件结构,并允许修改此表的结构。
格式:MODIFY STRUCTURE说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。
3、APPEND作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。
格式:APPEND [BLANK]说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。
无BLANK参数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。
4、INSERT作用:在表文件中间插入一个新记录。
格式:INSERT [BEFORE] [BLANK]说明:INSERT 在当前记录后插入一记录;INSERT BEFORE 在当前记录前插入一记录;INSERT BEFORE BLANK 在当前记录前插入一空记录。
5、BROWSE作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。
格式:BROWSE6、USE作用:打开和关闭表文件。
格式:USE [<文件名>]USE说明:前一个命令用来打开<文件名>指定的表文件,该表如有备注型字段,则同时打开相应的备注文件(.fpt文件);后一个命令关闭当前打开的表文件。
7、LIST和DISPLAY作用:显示表(.dbf)的内容、结构或状态。
格式:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件>] [TO PRINT|TO FILE <文件>]LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>]LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>]说明:命令带OFF参数表示不显示记录号,范围指定对哪些记录进行操作,范围包括:RECORD n 第几号记录、NEXT n 当前记录开始的几个记录、REST 自当前记录开始至文件末尾的所有记录、ALL 所有的记录。
VF知识点总结概念知识点总结1、数据库的基本理论和VF 数据库操作2、数据与程序设计3、SQL 语句4、⾯向对象程序设计及表单、报表、菜单数据库的基本理论和VF 数据库操作(第1、2、3、4、6章)⼀、数据库系统基本理论1、理解数据库系统的⼏个基本概念以及它们的关系数据库(DB )、数据库管理系统(DBMS )、数据库应⽤系统(DBAS )和数据库系统(DBS )2、掌握实体之间的联系,可以判断出实际问题中属于那种联系⼀对⼀、⼀对多、多对多3、弄清三⼤数据模型的结构形式:层次模型、⽹状模型和关系模型我们现在所⽤到的数据库都是关系数据库(a )(b )(c )4、理解关系术语关系(就是⼆维表,记录的集合);元组(⾏、记录);属性(列、字段);域(⼀个字段的取值范围);关键字(关键的字段,唯⼀能标志⼀个元组的字段或字段的组合);外部关键字(不是本表的关键字,但是是其他表的关键字;⽤来建⽴表间的联系)5、关系运算理解传统的集合运算(并、交、差、笛卡尔积)和专门的关系运算(选择、投影、连接包括等值连接和⾃然连接)⼆、数据表操作1、了解表操作的⼀些命令,尤其以下⼏条:LIST显⽰记录:LIST | DISPLAY [FIELDS <字段名表>][<范围>] [FOR<条件表达式>]限定条件⽤FOR短语LOCATE条件定位:LOCATE FOR<条件表达式>本命令定位在满⾜条件的第⼀条记录,若想定为满⾜条件的下⼀条记录,必须⽤CONTINUE⽤FOUND()函数为T判断是否有满⾜条件的记录(也可⽤EOF()为F)APPEND为追加记录;INSERT为插⼊记录REPLACE修改记录:REPLACE <字段名1> WITH <表达式1> [FOR <条件表达式>]2、删除操作分两步⾛:DELETE与PACKDELETE是逻辑删除,也就是添加删除标记,PACK才是真正物理删除;逻辑删除的记录还可以恢复(RECALL)3、理解⼯作区的概念系统提供了32767个⼯作区,可以在不同的⼯作区同时打开多个表,使⽤⼯作区⽤其编号1~32767,或者别名,前⼗个⼯作区有别名:A~JSELECT 0表⽰使⽤最⼩未⽤过的⼯作区4、建⽴表之间的临时关联⼀个为主表,⼀个为⼦表,使⽤SET RELATION TO …INTO…语句要求两个表必须在不同的⼯作区打开可以使⽤SET RELATION TO解除关联三、数据库操作1、理解数据库⽂件它并不真正的存储数据,只是对存储数据的⽂件进⾏统⼀的管理建⽴数据库后,形成三个同名⽂件.dbc .dct .dcx2、理解⾃由表与数据库表的区别与联系区别:可以看⼀下“表设计器”⾃由表不能设置长表名、长字段名、标题、输⼊掩码、字段有效性规则、默认值、注释等内容⾃由表不能设置主索引⾃由表可以添加到数据库中形成数据库表(ADD TABLE…);数据库表可以移出形成⾃由表,相应的设置丢失,主索引变为候选索引(REMOVE TABLE…)3、掌握索引的概念索引就是排序,但它是逻辑排序,排列的不是实际记录,⽽是记录指针,排序的结果存放在索引⽂件中建⽴索引的主要⽬的是为了提⾼查询速度(在有序的集合中查询某个个体很显然⽐⽆序中查询快得多)A、建⽴索引可以通过命令实现:INDEX ON <索引关键字表达式> TO <独⽴索引⽂件名> | TAG <标识名> [ASCE | DESC] [UNIQUE] [CANDICATE]可以建普通索引(命令中不需表⽰)、候选索引(CANDICATE)、唯⼀索引(UNIQUE)B、可以以在表设计器中建⽴索引索引不是真正排序,表的排序命令为SORT,是对记录的排序,结果形成新的表⽂件.dbf 4、区别索引⽂件的类型索引⽂件分为独⽴索引⽂件(.idx 存放⼀条索引结果)和复合索引⽂件(.cdx 存放多条索引结果)复合索引⽂件⼜分为结构复合索引⽂件(与表同名)和⾮结构复合索引⽂件结构复合索引⽂件因其与表同名,随着表的打开⽽打开,表的关闭⽽关闭,在表被修改时⾃动同步修改,现在是主要应⽤的索引⽂件5、区别索引的类型主索引和候选索引意义相似,建⽴主索引和候选索引都要求关键字表达式的值唯⼀,没有重复。
第一章vf的基础知识(1)人工文件数据库(2)关系运算传统:交并差专门:选择:行元组(记录) for where 行减少一个表投影:列属性(字段) fields 列减少一个表连接:多个表行列减少变多join on自然连接:多个表去掉重复属性的等值连接笛卡尔积:多个表3 * 3(3)关系的特点: 关系表二维表(.dbf)一个关系必须规范化元组不能重复属性不能重复属性的顺序没有要求记录顺序没有要求(4)项目(.pjx)建立项目:create project [项目名]修改项目:modify project [项目名]第二章函数常量数值表示方法:直接表示123 12.35 N货币常量表示:$123 默认4位小数$123 123.0000 8字节Y字符常量表示:"" '' [] sql Cthisform.grid1.recordsource="sele ..where 颜色='蓝' "日期常量{} 2005/05/02=>数值表示:{yyyy/mm/dd} 8字节D{yy/mm/dd}{mm/dd/yyyy} 传统严格:{^yyyy/mm/dd}set mark to ',' : set mark to :set date to ymd mdy dmy ...set cent on|offset stri to 0|1|2日期时间常量: {yyyy/mm/dd hh..} 8字节T逻辑型:m=5>6 .t. .T..y..Y. .F. .f..N..n. 1字节L表达(1)字符: + - 连接类型必须相同1+2=3"1"+"2"=12 1+"2" ×"1"-"2"=12"1 "+" 2 "=1口口2口"1 "-" 2 "=1口2口口(2)日期表达式:日期+日期×日期+数值√日期-数值√日期-日期(3)逻辑: and or not !.and. .or. .not. not>and>or(5)==:精确比较职工号=="z1" z1 z11 z12 z112日期越后的越大.t.>.f.$:包含left 左边right右边substr "...........""计算机" $ 商品名商品名like "%计算机%"like(商品名,"*计算机*")函数数值abs()sign()sqrt()int(3.456) =>3ceil(3.456)=>4floor(3.456)=>3round(3.456,2)=>3.46round(456.325,-2)=>500max("2","9","85")=>9min("计算机","电脑")=>电脑j d字符函数(1)len(字符型):结果数值len(sapce(0))=>0len(space(3)+space(5))=>8len(space(5)-space(3))=>8(2)space(数值):结果字符(3)trim() 后面结果字符ltrim() 前面allttrim() 前后into table allt(thisform.text1.value) (4)left(姓名,2) 左结果字符right(姓名,2) 右substr(姓名,2)任意位置截取一直到末尾substr(姓名,2,3):(5)at("..","..."):第一次结果数值at("..","...",n):第n次(6)stuff("abcdef",2,3,"11"):a11efstuff("abcdef",2,3,""):aefstuff("abcdef",2,0,"11"):a11bcdef(7)like(表达式1,表达式2):表达式可以出现通配符?*like("ab*","abcd") .t.like("abcd","ab*") .f.转换(1)str():数值转换为字符str(表达1,表达2,表达3) str(thisform.text1.value,8,2)(2)val():字符转数值(3)ctod():字符转日期(4)dtoc():日期转字符(5)year():截取年份n(6)month():月份n(7)day():天n(8)date():系统日期d(9)time():系统时间c(10)bof():表的首部(11)eof():表的末尾do while not eof()(12)&: &"123"=>123(13)vartype():(14)empty():"空值"测试0 .f. 空格空串 .t.empty(.null.)=> .f.(15)isnull():空值isnull(.null.) => .t.(16)iif(150>200,200,300)变量字段变量(表中的字段名)和内存变量(除表的字段名以外)当字段变量和内存变量同名,最终字段变量优先,要访问内存变量m.内存变量m->内存变量(1)假设表中的字段名姓名张三命令窗口输入:姓名=姓名-"你好"?姓名=>张三?m.姓名?m->姓名=>张三你好(2)假设表中的字段名商品名计算机命令窗口输入:m=商品名-"技术"?m => 计算机技术?商品名->计算机(3)x=3y=3store 3 to x,y(4)?:换行输出??:当前光标处输出一行(5)数组dime(1)数组的初值: .f.(2)数组的起始的小标(下标的下线):1(3)数组的个元素的类型可以不一样(4)vf变量的数据类型由变量的值决定,可以通过改变变量的值来改变变量的类型(5)对数组名赋值代表对所有元素赋值(6)可以用一维数组表示二维数组(6)scatter to :将表的当前记录赋值到数组gather from :将数组的值赋值到表的当前记录第三章数据库基本操作数据库(.dbc)数据库的命令(1)建立数据库:create database 数据库名(2)打开数据库:open database(3)修改数据库(打开数据数据库设计器):modify database(4)关闭数据库:close database(5)删除数据库:delete database(6)将自由表添加到数据库:add table(7)将数据库移除变为自由表:remove table(8)设置当前数据库:set database to 数据库名(9)取消当前数据库:set database to (所有的数据库都不是当前,不是关闭) 自由表:不属于任何一个数据库的表数据库表:放在库中(1)一个表只能属于一个数据(2)数据库表(1)字段有效性(域完整性):规则:逻辑表达式><信息:字符表达式""默认值:由字段的类型"" {} $ 123(2)索引:主候选普通唯一(3)联系:永久联系:表现为表与表之间的连线(1)必须在数据库设计器(2)建立永久联系必须先建索引:一个主一个普通(3) 一对一一对多主主(默认) 主普通(默认)候选候选主唯一主候选候选普通候选主候选唯一临时联系:指针的联动(1)先建立索引,一般主对普通(2)指针的联动:当父表的指针指向某条记录,子表的指针自动指向同一条记录(3)建立临时命令:set relation to 索引字段into 表名(4)取消临时联系:set relation to(4)参照完整性:更新插入删除步骤:(1)建立索引(2)建立永久联系(3)清理数据库:数据库->清理数据库(4)建立参照完整性更新:级联父子限制父子忽略删除:级联父子限制父子忽略插入:限制子父忽略自由表的特点:(1)自由表不能建立上面的操作(2)自由表不支持长表名into table allt(thisform.text1.value)(3)自由表:候选普通唯一(4)将数据库表删除后,原来是主索引->候选索引索引:逻辑顺序由指针构成的文件索引和表单独存放(1)主索引: 一个数据库表只能建立一个主索引建立主索引的字段值不能重复(2)候选索引:一个表可以建立多个候选候选索引和主索引的功能完全相同建立主索引的字段值不能重复(3)普通:一个表可以建立多个普通建立普通就是为了排序建立普通索引的字段值可以不重复,也可以重复(4)唯一:一个表可以建立多个唯一建立唯一就是为了排序建立唯一引的字段值可以不重复,也可以重复建立唯一索引,如果字段不重复,结果全部出现如果字段重复,重复字段结果只出现一个,默认出现第一个(5)建立单索引(.idx)index on 索引表达式to 索引名注意(1)一个单索引产生一个文件,多个单索引产生多个文件(2)单索引的文件名就是to后面的索引名(3)单索引只能升序,不能降序(4)单索引只能两种索引:普通(默认) 唯一(unique)(6)结构符合索引(.cdx)注意:(1)多个结构符合索引只产生一个文件(2)结构符合索引的文件名就是表名(3)结构可以升序,也可以降序默认:升序asce desc(4)建立三种:候选(candidate) 唯一(unique) 普通(默认)(5)index on 索引表达式tag 索引名(7)排序:物理顺序生成一个表文件和原来的表分开存储命令:sort on 排序字段to 表名(8)查找顺序查找:locate for 查找条件(1)locate for 无论执行多少次,最终只能找到符合条件的第一条记录(2)继续查找:continue(3)判断查找是否成功:found() .t. 找到.f. 未找到(4)如果找到则eof()=> .f.如果没有找到: 则eof()=>.t.索引查找:seek(1)要用seek,必须按查找的字段先建立索引(2)继续查找:skip(3)locate for 性别="男" seek "男"(9)设置当前索引(打开索引)(1)命令建立索引:index on tag 直接有效(2)设计器:不会直接有效set order to 索引名set order to :关闭有效索引第四章sql(1)简单sql公式sele 结果字段1,结果字段2,...from 表where 条件注意:(1)*:所有字段* from 表1 * from 表1,表2 表1.*(2)distinct:去掉重复记录张三女张三女(3)where 查询条件(2)连接查询(1)where 连接等价于[inner] join on 内连接wheresele 结果字段from 表1,表2,..where 表1.公共字段=表2.公共字段; and ..and 查询条件join on (2个表)sele 结果字段from 表1 join 表2 on 表1.公共字段=表2.公共字段; where 查询条件join on(3个表)sele 结果字段from 表1 join 表2 join 表3 ;on 表2.公共字段=表3.公共字段;on 表1.公共字段=表2.公共字段;where 查询条件(2)超级连接left join :左连接左的表如果不满足条件,结果也会出现,满足条件的也会出现right join:右连接full join:全连接join on:内连接只有满足的才会出现嵌套(1)in not in 在....里面sele 结果字段from 结果的表where 公共字段in;(sele 公共字段from 条件的表where 查询条件)(2) exists (真的条件) not exist (假的条件)sele 结果字段from 结果的表where exists;(sele * from 条件的表where 结果表.公共字段=条件表.公共字段; and 查询条件)计算查询(1)sum(参数) 求和(2)max (3)min (4)avg() (5)count()数数计数排序sele 结果字段from 表where 条件;order by 字段1 [asc|desc],排序字段2 [asc|desc],...注意:(1)order by 排的最终结果的顺序修正(2)排序可以更多个字段,从左到右的顺序(3)asc 升序desc 降序默认为升序分组sele 结果字段from 表where 条件;order by 排序[asc|desc];group by 分组字段1,分组字段2,...[having 分组的条]注意(1)as 重命名sele 原字段as 结果字段...(2)avg max sum min count:只能写在sele 或having(3)order by :结果排序只能跟结果字段(4)where :只能跟原字段(5)group by :可以跟原字段也可以是结果字段(6)条件:where having(7)having:必须跟在group by 的后面(8)having 和where 不矛盾先用where 限定元组,在用group by 分组,然后再用having去掉不满总条件的分组(9)嵌套查询sele ..(sele...)order by 不能用在子查询中查询去向(1)top n [perc] :前多少条:top必须和order by 同时使用(2)into array 数组名(3)into cursor 临时表(4)into table|dbf 永久表(5)to file 文本文件数据操纵(1)插入数据非sql:append insert append fromsql:insert into 表名values(字段值):插入全部字段insert into 表名(制定字段)values(字段值):插入部分字段insert into 表名from array 数组名insert into 表名from memvar 从同名的内存变量(2)更新数据非sql:replace 更新字段名with 字段值:只能当前一条replace 更新字段名with 字段值for :满足条件replace all 更新字段名with 字段值for : 满足条件replace all 更新字段名with 字段值:全部sql:update 表名set 字段名=字段值:默认全部update 表名set 字段名=字段值where :符合条件(3)删除记录非sql(1)逻辑删除:dele for 条件(2)恢复:recall for 条件(3)物理删除:pack 必须先逻辑后物理(4)彻底删除:zap 删除全部记录后,表依然存在sql:(1)逻辑删除:dele from 表名where 条件(2)物理:pack数据定义(1)建立表:create table|dbf 表名[name 长表名][free];(字段名1 字段类型[(字段宽度[,小数位数])] [null|not null] [check [error]] [default][primary key |unique ][refe 表2][,字段名2...])(2)修改表格式1:alter table 表名add|alter [column] 字段名字段类型[(字段宽度[,小数位数])] [null|not null][check [error]] [default][primary key |unique ][refe 表2][,字段名2...])格式2:alter table 表名alter [column] 字段名[null|not null] [set default] [set check][drop default] [droup check]格式3:alter table 表名drop 字段名alter table 表名renamen 原字段名to 新字段名alter table 表名add primary key |unique ..alter table 表名drop primary keyalter talbe 表名drop unqiue tag 索引名查询和视图查询的知识点(.qpr)(1)查询是预先定义好的sql sele 语句(2)是一个文本文件(3)建立查询(1)新建->查询(2)项目->数据->查询(3)create query 查询文件名(4)新建->文本文件->sql->保存->.qpr(4)修改查询:modify query 查询文件名(5)查询的选项卡: 字段->sele连接->join on筛选->where排序->order by分组->group by having杂项->top distinct运行查询:do 查询文件名.qpr视图(1)基于sql产生(2)视图保存在数据库中,磁盘上不存在,操作视图,必须先打开数据设计器(3)查询保存在磁盘上,就是叫查询文件,跟数据库无关(4)视图:字段连接筛选排序分组更新条件杂项(5)查询只能查表,但是不能更新表,视图既可以查询表,也可以更新表(6)建立视图:create view 视图名as sele ..(7)删除视图:drop view 视图名(8)修改视图:modify view表单(.scx)表单文件名:保存或关闭表单控件名(表单名):name表单标题:catpion背景色:backcolor自动居中:autocenter模式表单:windowtype不可移动:movable高:height宽:width左:left顶:top表单的退出命令:thisform.release方法:退出release 显示:show 隐藏:hide表单:load init destroy unload事件:click dblclick rightclick属性:caption backcolor name ...建立表单:create form 表单名修改表单:modify form 表单名运行表单:do form 表单名标签(label1)属性name:名字caption:标题fontsize:字体大小forecolor:字体颜色autosize:自动调整大小backcolorfontname:字体backstyle:是否透明文本框(text1)name:名字value:文本框的值inputmask:格式x:任意字符9:数字和+ - #:空格数字+- . , passwordchar:密码显示的字符表示文本框的值:thisform.text1.value将sql的结果放入文本框:(1)sele ..into array aa(2)thisform.text1.value=aa命令按钮(command1)属性default:默认按钮enter click .t. 一个cancel:取消escenabled:是否可用(黑色和灰色)visible:是否可见(显示和隐藏)caption:标题事件:click选项组:optiongroup1 option1 option2属性:value=n:第n 个按钮被选中if thisform.optiongroup1.value=n :选中第n个按钮.....elseendifdo casecase ....endcasebuttoncount:按钮的个数组合框(combo1)value:选中的值displayvalue:选中或输入的值displaycount:显示的最大数目字段名=bo1.displayvalue rowsourcetype:数据源的类型0-无additem 增加条目removeitem 删除条目1-值手动自己输计算机,电脑,...6-字段某个字段的值8-结构显示某个表的所有字段名3-sql 写sele 命令5-数组数组名7-文件*.doc *.xls 幻灯片pptrowsource:数据源列表框(list1)value:列表框中选中的值listcount:列表框中的条目总数rowsourcetype:数据源的类型rowsource:数据源list(i):代表第i个条目thisform.list1.value页框(pageframe1) page1 page 2..pagecount:页数activepage:激活某一页thisform.pageframe1.activepage=n:激活第n页表格(grid1)captionrecorsourcetype:数据源的类型0-表开关的状态无关1-别名表必须开4-sql sele 语句recordsource:数据源columncount:列数-1 :全部列N:只能有n列0-表thisform.grid1.recourdsource="表名"4-sqlthisform.grid1.recourdsource="sele .. into cursor "计时器(timer1)interval: 计时器时间间隔500复选框(check1)value=1 选中=0 为选中check1 check2 (一个check就是2个结果,二个check就是4个结果)菜单(.mnx .mpr)建立菜单(1)先建->菜单->(.mnx)->单击菜单->生成(.mpr)菜单文件菜单程序文件(2)运行:.mpr 程序文件(3)菜单表文件(书227页,本身并不能运行,必须要生成)(4)建立菜单/修改:modify menu 菜单名(5)退出菜单:set sysmenu to default(6)退出表单:thisform.release(7)菜单的显示位置:单击显示->常规选项->位置访问键: (\<字母)快捷键: 直接输(菜单设计器的选项打勾后,再按ctrl+某个键)分组线:\-运行菜单:do 菜单名.mpr(8)顶层表单(将菜单显示在表单上)菜单(1)建立菜单(2)单击显示->常规选项->勾上顶层表单表单(1)将表单的showwindow -2(2)给表单init (load):添加调用菜单的代码:do 菜单文件名.mpr with this注意:菜单中要用表单中的东西原来表单中:thisform.release菜单中:表单文件名.release快捷菜单(将菜单显示在表单上,右键才可以显示)菜单(1)先建->快捷菜单(2)单击显示->常规选型->设置-> para 形参名(是否设形参,关键是要看你的菜单是不要用表单,如果要就必须设,不要就不设)表单(1)在表单的rightclick 添加代码do 菜单名.mpr with this注意快捷菜单也可以用表单的东西原来在表单:thisform.release菜单中:形参名.release程序(.prg)注释*:&&:note :输入命令(1)input "输入提示" to 变量:输入任意类型数值:1213货币:$123字符型:"" '' []日期: {}(2)accetp "输入提示" to 变量:只能输入字符串字符:不用""(3)wait "输入提示" to 变量:只能输入单个字符程序结构(1)顺序结构(2)选择结构:if if do caseendif else case ..endif ..endcase (3)循环结构do while for scan for.. .. ..enddo endfor endscanloop:结束本次循环继续下一次exit:结束循环参数传递格式1: do 过程名(函数名) with 参数do aa with 5 (常量): 单向do aa with x+y (表达式):单向do aa with (x) (带括号的变量):单向do aa with x (变量):双向格式2:过程名(参数)set udfp to value:设置单向传递单向aa(5)aa(x+y)aa((x))aa(x)set udfp to refe :双向aa(5) :单向aa(x+y):单向aa((x)):单向aa(x) :双向变量的作用域公共变量:publicpublic 变量初值:.f.作用范围:全部都可以用私有变量:在他和他的下层可以使用直接定义的变量叫私有变量局部变量:local 变量名初值:.f.只能在本模块中使用建立和修改程序:modify command 运行程序:do 程序名do 查询.qprdo 菜单.mprdo form 表单报表(.frx)标签:显示文字表达式:域控件ole对象:图片建立报表:create report 报表名修改报表:modify report 报表名预览报表:report form 报表preview。
全国计算机等级考试二级VF全套二级VF学习讲义 (2)第一章前言――从零开始 (2)第一章数据库基础知识 (4)第2章V ISUAL F OX P RO 程序设计基础.......................... 错误!未定义书签。
第3章V ISUAL F OX P RO 数据库及其操作........................ 错误!未定义书签。
第4章关系数据库标准语言SQL .............................. 错误!未定义书签。
第5章查询与视图......................................... 错误!未定义书签。
第6章表单设计与应用..................................... 错误!未定义书签。
第7章菜单设计与应用..................................... 错误!未定义书签。
第8章报表的设计和应用................................... 错误!未定义书签。
第9章应用程序的开发和生成............................... 错误!未定义书签。
全国计算机等级考试二级VF笔试历年试卷 ..................... 错误!未定义书签。
2005年4月全国计算机等级考试笔试试题...................... 错误!未定义书签。
2005年9月全国计算机等级考试笔试试题...................... 错误!未定义书签。
2006年4月全国计算机等级考试笔试试题...................... 错误!未定义书签。
2006年9月全国计算机等级考试笔试试题...................... 错误!未定义书签。
2007年4月全国计算机等级考试笔试试卷...................... 错误!未定义书签。
2007年9月全国计算机等级考试笔试试卷...................... 错误!未定义书签。
2008年4月全国计算机等级考试笔试试卷...................... 错误!未定义书签。
2008年9月全国计算机等级考试笔试试卷...................... 错误!未定义书签。
2009年3月全国计算机等级考试笔试试卷...................... 错误!未定义书签。
2009年9月全国计算机等级考试二级笔试试卷.................. 错误!未定义书签。
公共基础讲义......................................... 错误!未定义书签。
第一章:数据结构与算法(约占10分) ..................... 错误!未定义书签。
第二章:程序设计基础(约占4分) ........................ 错误!未定义书签。
第三章:软件工程基础(约占8分)....................... 错误!未定义书签。
第四章:数据库设计基础(约占8分)....................... 错误!未定义书签。
全国计算机等级考试二级VF上机考试全真题库.................. 错误!未定义书签。
二级VF考试简述1、上机部分我们给学员提供的全是考试原题(一字不差),只要做完,每套题只要在80分上即可,别忘了考前2天下载新增上机题讲解。
2、笔试部分我们可弄不到试卷,但是VF考的次数太多了。
说句实话,每次VF部分的考题,有将近一半是历年试题中的原题,那相近的题就更多了。
3、对于大家认为很难的公共基础部分,除了视频讲解,在我们的学习资料里也提供了详尽的讲义和考前模拟题,只要求学员把提供的这些内容做会,不要再买其它的学习资料了。
不建议大家再买高教的教程书,尤其是公共基础教程,书上讲的很多就是压根不考的内容,或是难度太高二级VF学习讲义2009新版的教程与旧版的区别2009新版VF教程内容并没改变,只是原各章节打乱了,重新编排了一下以下是新版与旧版的区别。
如果有旧版书的就没必要再买新版书了。
第一章:VF数据库基础(含旧版的第一章和第二章内容)第二章:VF程序设计基础(含旧版的第三章和第七章内容)第三章:VF数据库及其操作(旧版第四章内容)第四章:关系数据库标准语言SQL (旧版第五章内容)第五章:查询与视图(旧版第六章内容)第六章:表单设计与应用(旧版第八章内容)第七章:菜单设计与应用(旧版第九章内容)第八章:报表的设计和应用(旧版第十章内容)第九章:应用程序的开发和生成(旧版第十一章内容)第十章:上机指导(上机练习软件的使用,上机考试题录像里有讲解)2009年11月姜久雨第一章前言――从零开始第一节:表的常用操作VFP的最大特点就是对数据的管理,所以也必须学习数据表的建立。
字段名姓名性别民族生日党员否成绩简历照片字段类型 C C C D L N M G字段宽度8 2 8 5.1二、表的常用操作1.打开ST.DBF ,首先拷贝生成一个名为STU.DBF的新表(以下所有操作均在STU下)2.打开STU.DBF,追加一条新记录,录入个人的信息3.增加一个字段:加分( I ) I 是整型字段4.在李四前面增加一条空记录5.删除第二条记录6.定位到首记录,并显示7.定位到末记录,并显示第二节: 表单基础(对象、属性、事件、方法)表单是VF的精华,本课只是让同学们对其建立一个感性的认识一、创建一个表单,名为:系统登陆.scx1. 要求给表单定义如下属性:Caption: 学生信息管理系统 Top: 0 Left: 0 Height: 227Width: 405 Autocenter: .T.AlwaysOnTop: .T.Picture: (给表单选一个背景图片) MaxButton: .F. MinButton: .F.2.添加第一个标签属性如下:Caption: 学生信息管理 ForeColor: 红色AutoSize: .T.FontName: 华文隶书 FontSize: 26 BackStyle: 0-透明Name: Lab13.添加第二个标签属性如下:Caption: 研制人:自个的名字 ForeColor: 绿色AutoSize: .T.FontName: 华文行楷 FontSize: 16 BackStyle: 0-透明Name: Lab24.添加一个命令按钮属性如下: Caption: 进入系统 Name: Com15.再添加一个命令按钮属性如下: Caption: 退出系统 Name: Com2设置CLICK代码:内容为: THISFORM.RELEASE 做完后保存到自个的文件夹下,运行第三节:表单中的数据处理一、创建第二个表单,名为学生信息处理.scx1. 要求给表单定义如下属性:Caption: 学生信息处理 Top: 0 Left: 0 Height: 327 Width: 505Autocenter: .T. AlwaysOnTop: .T. MaxButton: .F. MinButton: .F.设置表单的“数据环境”,添加表 "ST.DBF",将各字段手拖到表单中,并排列整齐.2.添加八个命令按钮,CAPTION的名称分别为“追加记录”、“修改记录”、“修改结构”、“首记录”、“下一条”、“上一条”、“末记录”、“退出”“追加记录”的单击代码为: APPEND BLANKTHISFORM.REFRESHTHISFORM.TEXT1.SETFOCUS“修改记录”的单击代码为: BROWSE“修改结构”的单击代码为: MODIFY STRUCTURE“首记录”的单击代码为: GO TOPTHISFORM.REFRESH“下一条”的单击代码为: SKIPTHISFORM.REFRESH“上一条”的单击代码为: SKIP -1THISFORM.REFRESH“末记录”的单击代码为: GO BOTTOMTHISFORM.REFRESH“退出”的单击代码为: THISFORM.RELEASE做完后保存到自个的文件夹下,运行一下结果。
大家会发现一个问题,当点击上一条、下一条命令按钮使记录指针移到末尾或首记录之前的话,系统会显示一些错误信息,影响我们的正常操作。
如何避免呢?我们可以在记录指针移动时,事先判断一下指针是否移到了首记录之前或末尾,若在首记录之前,则重新定位到首记录,若在末记录之后,则重新定位到末记录,就可以避免错误信息的出现。
具体处理为:“下一条”的单击代码改为: SKIPIF EOF ( ) THENWAIT "己到记录末尾" WINDOW TIMEOUT 1 GO BOTTOMENDIFTHISFORM.REFRESH“上一条”的单击代码改为: SKIP -1IF BOF( ) THENWAIT "己到首记录之前" WINDOW TIMEOUT 1GO TOPENDIFTHISFORM.REFRESH第一章数据库基础知识1.1 数据库基础知识一、计算机数据管理的发展在计算机中,数据管理指的是对数据进行分类、组织、编码、存储、检索和维护的过程。
数据库技术就是一种非常重要而且被广泛应用的计算机数据管理技术。
数据处理技术的发展阶段:人工管理阶段:数据与程序不具有独立性文件系统阶段:数据不能统一修改,会造成数据不一致数据库系统阶段:解决了数据共享问题,减少了数据冗余分布式数据库系统:数据库技术与网络通信技术的结合; 采用客户/服务器系统结构(C/S),使用开放数据库连接(ODBC)标准协议通过网络访问远端的数据库。
面向对象数据库系统:数据库技术与面向对象程序设计技术结合VF 从本质上说,是传统的关系型数据库系统,但它在用户界面、程序设计等方面进行了很好的扩充,提供了面向对象程序设计的强大功能。
二、数据库系统数据库(Database ,简称为DB ):保存在磁盘等外存介质上的数据集合,能被各类用户所共享、 数据冗余低、数据之间有紧密联系、 可通过数据库管理系统进行访问在VF 数据库系统中,数据以表的形式保存。
数据库应用系统:数据库应用系统是指系统开发人员利用数据库系统资源开发的面向某一类实际应用的软件系统。
数据库管理系统(Database Management System ,简称DBMS ):是位于用户与数据库之间的一个数据管理软件。
VF 和ACCESS 都是数据库管理系统。
即用户不能直接接触数据库,而只能通过DBMS 来操作数据库。