1、国家二级 VF 机试(操作题)-试卷 272 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开考生文件夹下的数据库 SPORT,首先永久删除该数据库中的 temp 表,然后将“金牌榜”、“获奖牌情况”和“国家”3 个自由表加入该数据库中。 (2)在表设计器中,为表“金牌榜”建立一个普通索引,索引名和索引表达式均为“金牌数”。 (3)使用 SQL 语句为表“金牌榜”增加一个字段“奖牌总数”(整数型),同时为该字段设置有效性规则:奖牌总数=0。请将该 SQL 语句存储在文件 oneprg 中,否则不得分。 (4)使用 SQL 语句更改表“
2、金牌榜”所有记录的“奖牌总数”字段值,该值应为“金牌数”、“银牌数”、“铜牌数”3 项之和。请将该 SQL 语句存储在文件 twoprg 中,否则不得分。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.(1)建立如图 2-3 所示表单,表单完成一个计算器的功能。表单文件名和表单控件名均为 calculator,表单标题为“计算器”。 (分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.在做本题前首先确认在基础操作中已经正确地建立了 order detail 表,在简单应用中已经成功地将记录追加到 order detail 表。 当 order detail
3、表中的“单价”修改后,应该根据该表的“单价”和“数量”字段修改 order list 表的“总金额”字段,现在有部分 order list 记录的“总金额”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为 od mod 的表中(与 order list 表结构相同,自己建立),然后根据 order detail 表的“单价”和“数量”字段修改 od mod 表的“总金额”字段(注意一个 od mod 记录可能对应几条 order detail 记录),最后 od mod 表的结果要求按“总金额”升序排序,编写的程序最后保存为 proglprg。(分数:2.00)_国家二级 VF
4、 机试(操作题)-试卷 272 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开考生文件夹下的数据库 SPORT,首先永久删除该数据库中的 temp 表,然后将“金牌榜”、“获奖牌情况”和“国家”3 个自由表加入该数据库中。 (2)在表设计器中,为表“金牌榜”建立一个普通索引,索引名和索引表达式均为“金牌数”。 (3)使用 SQL 语句为表“金牌榜”增加一个字段“奖牌总数”(整数型),同时为该字段设置有效性规则:奖牌总数=0。请将该 SQL 语句存储在文件 oneprg 中,否则不得分。 (4)使用 SQL 语句更改表“金牌榜”所有记录
5、的“奖牌总数”字段值,该值应为“金牌数”、“银牌数”、“铜牌数”3 项之和。请将该 SQL 语句存储在文件 twoprg 中,否则不得分。(分数:2.00)_正确答案:(正确答案:(1)命令窗口执行: MODIFY DATABASE sport ,打开数据库设计器。 右击数据库设计器中的 temp 表,选择【删除】,在弹出的对话框中单击“删除”按钮,将“temp”表永久性删除。 在数据库设计器中右击,选择【添加表】,在“打开”对话框中双击“金牌榜”表加到数据库中,以同样的方法将“获奖牌情况”表和“国家”表添加到数据库中。 (2)在命令窗口输入如下代码,打开表设计器: USE 金牌榜 MODIF
6、Y STRUCTURE 在表设计器的“字段”选项卡中选中“金牌数”,“索引”列“升序”排序方式,单击“确定”保存表结构修改。 (3)命令窗口执行: MODIFY COMMAND one ,打开程序文件编辑器。 在编辑器中输入如下程序代码: ALTER TABLE 金牌榜 ADD 奖牌总数 ICHECK 奖牌总数=0 命令窗口执行:DO one,执行程序文件。 (4)在命令窗口执行命令: MODIFY COMMAND two ,打开程序文件编辑器,输入如下程序代码: UPDATE 金牌榜 SET 奖牌总数=金牌数+银牌数+铜牌数 在命令窗口执行命令:DO two,执行程序文件。)解析:解析:本题
7、考查了数据库的基本操作;表索引的建立;SQL 定义功能和操作功能。 利用 SQL 表结构修改语句 ALTER TABLE,增加字段的关键字为 ADD;用 SQL UPDATE 语句可以更新表中记录。二、简单应用题(总题数:1,分数:2.00)2.(1)建立如图 2-3 所示表单,表单完成一个计算器的功能。表单文件名和表单控件名均为 calculator,表单标题为“计算器”。 (分数:2.00)_正确答案:(正确答案:(1)步骤 1:在命令窗口执行命令: CREATE FORMcalculator ,打开表单设计器新建表单。从“表单控件”工具栏中依次向表单添加三个标签、三个文本框、两个命令按钮
8、和一个选项组控件。 步骤 2:在“属性”面板的下拉框中选择表单对象,在“全部”选项卡中修改对象属性值,见表2-5,注意,在设置选项组按钮为 4 个以后,要调整选项组的大小,才能显示新增的两个单选按钮,系统默认的只显示两个。 步骤 3:双击命令按钮,编写各个命令按钮的 Click 事件代码。各按钮代码如下: 步骤 4:单击“常用”工具栏中的“运行”按钮查看结果,将表单文件保存到考生文件夹下。 (2)步骤 1:在命令窗口执行命令: OPEN DATABASE 使用零件情况,打开“使用零件情况”数据库。 步骤 2:在命令窗口执行命令: CREATE FORM form item ,打开表单设计器新建
9、表单。 步骤 3:从“表单工具栏”中依次向表单添加一个组合框、一个文本框和两个命令按钮控件。在“属性”面板的下拉框中选择表单对象,在“全部”选项卡中修改对象属性值,见表 2-6。 步骤 4:双击表单,编写表单的Load 事件代码。代码如下: 步骤 4:双击命令按钮,编写各个命令按钮的 Click 事件代码。各按钮代码如下: )解析:三、综合应用题(总题数:1,分数:2.00)3.在做本题前首先确认在基础操作中已经正确地建立了 order detail 表,在简单应用中已经成功地将记录追加到 order detail 表。 当 order detail 表中的“单价”修改后,应该根据该表的“单价
10、”和“数量”字段修改 order list 表的“总金额”字段,现在有部分 order list 记录的“总金额”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为 od mod 的表中(与 order list 表结构相同,自己建立),然后根据 order detail 表的“单价”和“数量”字段修改 od mod 表的“总金额”字段(注意一个 od mod 记录可能对应几条 order detail 记录),最后 od mod 表的结果要求按“总金额”升序排序,编写的程序最后保存为 proglprg。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令: M
11、ODIFY COMMAND proget ,打开程序文件编辑器输入如下程序代码: 1 SELECT 订单号,SUM(单价*数量)AS 总金额; 2 FROM order-detail; 3 GROUP BY 订单号; 4 INTO CURSOR arrtable 5 SELECT Order 一 1iSt*; 6 FROM Order=1iSt,arrtable; 7 WHERE order list订单号=arrtable 订单号 AND order-list总金额 arrtable总金额; 8 INTO TABLE od-mod 9 USE od-mod 10 DO WHILE NOT E
12、OF() 11 SELECT arrtable总金额 FROM arrtable; 12 WHERE arrtable订单号:od-mod订单号; 13 INTO ARRAY arr 14 REPLACE 总金额WITH arr 15 SKIP 15 ENDDO 16 CLOSE ALL 17 SELECT*FROM od-mod ORDER BY 总金额; 18 INTO CURSOR arrtablel 19 SELECT*FROM arrtablel INTO TABLE od-mod 步骤 2:保存文件修改,在命令窗口执行命令:DO prog1prg,执行程序文件。)解析:解析:本题主
13、要考查 SQL 分组计算查询;DO WHILE 循环结构。本基本解题思路可按以下步骤进行:首先,根据 order detail 表的“单价”和“数量”数据,利用分组计算查询求出每组订单的“总金额”,将结果保存到一个临时表中。 然后,通过对 order 1ist 表和临时表的联接查询。找出 order list 表中“总金额”字段与临时表中“总金额”不相同的记录,并将 order list 表中这些“总金额”不相同的记录输出到 od mod 表中。 接着利用 DO WHILE 循环语句对 od mod 表中的每条记录进行处理。通过 SQL 查询语句从临时表中先获得与 od mod 表当前所指记录“订单号”相同的“总金额”字段值,将该值保存到数组中,再通过 REPLACE 命令修改 od mod 表当前记录的值,每处理完一条记录,记录指针便指向下一条记录,一直到处理完 od mod 表中的所有记录。 最后将 od mod 表的记录按“总金额”排序,由于查询结果不能覆盖正在作为查询数据源的表,因此,可以通过一个临时表过渡,保存排序的表记录,再通过临时表将排好序的记录保存到原数据表中。