1、国家二级 VF机试-试卷 216及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.(1)将考生文件夹下的自由表“职称”添加到数据库“职员管理”中。 (2)将数据库中的表“考勤”移出,使之变为自由表。 (3)从数据库中永久性地删除数据库表“奖励”,并将其从磁盘上删除。 (4)为数据库中的表“职称”建立候选索引,索引名称和索引表达式均为“职称编号”。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.在考生文件夹下完成如下简单应用: (1)用 SQL语句完成
2、下列操作。列出所有与“黑色”颜色零件相关的信息(产品编号、零件名称和数量),并将检索结果按数量降序排序存放于表“result1”中,将 SQL语句保存在“cx1prg”文件中。 (2)建立一个名为“cd1”的快捷菜单,菜单中有两个菜单项:“查询”和“修改”。然后在表单“bd1”中的 RightClick事件中调用快捷菜单“cd1”。(分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.在做本题前首先确认在基础操作中已经正确地建立了 order_detail表,在简单应用中已经成功地将记录追加到 order_detail表。 当 order_d
3、etail表中的“单价”修改后,应该根据该表的“单价”和“数量”字段修改 order_list表的“总金额”字段,现在有部分 order_list记录的“总金额”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为 od_mod的表中(与 order_list表结构相同,自己建立),然后根据 order_detail表的“单价”和“数量”字段修改 od_mod表的“总金额”字段(注意一个 od mod记录可能对应几条 order_detail记录),最后 od_mod表的结果要求按“总金额”升序排序,编写的程序最后保存为 prog1prg。(分数:2.00)_国家二级 VF机试-试
4、卷 216答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.(1)将考生文件夹下的自由表“职称”添加到数据库“职员管理”中。 (2)将数据库中的表“考勤”移出,使之变为自由表。 (3)从数据库中永久性地删除数据库表“奖励”,并将其从磁盘上删除。 (4)为数据库中的表“职称”建立候选索引,索引名称和索引表达式均为“职称编号”。(分数:2.00)_正确答案:(正确答案:(1)选择【文件】【打开】命令,或直接单击工具栏上的“打开”图标,在弹出的对话框中选择要打开的数据库文件“职员管理dbc”,选择“独占”,单
5、击“确定”按钮打开数据库设计器。 在“数据库设计器”中,单击右键选择“添加表”,在“打开”对话框中选择表“职称”,单击“确定”按钮将自由表“职称”添加到数据库“职员管理”中。 (2)在数据库设计器中,选择表“考勤”,单击右键,在弹出的快捷菜单中选择“删除”命令,单击“移去”按钮,选择“是(Y)”将表“考勤”从“职员管理”数据库中移除。 选择【数据库】【清理数据库】命令清理数据库。 (3)在数据库设计器中,选择表“奖励”,单击右键,在弹出的快捷菜单中选择“删除”命令,单击“删除”按钮,将表“奖励”从“职员管理”数据库中删除并将其从磁盘上删除。 (4)在数据库设计器中,选择表“职称”,选择【数据库
6、】【修改】命令,打开表设计器修改表“职称”结构,在“职称”表设计器的“索引”选项卡的“索引名”中输入“职称编号”,选择索引类型为“候选索引”,索引表达式为“职称编号”,单击“确定”按钮关闭表设计器并保存表“职称”结构。)解析:二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.在考生文件夹下完成如下简单应用: (1)用 SQL语句完成下列操作。列出所有与“黑色”颜色零件相关的信息(产品编号、零件名称和数量),并将检索结果按数量降序排序存放于表“result1”中,将 SQL语句保存在“cx1prg”文件中。 (2)建立一个名为“cd1”的快捷菜单,菜单中
7、有两个菜单项:“查询”和“修改”。然后在表单“bd1”中的 RightClick事件中调用快捷菜单“cd1”。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口中输入命令:MODI COMM cx1(回车执行),打开程序文件编辑窗口,在程序文件编辑窗口中输入以下程序代码: SELECT 产品编号,零件名称,数量 INTO TABLE result1 FROM零件,产品清单 WHERE零件零件编号=产品清单零件编号 AND颜色=“黑色“ORDER BY 数量 DESC 关闭程序文件编辑窗口并保存程序文件。 在命令窗口中输入命令:DO cx1(回车执行),执行程序文件。(2)选择【文件】【
8、新建】命令,选择【菜单】,单击“新建文件”按钮,单击【快捷菜单】,打开菜单设计器,在“菜单名称”中输入“查询”,单击下一行,在“菜单名称”中输入“修改”。 选择【菜单】【生成】命令,将菜单保存为“cd1”,生成一个菜单文件“cd1mpr”。关闭菜单设计器。 选择【文件】【打开】命令,在“打开”对话框的“文件类型”下拉列表框中选择“表单”,选择“bd1scx”,单击“确定”按钮,打开表单设计器。 在表单属性窗口中双击“RightClick Event”,打开事件代码编辑窗口,输入代码:DO cd1mpr。 关闭表单设计器并保存表单。)解析:三、综合应用题(总题数:2,分数:4.00)5.综合应用
9、题()(分数:2.00)_解析:6.在做本题前首先确认在基础操作中已经正确地建立了 order_detail表,在简单应用中已经成功地将记录追加到 order_detail表。 当 order_detail表中的“单价”修改后,应该根据该表的“单价”和“数量”字段修改 order_list表的“总金额”字段,现在有部分 order_list记录的“总金额”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为 od_mod的表中(与 order_list表结构相同,自己建立),然后根据 order_detail表的“单价”和“数量”字段修改 od_mod表的“总金额”字段(注意一个
10、od mod记录可能对应几条 order_detail记录),最后 od_mod表的结果要求按“总金额”升序排序,编写的程序最后保存为 prog1prg。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令: MODIFY COMMAND prog1 ,打开程序文件编辑器。步骤 2:在编辑器中输入如下程序代码: SELECT 订单号,SUM(单价*数量) AS 总金额; FROM order_detail; GROUP BY 订单号, INTO CURSOR arrtable SELECT order_1ist*; FROM order_list,arrtable; WHER
11、E order list订单号=arrtable订单号 AND order_list总金额 arrtable总金额; INTO TABLE od_mod USE od_mod DO WHILE NOT EOF() SELECT arrtable总金额 FROM arrtable; WHERE arrtable订单号=od_mod订单号; INTO ARRAY arr REPLACE 总金额 WITH art SKIp ENDDO CLOSE ALL SELECT*FROM od_mod ORDER BY总金额; INTO CURSOR arrtable1 SELECT*FROM arrtabl
12、e1 INTO TABLE od_mod 步骤 3:保存文件修改,在命令窗口执行命令:DO prog1prg,执行程序文件。)解析:解析:本大题主要考查的是 SQL分组计算查询;DO WHILE 循环结构。本题所设计的程序代码有些难度,需要考生好好掌握。基本解题思路可按以下步骤进行: 首先,根据 order detail表的“单价”和“数量”数据,利用分组计算查询求出每组订单的“总金额”,将结果保存到一个临时表中。 然后,通过对 order list表和临时表的联接查询,找出 order list表中“总金额”字段与临时表中“总金额”不相同的记录,并将 order list表中这些“总金额”不相同的记录输出到 od_mod表中。 接着利用 DO WHILE循环语句对 od mod表中的每条记录进行处理。通过 SQL查询语句从临时表中先获得与 od mod表当前所指记录“订单号”相同的“总金额”字段值,将谊值保存到数组中,再通过 REPLACE命令修改 od mod表当前记录的值,每处理完一条记录,记录指针便指向下一条记录,一直到处理完 od mod表中的所有记录。 最后将 od mod表的记录按“总金额”排序,由于查询结果不能覆盖正在作为查询数据源的表,因此,可以通过一个临时表过渡,保存排序的表记录,再通过临时表将排好序的记录再保存回原数据表中。