vfp.docx
- 文档编号:7672456
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:13
- 大小:1.16MB
vfp.docx
《vfp.docx》由会员分享,可在线阅读,更多相关《vfp.docx(13页珍藏版)》请在冰豆网上搜索。
vfp
1.的命令:
select*fromstock_slintotablestock_bk&&stock_bk不需要新建
2.insertintostock_bkvalues(“600028”,4.36,4.60,5500)
3.updatestock_bkset现价=8.88where股票代码=’60007’
4.deletefromstock_bkwhere股票代码=’600000’
该题可用查询做出来,复制SQL语言到菜单”计算”中。
这种题型常见,可以偷懒。
计算菜单的过程中代码为:
opendatabasexuesheng3
usecjb
deletefromcjb
pack
SELECTXs.学号,Xs.班级,Xs.姓名,Cj.课程名,Cj.成绩;
FROMxuesheng3!
xsINNERJOINxuesheng3!
cj;
ONXs.学号=Cj.学号;
WHERECj.课程名="计算机基础";
ORDERBYCj.成绩DESCintoarrayzz
insertintocjbfromarrayzz&&为什么用一个数组做媒介,而不是直接用intotable语句,原因就是:
cjb已经存在了,如果用select….Intotablecjb会覆盖原有的cjb表。
而采用select…intoarrayzz再来一句insertintocjbfromarrayzz则不会覆盖原有的表,只是把新得到的记录追加在原表的后面
closedatabase
第二套
update表名set修改字段值where筛选条件
update学生set出生日期={^1983/05/01}where姓名=”王三风”
为什么要执行查询:
如果你不执行,那个记录是导不到表query2.
按钮的名称:
是一个属性名name..标题也是一个属性名:
caption
用到了一个notin结构。
这种题型不多见。
统计菜单中的程序为:
closedatabasesall&&要求wh1为自由表,这样的话,要关闭数据库,否则建立的表为数据库表
Select*fromckwhere仓库号notin(select仓库号fromZGwhere工资<=1220)and仓库号in(select仓库号fromZG)INTOTABLEWH1ORDERBY面积
&¬in表示排除的意思:
本题排除掉有一个员工工资<=1220的仓库,这样的意思就是得到所有员工的工资都大于1220.
&&in是表示范围应在in的后面:
因为有的仓库是没有职工的,因此,我们仓库号必须出现在zg表中,才说明这个仓库有职工
第三套
答案:
“统计”菜单的代码为:
closedatabase
select仓库号,avg(工资)as平均工资fromZGgroupby仓库intocursorzz
selectZG.*FROMzg,zzwherezg.仓库号=zz.仓库号and工资<=平均工资intotableemp1
举一仿三:
检索出成绩<本门课程平均成绩的学生信息,并把结果发送到表temp中,temp的结果同学生表结构。
第四套
答案:
菜单”查询”中的代码为:
(注意本题可用三个表的内联接查询自动生成SQL语句,然后把SQL语句复制过来就可以了)
closedatabase
SELECTDgd.*;
FROMzgINNERJOINdgd;
INNERJOINgys;
ONDgd.供应商号=Gys.供应商号;
ONZg.职工号=Dgd.职工号;
WHEREGys.地址="北京";
ANDZg.工资>1230;
ORDERBYDgd.总金额DESC;
INTOTABLEord1.dbf
第五套
“查询”菜单代码:
closedatabase
selectZG.职工号,工资fromZG,DGD;
whereZG.职工号=DGD.职工号and供应商号in(‘s7’,’s4’,’s6’);&&得到供应商号是S7或者S4或者S6
groupbyZG.职工号HAVINGCOUNT(*)=3;&&按照职工号分组,一个职工分成一个组,对应只有三个供应商号
ORDERBY工资DESC;&&按照工资降序排序
INTOtableGJ3&&把查询结果导入表GJ3
第六套
“数据输出”菜单中代码为:
opendatabasestu
select*fromstduent
closedatabase
第七套
“计算”菜单的代码由两部分构成:
&&第一部分实现
(1)的学分计算
Updatescoreset学分=0
Updatescoreset学分=学分+2where物理>=60
Updatescoreset学分=学分+3where高数>=60
Updatescoreset学分=学分+4where英语>=60
&&第二部分实现
(2)的生成一个新表xf
select*fromscore;&&该表字段与SCORE表一致,题目有提示
orderby学分,学号desc;&&按照学分升序,学号降序
intotablexf&&结果导入表XF
第八套
“计算”菜单的代码为:
closedatabase
usestock_fk
&&题目
(1)的功能如下:
deletefromstock_fk
pack&&先把stock_fk清空,题目要求的
select股票代码,(买入价-现价)*持有数量as浮亏金额fromstock_slwhere买入价>现价intoarrayzz&&
insertintostock_fkfromarrayzz&&这样就不会覆盖ZZ表,只把求得的记录追加在stock_fk的后面
&&套路:
先把记录导入数组zz,然后把记录从zz导入stock_fk,同第六套
&&题目
(2)的功能如下:
selectsum(浮亏金额)as浮亏金额fromstock_fkintostock_z&&这是第二个问的功能
第九套
”统计”按钮的代码为:
&&题目
(1)的代码如下:
(考虑本题的时候,不要想的过于复杂,可以直做一条记录的求平均分的代码,然后把这段代码放入scan…..endscan里,其它记录也会做同样处理
Usescore_fs
Scan
A=0&&表示门数
Pjf=0&&平均分,初始等于总分。
最后用pjf/A得到平均分,
If物理>0
Pjf=pjf+物理
A=a+1
Else
If高数>0
Pjf=pjf+高数
A=a+1
Else
If英语>0
Pjf=pfj+英语
A=a+1
Endif
Endif
Ifa>0
平均分=平均分/a
Else
平均分=0
Endscan
&&题目
(2)的代码如下:
select学号,平均分fromscore_fsorderby平均分desc,学号intotablePjf
注意:
本题不能用上题同样的UPDATE结构,因为他有个条件是成绩不能低于零分,用UPDATE做的话,这个功能做不出来。
因为:
Updatescore_fsset平均分=物理+高数+英语/3这个语句对成绩等于零分的起不了作用
处理记录的时候用scan…endscan处理记录的时候,你想着只对当前这一条记录处理,其它记录的处理跟这条记录的处理是一样的,不用再考虑。
第十套
”计算”菜单的代码为:
考虑本题的时候,不要想的过于复杂,可以直做一条记录的求解代码,然后把这段代码放入scan…..endscan里,其它记录也会做同样处理
&&题目
(1)的代码如下:
closedatabase
Usestock_cc
Scan
Aa=股票代码
Selectsum(本次数量)as买进数量fromstock_mmwhere股票代码=Aaand买卖标记=.t.intoarrayb
Selectsum(本次数量)as卖出数量fromstock_mmwhere股票代码=Aaand买卖标记=.F.intoarrayC
SELECTSTOCK_CC
持仓数量=b
(1)-c
(1)&&b
(1)表示买进数量,c
(1)卖出数量,注意持仓数量是stock_cc中的一个字段
Endscan
&&题目
(2)的代码如下:
select股票代码,min(持仓数量)as持仓数量fromstock_ccintotablestock_x&&数据库已经被关闭了,因此,stock_x是一个自由表
本题又是scan…endscan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vfp