ON Currency_sl.外币代码 = Rate_exchange.外币代码; WHERE Currency_sl.姓名 =thisform.text1.value; ORDER BY Currency_sl.持有数量; INTO TABLE &x\第四十八套————基本操作
1. 利用快捷菜单设计器创建一个弹出式菜单one(如图1所示),菜单有两个选项。“增加”和“删除”,两个选项之间用分组线分隔。 4. 使用SQL语句为“评委表”的“评委编号”字段增加有效性规则:评委编号的最左边两位字符是11(使用LEFT函数),并将该SQL语句存 ALTER TABLE 评委表 ALTER 评委编号 SET CHECK LEFT(评委编号,2)=\
保存程序文件为\并运行。 简单应用:
在考生文件夹下完成下列操作:
1. 建立一个文件名和表单名均为two的表单,然后为表单two建立一个名为quit的新方法,并在该方法中写一条语句Thisform.release;最后向表单中添加一个命令按钮(Command1),并在该命令按钮的Click事件中写一条语句调用为表单建立的新方法quit。
步骤3:向表单中添加一个命令按钮(Command1),在此命令按钮的Click事件中输入代码:ThisForm.quit。
2. 使用SQL语句计算每个歌手的最高分、最低分和平均分,并将结果存储到result.dbf表中(包含歌手姓名、最高分、最低分和平均分4个字段),要求结果按平均分降序
答案:SELECT 歌手表.歌手姓名, MAX(评分表.分数) AS 最高分,; MIN(评分表.分数) AS 最低分, AVG(评分表.分数) AS 平均分; FROM 歌手表,评分表 ;
WHERE 歌手表.歌手编号 = 评分表.歌手编号; GROUP BY 歌手表.歌手姓名; ORDER BY 4 DESC; INTO TABLE result 综合应用:
2. 为“生成表”命令按钮编写程序,程序的功能是根据简单应用题生成的result.dbf表按指定的排序方式生成新的表,单旋钮选择“按评分升序”时,依次按最高分、最低分和平均分3个字段升序排序生成表six_a,单旋钮选择“按评分降序”时,依次按最高分、最低分和平均分3个字段降序排序生成表six_d。
3. 运行表单,选择“按评分升序”单选钮,单击“生成表”命令按钮;再选择“按评分降序”单选钮,单击“生成表”命令按钮(注意必须执行)。
步骤3:编写\生成表\命令按钮的Click事件代码: DO CASE
CASE ThisForm.Optiongroup1.VALUE=1 SELECT *; FROM result;
ORDER BY Result.最高分, Result.最低分, Result.平均分; INTO TABLE six_a
CASE ThisForm.Optiongroup1.VALUE=2 SELECT *; FROM result;
ORDER BY Result.最高分 DESC, Result.最低分 DESC, Result.平均分 DESC; INTO TABLE six_d ENDCASE
第五十套————基本操作 简单应用:
4) 在表单的Init事件中写两条语句,第一条语句将Grid1的RecordSourceType属性设置为0(即数据源的类型为表),第二条语句将Grid1的RecordSource属性设置为student,使得在表单运行时表格控件中显示表student 的内容(注:不可以写多余的语句)。
步骤4:编写表单的Init事件代码如下。 ThisForm.Grid1.RecordSourceType=0 ThisForm.Grid1.RecordSource=\
步骤5:编写\退出\命令按钮的Click事件代码:ThisForm.Release。
步骤6:保存并运行表单,查看表单的运行效果。
2. 使用SQL SELECT语句查询每个学生的平均成绩,结果包括\姓名\(出自student表)和\平均成绩\(根据score表的成绩字段计算)两个字段,并按\平均成绩\字段降序,\平均成绩\相等时按姓名升序将查询结果存储在表avgscore.dbf中。
(2)【操作步骤】
在命令窗口中输入下列程序并运行:
SELECT Student.姓名, AVG(Score.成绩) AS 平均成绩; FROM score,student ;
WHERE Score.学号 = Student.学号; GROUP BY Student.姓名; ORDER BY 2 DESC; INTO TABLE avgscore 综合应用
在考生文件夹下完成如下操作:
4. 打开表单文件three,然后完成如下操作:
1) 为\生成数据\命令按钮(Command1)写代码:用SQL命令查询视图viewsc的全部内容,要求先按\学号\升序、再按\成绩\降序排序,并将结果保存在result.dbf表文件中;
2) 为\运行报表\命令按钮(Command2)写代码:预览报表three.frx; 3) 为\退出\命令按钮(Command3)写代码:关闭并释放表单。
最后运行表单three,并一定通过\生成数据\命令按钮产生result.dbf表文件。
答案:【操作步骤】 。
步骤5:打开表单文件three,为\生成数据\命令按钮(Command1)编写代码如下: SELECT * FROM viewsc ORDER BY 学号,成绩 DESC INTO TABLE result 为\运行报表\命令按钮(Command2)编写代码如下: report form three preview
为\退出\命令按钮(Command3)编写代码如下: ThisForm.Release
保存并运行表单three,依次单击表单中的3个命令按钮。 第五十一套————基本操作
2. 使用SQL命令查询小于30岁(含30岁)的会员的信息(来自表Customer),列出会员号、姓名和年龄,查询结果按年龄降序排序存入文本文件cut_ab.txt中,SQL命令存入命令文件cmd_ab.prg。 SELECT Customer.会员号, Customer.姓名, Customer.年龄;
FROM customer;
WHERE Customer.年龄 <= 30; ORDER BY Customer.年龄 DESC; TO FILE cut_ab 综合应用:
2. 按从左至右的顺序三个选项卡的标签(标题)的名称分别为\客户表\、\商品表\和\订单表\,每个选项卡上均有一个表格控件,分别显示对应表的内容(从数据环境中拖拽,客户表为Customer、商品表为Article、订单表为OrderItem)。
步骤1:步骤3:在页框上右击—“编辑”,选中page1,改它的caption属性为:客户表;选中page2,改它的caption属性为:商品表;选中page3,改它的caption属性为:订单表。同样还是在页框的编辑状态下,拖着数据环境中的每一个表的标题栏拖动到相应的页面上即可。 第七十四套---——基本操作 简单应用:
1. 将customer1表中的全部记录追加到customer表中,然后用SQL SELECT语句完成查询:列出目前有订购单的客户信息(即有对应的order_list记录的customer表中的记录),同时要求按客户号升序排序,并将结果存储到results 表中(表结构与customer表结构相同)。
答案:1.首先打开customer表,”表”菜单——“追加记录”——来源于customer1表——确定,即把customer1表中的记录全部追加到了customer表中;然后在命令窗口中输入以下代码: select * from customer where 客户号 in;
(select 客户号 from order_list) order by 客户号 into table 2. 打开并按如下要求修改form1表单文件(最后保存所做的修改):
第1处:是判断两个文本框的值是否相同,所以应改为:If Thisform.Text1.Value = Thisform.Text2.Value 第2处:是关闭表单,所以应改为:Thisform.Release 综合应用;
使用报表设计器建立一个报表,具体要求如下:
(1) 报表的内容(细节带区)是order_list表的订单号、订购日期和总金额;
(2) 增加数据分组,分组表达式是\客户号\,组标头带区的内容是\客户号\,组注脚带区的内容是该组订单的\总金额\合计; (3) 增加标题带区,标题是\订单分组汇总表(按客户)\,要求是3号字、黑体, 括号是全角符号。 (4) 增加总结带区,该带区的内容是所有订单的总金额合计。 最后将建立的报表文件保存为report1.frx文件。
提示:在考试的过程中可以使用\显示→预览\菜单查看报表的效果。 答案:【操作步骤】
步骤1:单击常用工具栏中的\新建\按钮,文件类型选择\报表\,打开报表设计器。单击文件菜单栏中的\另存为\按钮,在弹出\保存\对话框中输入\即可。
步骤2:在\报表设计器-report1.frx\中,单击鼠标右键,在弹出菜单中选择\数据环境\菜单项,在\数据环境设计器-报表设计器-report1.frx\窗口中,再单击鼠标右键,在弹出菜单中选择\添加\菜单项,在\添加表或视图\对话框中,选择表\,单击\添加\按钮,再关闭\添加表或视图\对话框,接着选定表\。
步骤3:单击\报表\\标题/总结\菜单项,接着显示\标题/总结\对话框,在对话框的\报表标题\处选中\标题带区\,在\报表总结\处选中\总结带区\,选完这两项后,单击\确定\按钮。
步骤4:单击\报表\\数据分组\菜单项,在\数据分组\对话框中,单击\按钮,接着显示\表达式生成器\对话框,在此对话框中双击\客户号\项,并在\按表达式分组记录
步骤5:在\报表设计器-report1.frx\中,单击鼠标右键,在弹出菜单中选择\数据环境\菜单项,在\数据环境设计器\中,选定字段\订单号\并按住不放,接着移动鼠标至\细节\带区,松开鼠标,按同样方法来处理字段\订购日期\和\总金额\,接着移动\细节\带区来调整位置。 步骤6:在\数据环境设计器\中,选定字段\客户号\并按住不放,接着移动鼠标至\组标头1:客户号\带区,松开鼠标。
步骤7:在\数据环境设计器\中,选定字段\总金额\并按住不放,接着移动鼠标至\组注脚1:客户号\带区,松开鼠标,接着在\组注脚1:客户号\带区选定中\总金额\并单击鼠标右键,在弹出菜单中选择\属性\菜单项,在\报表表达式\对话框中单击\计算\按钮,在\计算字段\对话框中,选定\总和\单选钮,再单击\确定\按钮返回到\报表表达式\对话框中,接着再按\确定\返回到\报表设计器-report1.frx\窗口中。 步骤9:在\标题\带区增加一个标签\订单分组汇总表(按客户)\,再选定这个标签,单击\格式\\字体\菜单项,接着选择\黑体\和\三号\,最后按\确定\按钮。(注意括号是全角状态下的,即在输入法中点一下半个月亮,使其变成整个月亮为全角)
步骤10:在\数据环境设计器\中,选定字段\总金额\并按住不放,接着移动鼠标至\总结\带区,松开鼠标,接着在\总结\带区选定中\总金额\并单击鼠标右键,在弹出菜单中选择\属性\菜单项,在\报表表达式\对话框中单击\计算\按钮,在\计算字段\对话框中,选定\总和\单选钮,再单击\确定\按钮返回到\报表表达式\对话框中,接着再按\确定\返回到\报表设计器-report1.frx\设计窗口中。 第七十五套————基本操作 简单应用:
1. 列出客户名为\三益贸易公司\的订购单明细(order_detail)记录(将结果先按\订单号\升序排列,同一订单的再按\单价\降序排列),并将结果存储到results表中(表结构与order_detail表结构相同)。 SELECT Order_detail.*;
FROM order_detail INNER JOIN order_list; INNER JOIN customer ;
ON Order_list.客户号 = Customer.客户号 ; ON Order_detail.订单号 = Order_list.订单号; WHERE Customer.客户名 = \三益贸易公司\
ORDER BY Order_detail.订单号, Order_detail.单价 DESC; INTO TABLE results.dbf
2. 考生目录下有一个form1表单文件,其中三个命令按钮click事件下的语句都是错误的,请按如下要求进行修改(最后保存所做的修改): 要求刷新表单标题,所以应改为:Thisform.Caption=\简单应用\
要求显示order_list表中的记录,所以应改为:Thisform.grid1.RecordSource =\ 综合应用:
首先为order_detail表增加一个新字段:新单价(类型与原来的单价字段相同),然后编写满足如下要求的程序:根据order_list表中的\订购日期\字段的值确定order_detail表的\新单价\字段的值,原则是:订购日期为2001年的\新单价\字段的值为原单价的90%,订购日期为
2002年的\新单价\字段的值为原单价的110%(注意:在修改操作过程中不要改变order_detail表记录的顺序),最后将程序保存为prog1.prg,并执行该程序。
接着再利用Visual Foxpro的\快速报表\功能建立一个的简单报表,该报表内容按顺序含有order_detail表的订单号、器件号、器件名、新单价和数量字段的的值,将报表文件保存为report1.frx。
答案:首先打开order_detail表,“显示”—“表设计器”,在最后增加一个“新单价”字段,类型参照“单价”字段的,然后新建程序,并输入以下代码:
SELECT Order_list.订单号; FROM order_list;
WHERE YEAR(Order_list.订购日期) = 2001; INTO TABLE aa.dbf do while not eof()
update order_detail set 新单价=单价*0.9 where 订单号=aa.订单号 skip enddo
SELECT Order_list.订单号; FROM order_list;
WHERE YEAR(Order_list.订购日期) = 2002; INTO TABLE bb.dbf do while not eof()
update order_detail set 新单价=单价*1.1 where 订单号=bb.订单号 skip enddo
最后将程序保存为prog1.prg,并执行该程序 第七十六套————基本操作
1. 列出总金额大于所有订购单总金额平均值的订购单(order_list)清单(按客户号升序排列),并将结果存储到results表中(表结构与order_list表结构相同)。
答案:SELECT * FROM order_list WHERE 总金额>(SELECT AVG(总金额) FROM order_list) ORDER BY 客户号 INTO TABLE results (3) 将页注脚区默认显示的当前日期改为显示当前的时间;
答案:步骤5:在\页注脚\带区选定中\并单击鼠标右键,在弹出菜单中选择\属性\菜单项,并显示\报表表达式\对话框,然后单击\表达式\文本框右边的\按钮,从\日期\列表框中选择或自己输入:TIME(),单击\确定\按钮,返回到\报表表达式\对话框中,再单击\确定\按钮即可。 综合应用
首先将order_detail表全部内容复制到od_bak表,然后对od_bak表编写完成如下功能的程序:
1. 把\订单号\尾部字母相同并且订货相同(\器件号\相同)的订单合并为一张订单,新的\订单号\就取原来的尾部字母, \单价\取最低价,\数量\取合计;
2. 结果先按新的\订单号\升序排序,再按\器件号\升序排序; 答案:Select * from order_detail into table od_bak 然后新建程序,在程序中编写如下代码:
Select right(订单号,1) as 订单号,器件号,器件名,min(单价) as 单价,; Sum(数量) as 数量 from od_bak group by 1,2 order by 1,2 ; Into table od_new
第七十七套————基本操作 简单应用:
1. 根据sdb数据库中的表用SQL SELECT命令查询学生的学号、姓名、课程名和成绩,结果按\课程名\升序排序,\课程名\相同时按\成绩\降序排序,并将查询结果存储到sclist表中。 答案:(1)【操作步骤】
在命令窗口输入以下语句。
SELECT student.学号, student.姓名, course.课程名, sc.成绩;
FROM student,course,sc;
WHERE student.学号 = sc.学号 AND sc.课程号 = course.课程号;
ORDER BY course.课程名, sc.成绩 DESC; INTO TABLE sclist 综合应用:
1.打开基本操作中建立的数据库sdb,使用SQL的CREATE VIEW命令定义一个名称为SVIEW的视图,该视图的SELECT语句完成查询:选课门数是3门以上(不包括3门)的每个学生的学号、姓名、平均成绩、最低分和选课门数,并按\平均成绩\降序排序。最后将定义视图的命令代码存放到命令文件T1.PRG中并执行该文件。
接着利用报表向导制作一个报表。要求选择SVIEW视图中所有字段;记录不分组;报表样式为\随意式\;排序字段为\学号\(升序);报表标题为\学生成绩统计一览表\;报表文件名为p_student。
2.设计一个名称为form2的表单,表单上有\浏览\名称为Command1)和\打印\两个命令按钮。鼠标单击\浏览\命令按钮时,先打开数据库sdb,然后执行SELECT语句查询前面定义的SVIEW视图中的记录(两条命令,不可以有多余命令);鼠标单击\打印\命令按钮时,预览报表文件p_student的内容(一条命令,不可以有多余命令)。 答案:【操作步骤】
步骤1:创建程序文件,在程序文件中输入下列语句。 OPEN DATABASE sdb CREATE VIEW sview AS ;
SELECT STUDENT.学号, 姓名, AVG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数; FROM STUDENT, SC;
WHERE STUDENT.学号 = SC.学号 ;
GROUP BY STUDENT.学号 HAVING COUNT(*) > 3; ORDER BY 平均成绩 DESC
步骤13:双击\浏览\命令按钮,在Command1的Click事件中输入:
Open database sdb SELECT * FROM sview
步骤14:双击\打印\命令按钮,在Command2的Click事件中输入: REPORT FORM p_student preview 第七十八套——- 基本操作 简单应用:
2. 在考生文件夹下有一个名称为form1的表单文件,表单中的两个命令按钮的click事件下的语句都有错误,其中一个按钮的名称有错误。请按如下要求进行修改,修改完成后保存所做的修改:
(2) 单击\浏览雇员工资\命令按钮时,使用SELECT命令查询salarys表中所有字段信息供用户浏览;
步骤3:双击\浏览雇员工资\命令按钮,在\编辑窗口中把语句修改为:SELECT * FROM salarys,关闭编辑窗口。 综合应用:1.请编写名称为change_c的程序并执行;该程序实现下面的功能:将雇员工资表salarys进行备份,备份文件名为bak_salarys.dbf;利用\人事部\向\财务部\提供的雇员工资调整表c_salary1的\工资\,对salarys表的\工资\进行调整(请注意:按\雇员号\相同进行调整,并且只是部分雇员的工资进行了调整,其他雇员的工资不动)。
2.设计一个名称为form2的表单,上面有\调整\名称Command1)和\退出\名称Command2)两个命令按钮。 单击\调整\命令按钮时,调用change_c命令程序实现工资调整; 答案:首先新建程序,在程序中输入以下代码: SELECT * FROM salarys INTO table bak_salarys clear all use c_salary1 do while not eof()
update salarys set 工资=c_salary1.工资 where 雇员号=c_salary1.雇员号 skip enddo
程序做好后保存,先不运行,然后新建一个表单,在表单上添加两个命令按钮,”调整”和”退出”,在”调整”的click事件中写:do change_c,在”退出”的click事件中写:thisform.release,最后保存并运行表单. 第七十九套——-基本操作 简单应用:
1. 创建一个名称为sview的视图,该视图的SELECT语句查询salary_db数据库中salarys表(雇员工资表)的部门号、雇员号、姓名、工资、补贴、奖励、失业保险、医疗统筹和实发工资,其中实发工资由工资、补贴和奖励三项相加, 然后再减去失业保险和医疗统筹得出,结果按\部门号\降序排序,最后将定义视图的命令代码存放到命令文件T1.PRG中并执行该程序。