VF冲刺.docx
《VF冲刺.docx》由会员分享,可在线阅读,更多相关《VF冲刺.docx(20页珍藏版)》请在冰豆网上搜索。
VF冲刺
二级VF冲刺
知识点串讲:
10种设计器:
表、数据库、查询、视图、表单、菜单、
快捷菜单、报表、数据环境、类。
常见的sql语句:
创建表:
createtable表名(字段名类型(宽度),字段名类型(宽度),……)
增加字段:
altertable表名add字段类型(宽度)
修改字段:
altertable表名alter字段&&修改类型、长度、小数位数
删除字段:
altetable表名drop字段
替换字段:
altertable表名renamecolumn旧字段to新字段
复制记录:
select*fromAintotableBdbf
插入记录:
insertinto表名values(值)尾部插入
删除记录:
deletefrom表名where条件逻辑删除,若省略条件,针对全部所有.
更新记录:
update表名set表达式where条件若省略条件,针对全部所有.
数据查询:
本书的核心
Sql:
结构化、高度非过程化的查询语句
功能:
数据查询:
select
数据定义:
create/add/drop/
alter/renamecolumn
数据操纵:
insert/dele/update
数据控制:
VF不支持数据控制
简单查询:
条件:
where条件
值域:
between小and大前n个
排序:
orderby字段asc/desctopn
空值:
where字段isnull
通配/模糊:
where字段like通配符
%:
0个或多个_:
一个
分组查询:
groupby字段having条件
多表查询:
联接/谓词/嵌套/超联
a.sele字段from表1别1,表2别2
where别1.?
=别2.?
And查询条件
b.sele字段from表1whereexist;
(sele*from表2where?
=表1.?
And查询条件)
c.sele字段from表1where字段in
(sele字段from表2wher查询条件)
d.sele字段from表1别1innerjoin表2别2on别1.?
=别2.?
Where查询条件
注:
在联接查询、超联查询中若不取别名,请直接用表名.
VF题库分类
机试题型:
基本操作题3018(4455)
简单应用题4024(1212)
综合应用题3018
第一类:
基础类
题型:
新建(项目、数据库、表)、表的添加、移除、索引、关系、参照完整性、字段有效性、修改表单、增加字段、简单sql、编辑参照完整性、
14567111332434850—5659-617690--97
1.1.1:
文件新建项目新建文件输入:
供应保存
1.1.2:
项目的组成:
全部:
数据:
数据库自由表查询
文档:
表单报表标签
代码:
程序api库应用程序
其他:
菜单文本文件其他文件
供应项目数据数据库添加选择:
供应零件选中供应零件修改
1.1.3:
永久联系:
前提:
数据库中建立
主表:
建立主索引(带钥匙)
子表:
建立普通索引
主索引拖动到普通索引即可.
如何建立主索引:
选中表右键修改选零件号升切换至索引类型:
主索引.
如何建立普通索引:
………普通索引
1.1.4:
字段有效性:
必须针对于数据库表
组成:
规则:
逻辑表达式
信息:
“必须是字符型”
默认值:
类型匹配,一一对应
操作步骤:
选中表右键修改选“字段”字段有效性:
规则:
数量>0and数量<9999
信息:
“数量超范围”
注:
若有效性规则完成后,不能确定选是,则可能三种错误:
a.选择字段有误;
b.规则或信息或默认值写法有误;c.表中内容有误.
4.1.1:
文件新建数据库输入库名:
bookauth保存
库中表的添加:
库空白处右键添加
Addtable表名
4.1.2:
选中A表右键修改选”作者编号”升切换至索引索引名:
pk类型:
主索引
大小写区分:
输入表名、索引名、sql不区分大小写;
表中的内容、表单的name区分大小写.
4.1.3:
a.选B表右键修改选图书编号升索引名:
rk类型:
普通
b.选B表右键修改选作者编号升确定
4.1.4:
pk拖动至作者编号
5.1:
文件打开选”文件类型””数据库”rate“独占”确定
5.1.3:
<>、#、!
=:
不等号
C右键修改选”持有数量”有效性:
规则:
持有数量<>0
信息:
”持有数量不能为0”
5.1.4:
是否可用:
enabled
是否可视:
visible
是否居中:
autocenter
文字自动大小:
autosize
是否移动:
movable
是否确认:
default
是否模式表单:
windowtype
是否只读:
readonly
是否顶层表单:
showwindow
操作步骤:
选中登陆右键属性其他:
enabled:
.t.保存
6.1.4:
选择用户名、口令:
属性fontname:
黑体
7.1.3:
选中教师右键删除:
移去:
removetable表名(变为自由表)
删除:
removetable表名dele(永久删除)
11.1.2:
选o表右键修改选”订单日期”有效性:
默认值:
date()
13.1.2:
选Course右键修改
字段名类型长度小数位数
开课学期N20
13.1.4:
选中成绩null对钩默认值:
.null.
32.1.3:
数据库空白处右键新建表输入表名:
customer保存(调出表设计器)
35.1.新建文件文件:
sql1.txt
sele*fromstock_slintotablestock_bk
insertintostock_bkvalues("600028",4.36,4.60,5500)
updatestock_bkset现价=8.88where股票代码="600007"
delefromstock_bkwhere股票代码="600000"
注:
文本文件保存必须全名(不能省.txt),其他文件保存一律省略扩展名.
43.1.1:
选中格式对齐顶边对齐
表单中选中多个:
可空白处拖选;
选一个按shift再选
43.1.2:
是否确认default(其他)
43.1.3:
表单标题:
空白处属性布局:
caption:
表单操作
名称、控件名name(其他)
空白处属性其他:
name:
myform
Click事件:
运行表单时单击引发的事件
43.1.4:
双击确定:
Thisform.height=val(thisform.text1.value)
注:
文本框初始值均为字符型.
Val字符型转换为数值型
48.1.3:
建立普通索引,索引名为xyz,索引表达式为:
str(组别,1)+职务,升序
注:
索引组合,前提条件:
类型匹配.
Eg.学号C,姓名c,年龄n,出生日期d
建立学号和姓名的索引:
ab,学号+姓名
学号和年龄的索引:
学号+str(年龄,2)
姓名和出生日期的索引:
姓名+dtoc(出生日期)
操作步骤:
选中e表右键修改
选组别升索引索引名:
xyz表达式:
str(组别,1)+职务
50.1.4:
编辑参照完整性前提:
数据库中有永久关系
数据库清理数据库,若不能清理,则:
closedatabase(关闭数据库),重新”独占”打开数据库,再次清理.==>数据库编辑参照完整性:
组成:
更新规则:
级联、限制、忽略
删除规则:
级联、限制、忽略
插入规则:
限制、忽略
54.1.3:
Ctrl+y
确定否显示浏览显示追加方式:
输入记录
56.1.1:
凡打开项目是否移动为新目录”是”
59.1.2:
选中c右键修改选中性别
字段有效性:
规则:
性别$”男女”<==>
性别=”男”or性别=”女”
信息:
”性别必须是男或女”
默认值:
”女”
59.1.4:
若三表以上参照完整性,分别选.
第二类:
向导类
工具向导查询向导
表单向导
一对多表单向导
报表向导
一对多报表向导
14173034353842474854
55596067707276828384
60.2.2:
工具==>向导报表一对多报表向导(父表、子表)
各种文件类型:
.dbf:
表/自由表/二维表
Foxhelp.chm:
VF帮助文件
.fpt:
表的备注文件(备注型字段、通用型字段)
.prg:
程序/命令文件
.exe:
可执行文件
.app:
VF应用程序
.fxp:
VF编译文件
.dbc:
数据库
.qpr:
查询
.vue:
视图
.scx:
表单
.mnx:
菜单
.mpr:
菜单程序文件/菜单生成文件
.frx:
报表
.pjx:
项目
.comdll:
动态链接库
38.1.3:
Distinct:
消除重复记录(select之后)
Selectdistinct*fromtabainto
Tabletabc
70.1.3:
各种执行/运行:
程序:
do程序名.prg(可省略)
查询:
do查询名.qpr
表单:
doform表单名
菜单:
do菜单名.mpr预览
报表输出:
reportform报表名preview
项目的连编:
buildapp/exe文件名from项目名
第三类:
查询、视图设计器类(核心)
一.查询设计器的使用方法:
a.打开查询设计器(文件新建查询新建文件)
b.根据题意添加所需要的表或视图
c.根据添加的表依次选择:
字段/联接/筛选/排序依据/分组依据/杂项(去掉重复、前n个)
d.选择存储依据(查询查询去向)
(表、临时表、文本文件、打印机)
屏幕
e.保存并运行查询(若保存必运行,若运行不一定保存)
f.查询查看sql(复制粘贴修改)
1.需要保存且运行的查询题型:
47
3891015161720212225262831323337394042-505659687276777880-8385-8892939596
3.1.2:
删除视图:
a.打开数据库选中视图右键删除
b.dropview视图名
3.1.4:
添加命令按钮:
caption(标题):
关闭
凡表单的关闭、取消、退出、返回一律:
thisform.release
3.2.1:
视图建立前提条件:
打开数据库,且数据库中有表空白处右键新建本地视图/新建远程视图
操作步骤:
空白处右键新建本地视图添加(student.score1)字段(学号、姓名、系部)联接(默认)筛选(成绩
Isnull)保存(new_view)
3.2.2:
新建表单显示数据环境(添加course)拖动表至表单中选中表格属性数据recordsourceypte:
0保存表单:
myform3
注:
表单:
文件名、表单名保存的名字
名称、控件名属性其他:
name
标题属性布局:
caption
3.3:
平均过程:
操作步骤:
新建查询添加(course\score1)字段(课程名,表达式:
avg(成绩)as平均成绩)排序(课程名:
升)分组(课程名)查询查询去向:
表:
newtable查询查看sql(复制粘贴到平均过程)
凡菜单的退出、返回、取消、关闭,一律:
setsysmenutodefault
凡菜单每修改必生成(菜单生成)
运行菜单:
Sum/max/min/avg/count=cnt:
计数
9.2.2:
新建查询:
添加(R\C)字段(姓名\表达式:
Sum(基准价*持有数量)as人民币价值)
排序(人民币价值:
降序)分组(姓名)查询查询去向(表:
results)
运行查询但不保存.
注:
使用sqlselect命令完成……查询,90%--95%都可新建查询,运行但不保存.
15.2.1:
筛选:
字段名条件实例逻辑
BDS:
year(出生日期)=1982and
民族=“汉”
15.2.2:
筛选:
字段名条件实例逻辑
数学<60or
英语<60or
信息技术<60
注:
视图多更新条件,少查询去向.
如何将视图结果存储于表中:
前提:
保存视图并关闭:
Sele*from视图名intotable表名
sele*fromview1intotabletable2
17.1.2:
宽:
width高:
height
17.1.3:
顶边距:
top:
100
左边距:
left:
200
17.1.4:
显示tab键次序
17.2.2:
筛选:
字段名否条件实例
民族=“汉”
排序:
英语降序
学号升序
21.1.3:
显示数据环境依次添加xuesheng、chengji
21.1.4:
xuesheng.学号拖动到chengji.学号
确定
21.2.1:
筛选:
字段名条件实例逻辑
数学>=85and
英语>=85and
信息技术>=85or
数学>=90and
英语>=90and
信息技术>=75
21.2.2:
字段名条件实例
BDS:
LEFT(xuesheng.学号,8)=
“20001001”
25.2.1:
排序:
金额降序
杂项:
去掉全部选10
28.1.2:
选中单选按钮组==>属性==>布局:
buttoncount:
3
控件个数
第四类:
改错题:
(表单改错(一般均为属性)、程序改错(查询偏多))
做题方法:
a.看清题意;
b.修改加注释的语句(第几行错误、&&……、**……);
c.不得随意增加、修改、删除语句行及结构;
d.上下文结合;
e.保存并运行。
111220—2326—2931—33363740—515770717375
28.2.1:
A[1]a
(1)结果存在于数组中
查询去向:
a.tofile文件名文本文件
b.toprinter打印机
c.intotable/dbf表名自由表
d.intocursor表名临时表
e.intoarray数组名数组中
28.3.2:
选中列表框:
属性数据:
rowsourcetype:
3(sql)
Rowsource:
select系名from学院表
Intocursormylist
注:
凡做:
文本框中输入值、组合框或列表框中选中值,结果以输入值或选中值命名的表存在:
一律:
K=alltrim(thisform.text1.value)
K=bo1.value
K=thisform.list1.value
Sele…………intotable&k
&:
脱引号函数,去掉字符中的引号.
操作步骤:
建立查询添加学院表、教师表双击所需字段筛选:
系名=”计算机”排序:
职工号升查看sql粘贴至生成表的click修改
保存运行.
32.2.1.1:
选中text1属性数据:
Value:
=date()
32.2.1.2:
选中表格属性数据:
Recordsourcetype:
4
recordsource
第五类:
分组having类(分组后的条件限定)
筛选:
表中存在的字段where
分组后的满足条件:
表中不存在的字段
Having必须和groupby连用
Topn必须和orderby连用
4323661767778
32.2.2:
操作步骤:
建立查询添加两表
字段:
组别
BDS:
SUM(金额)as总金额
Max(金额)as最高金额
Avg(金额)as平均金额
联接:
默认
筛选:
字段名(BDS)条件实例
Year(签订日期)=2001
排序:
总金额降序
分组:
组别
满足条件:
总金额>=500
查询查询去向=>表tableone
保存查询queryone
最后运行
32.3:
菜单的追加:
显示常规选项
替换(默认)
追加
在……之前
在……之后
查询:
添加orders字段:
Year(签订日期)as年份
Month(签订日期)as月份
Sum(金额)as合计
排序:
年份降序
月份升序
分组:
年份
月份
查询查询去向表:
tabletwo
查看sql粘贴至统计过程中
生成并运行
domymenu.mpr
程序==>运行==>选择?
?
.mpr
37.1.3:
若没有报表控件工具栏:
显示……
A:
菜单一览表
查询设计器类
第二类:
凡用sql语句完成如下查询,90%--95%可新建查询,该查询不保存.只需要结果或sql命令.
37.2.1:
字段名:
顾客号
Sum(数量*单价)as消费金额合计
排序:
消费金额合计降序
分组:
顾客号
37.2.2选中列表属性布局:
Columncount:
1(表格、组合框、列表框的列数)
数据:
rowsourcetype:
7(文件)
凡做选项按钮组(单选按钮组),一律do
Case编写,格式如下:
Docase
casethisform.optiongroup1.value=1
…………
casethisform.optiongroup1.value=2
…………
endcase
选中单选双击过程:
click(单击引发的事件)
37.3.1:
新建查询添加结帐表字段:
……筛选:
结帐日期={^2005-10-01}
排序:
消费金额:
降序查询去向:
表:
tabc查看sql粘贴至查询下.
注:
文本框初始值为字符型:
K=alltrim(thisform.text1.value)C
K=val(thisform.text1.value)N
K=ctod(thisform.text1.value)D
查询:
setcenton&&年份4位
setdatetoymd&&年月日
setmarkto"-"&&以"-"分割
k=ctod(thisform.text1.value)
SELECT结帐表.顾客序号,结帐表.顾客姓名,结帐表.单位,结帐表.消费金额FROM点菜!
结帐表;
WHERE结帐表.结帐日期=k;
ORDERBY结帐表.消费金额DESC;
INTOTABLEtabc.dbf
表单中的表格显示表的内容:
Thisform.grid1.recordsorucetype=4
Thisform.grid1.recordsoruce=;
[sele…intocursorlsb(临时表)]
显示:
thisform.grid1.recordsource=;
[sele*fromtabcintocurslsb]
注:
设计完成后,文本框中输入2005-10-01分别执行.
40.1.3:
如何创建快速报表:
文件新建报表新建文件;
打开表;
报表快速报表.
40.1.4:
如何用sql语句设置表的有效性规则:
Altertable表名alter字段setcheck规则error信息
Altertable表名alter字段setdefault默认值
40.2.1:
关键字:
主索引/主键/主码:
primarykey
第六类:
表单菜单调用类:
a.表单中调用下拉菜单
b.表单中调用快捷菜单
12406162666873
一.如何在表单中调用下拉菜单:
a.菜单显示常规选项选中顶层表单;
b.表单1.属性布局:
showwindow:
2
2.表单load/init:
调用代码:
Eg.do菜单名.mprwiththis,.t.
二.如何在表单中调用快捷菜单
a.菜单中用到表单写表单文件名;
b.表单:
rightclick(右单击事件)调用代码:
eg.do菜单名.mpr
空白处双击过程:
rightclick
查询步骤:
新建查询添加两表字段:
系名,avg(工资)as平均工资排序:
平均工资:
降序分组:
系名杂项:
去掉全部:
选3/5查询去向:
表:
sa_three/sa_five查看sql粘贴至”取前3名”/5过程生成
最后运行表单.
SELECTTOP3学院表.系名,AVG(教师表.工资)as平均工资;
FROM大学管理!
学院表INNERJOIN大学管理!
教师表;
ON学院表.系号=教师表.系号;
GROUPBY学院表.系名;
ORDERBY2DESC;
INTOTABLEsa_three.dbf
42.2.2:
新建查询添加C字段:
……筛选:
年龄<=30排序:
年龄:
降序查询:
查询去向:
屏幕:
文本文件:
cut_ab.txt
运行
42.3:
如何设置下划线字母/访问键:
\<字母键eg:
查询(\42.3.2:
选中文本框属性数据:
Value:
=date()
42.3.3:
查询……筛选:
日期>={^2003-03-08}
SELECTCustomer.会员号,Customer.姓名,SUM(Orderitem.数量*Article.单价)as总金额FROMecommerce!
customerINNERJOINecommerce!
orderitemINNERJOINecommerce!
articleONOrderitem.商品号=Article.商品号ONCustomer.会员号=Orderitem.会员号WHEREOrderitem.日期>=kGROUPBYCustomer.会员号ORDERBY3INTOTABLEdbfa.dbf
48.2.1.2:
组合框:
多:
style:
0:
下拉组合(可选可输)
2:
下拉列表(只选不输)
组合框:
rowsourcetype:
6:
字段
Rowsource:
选:
E.姓名
表格:
recordosurcetype:
4(SQL)
Recordsource:
[sele……]
Interactivechange:
同步事件
48.2.2:
字段:
姓名as签订者
48.3:
第一步:
求各组的订单金额和,以组分组.字段,组别,sum(金额)as合计,存入新表:
new.运行复制sql至统计过程;
第二步:
通过新表new和e表查询:
字段:
组别,姓名as负责人,合计
筛选:
职务=”组长”
49.1.2:
显示tab键次序
第七类:
其他类:
a.新建方法类:
15192349
如何新建方法:
表单新建方法程序输入方法名添加(新建的方法默认为属性全部最后一个)方法代码(选中新建方法名双击输入)调用方法(thisform.方法名)
请输入(\
注:
视图的建立和存储必须依赖于数据库,视图是一个虚拟表,不能修改表结构.
56.2.1:
如何用命令创建视图:
Createview视图名assele……
方法:
空白处右键新建本地视图完成视图操