1、国家二级 VF 机试-试卷 48 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.(1)打开考生文件夹下的数据库 SPORT,首先永久删除该数据库中的 temp 表,然后将“金牌榜”、“获奖牌情况”和“国家”3 个自由表加入该数据库中。 (2)在表设计器中,为表“金牌榜”建立一个普通索引,索引名和索引表达式均为“金牌数”。 (3)使用 SQL 语句为表“金牌榜”增加一个字段“奖牌总数”(整数型),同时为该字段设置有效性规则:奖牌总数=0。请将该 SQL 语句存储在文件 oneprg 中,否则不得分。 (4
2、)使用 SQL 语句更改表“金牌榜”所有记录的“奖牌总数”字段值,该值应为“金牌数”、“银牌数”、“铜牌数”3 项之和。请将该 SQL 语句存储在文件 twoprg 中,否则不得分。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)建立视图 new_view,该视图含有选修了课程但没有参加考试(成绩字段值为 NULL)的学生信息(包括“学号”、“姓名”和“系部”3 个字段)。 (2)建立表单 myform3,在表单上添加表格控件(名称为grdCourse),并通过该控件显示表 sourse 的内容(要求 RecordSourceTy
3、pe 属性必须为 0)。(分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.首先为 order_detail 表增加一个新字段:新单价(类型与原来的单价字段相同),然后编写满足如下要求的程序:根据 order_list 表中的“订购日期”字段的值确定 order_detail 表的“新单价”字段的值,原则是:“订购日期”为 2001 年的“新单价”字段的值为原单价的 90,订购日期为 2002 年的“新单价”字段的值为原单价的 110(注意:在修改操作过程中不要改变 order_detail 表记录的顺序),最后将程序保存为 prog1pr
4、g,并执行该程序。 接着再利用 Visual FoxPro 的“快速报表”功能建立一个的简单报表,该报表内容按顺序含有 order_detail 表的“订单号”、“器件号”、“器件名”、“新单价”和“数量”字段的值,将报表文件保存为 report1frx。(分数:2.00)_国家二级 VF 机试-试卷 48 答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.(1)打开考生文件夹下的数据库 SPORT,首先永久删除该数据库中的 temp 表,然后将“金牌榜”、“获奖牌情况”和“国家”3 个自由表加入该数据
5、库中。 (2)在表设计器中,为表“金牌榜”建立一个普通索引,索引名和索引表达式均为“金牌数”。 (3)使用 SQL 语句为表“金牌榜”增加一个字段“奖牌总数”(整数型),同时为该字段设置有效性规则:奖牌总数=0。请将该 SQL 语句存储在文件 oneprg 中,否则不得分。 (4)使用 SQL 语句更改表“金牌榜”所有记录的“奖牌总数”字段值,该值应为“金牌数”、“银牌数”、“铜牌数”3 项之和。请将该 SQL 语句存储在文件 twoprg 中,否则不得分。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口执行命令: MODIFY DATABASEsport ,打开数据库设计器。 右击
6、数据库设计器中的 temp 表,选择【删除】快捷菜单命令,在弹出的 Visual FoxPro 对话框中单击“删除”按钮,将“temp”表永久性删除。 在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的“打开”对话框中双击“金牌榜”表,将表添加到数据库中。以同样的方法将“获奖牌情况”表和“国家”表添加到数据库中。 (2)在命令窗口输入如下代码,打开表设计器: USE 金牌榜 MODIFY STRUCTURE 在表设计器的“字段”选项卡中选中“金牌数”字段名,然后在“索引”列的下拉框选择“升序”排序方式,单击“确定”按钮保存表结构修改。 (3)在命令窗口执行命令: MODIFY CO
7、MMAND one ,打开程序文件编辑器。 在编辑器中输入如下程序代码: ALTER TABLE 金牌榜 ADD 奖牌总数 I CHECK 奖牌总数=0 在命令窗口执行命令: DO one ,执行程序文件。 (4)在命令窗口执行命令: MODIFY COMMAND two ,打开程序文件编辑器。 在编辑器中输入如下程序代码: UPDATE 金牌榜 SET 奖牌总数=金牌数+银牌数+铜牌数 在命令窗口执行命令: DO two ,执行程序文件。)解析:解析:本题考查了数据库的基本操作;表索引的建立;SQL 定义功能和操作功能。 在数据库中删除和添加表时,可以打开数据库设计器操作,注意删除表时选择正
8、确的操作。 表索引可以在表设计器中建立。 利用 SQL 定义功能的表结构修改语句 ALTER TABLE 可以为表新增字段,增加字段的关键字为ADD;利用 SQLUPDATE 语句可以更新表中记录,套用两种 SQL 语句的固定语法即可完成本题的 SQL 语句编写。二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.(1)建立视图 new_view,该视图含有选修了课程但没有参加考试(成绩字段值为 NULL)的学生信息(包括“学号”、“姓名”和“系部”3 个字段)。 (2)建立表单 myform3,在表单上添加表格控件(名称为grdCourse),并通过该
9、控件显示表 sourse 的内容(要求 RecordSourceType 属性必须为 0)。(分数:2.00)_正确答案:(正确答案: (1)步骤 1:在命令窗口执行命令: OPEN DATABASE score_manager ,打开数据库环境。 步骤 2:在命令窗口执行命令: CREATE VIEW NEW_VIEW AS; SELECT Student学号,student姓名,student系部; FROM score_manager!course INNER JOIN score_manager!scorel; INNER JOIN score_manager!student ON s
10、tudent学号=Scorel学号; ON Course课程号=Scorel课程号; WHERE Course课程号 Is NOT NULLAND Scorel成绩 IS NULL (2)步骤 1:在命令窗口执行命令: CREATE FORM myform3 ,打开表单设计器新建表单。 步骤 2:从“表单工具栏”中依次向表单添加一个表格控件。在“属性”面板中将表格控件的 name 属性改为: grdCourse,RecordSourceType 和 RecordSource 属性分别设为:0-表和 course。 步骤 3:单击工具栏中的“数据环境”按钮,在弹出的“添加表或视图”对话框中选择
11、score 数据库下的 course 表,单击“添加”按钮,然后单击“关闭“按钮。 步骤 4:单击“常用”工具栏中的“运行”按钮保存并运行表单。)解析:解析:(1)本题主要考查了利用 SQL 命令建立视图。 利用 SQL 命令建立视图的基本命令格式为:CREATEVIEW视图名ASSELECT 语句。该查询用到了 student、score1 和 course 三张表,作联接查询,要注意查询条件的书写,条件“选修了课程”对应表达式“Score1成绩 IS NULL”,“没有参加考试”条件对应表达式“Course课程号 IS NOT NULL”。空值查询应使用“IS NULL”或”IS NOT
12、NULL”,不能用“=”。 (2)本题考查了表单的建立以及常用控件属性的设置。RecordSourceType 和 RecordSource属性是表格的重要属性,分别用来指定表格数据源类型和数据源。三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.首先为 order_detail 表增加一个新字段:新单价(类型与原来的单价字段相同),然后编写满足如下要求的程序:根据 order_list 表中的“订购日期”字段的值确定 order_detail 表的“新单价”字段的值,原则是:“订购日期”为 2001 年的“新单价”字段的值为原单价的 90,订购日期为
13、 2002 年的“新单价”字段的值为原单价的 110(注意:在修改操作过程中不要改变 order_detail 表记录的顺序),最后将程序保存为 prog1prg,并执行该程序。 接着再利用 Visual FoxPro 的“快速报表”功能建立一个的简单报表,该报表内容按顺序含有 order_detail 表的“订单号”、“器件号”、“器件名”、“新单价”和“数量”字段的值,将报表文件保存为 report1frx。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令: MODIFY COMMAND PROG1 ,新建程序并打开程序编辑器。 步骤 2:在程序编辑器中输入如下程序代
14、码:ALTER TABLE order_detail ADD 新单价 F(10,2)UPDATE order_detail SET 新单价=单价*09;WHERE 订单号=; (SELECT 订单号 FROM order_list; WHERE 订单号=order_detail订单号 AND YEAR(订购日期)=2001) UPDATE order_detail SET 新单价=单价*11; WHERE 订单号=; (SELECT 订单号 FROM order_list; WHERE 订单号=order_detail订单号AND YEAR(订购日期)=2002) 步骤 3:单击“常用”工具栏
15、中的“运行”按钮运行程序。 步骤 4:在命令窗口执行命令: USE order_detail ,打开 order_detail 表。 步骤 5:在命令窗口执行命令: CREATE REPORTreport1 ,打开报表设计器,然后执行【报表】【快速报表】菜单命令,在弹出的“快速报表”对话框中单击“字段”按钮,依次双击“所有字段”列表框中的“订单号”、“器件号”、“器件名”、“新单价”和“数量”字段,将其添加到“选定字段”列表框中,单击“确定”按钮新建快速报表,预览和保存报表。如图 2-30 和图 2-31 所示。 )解析:解析:本题主要考查的是程序文件的建立、SQL 查询、SQL 定义、SQL 更新和快速报表的建立。 本题的基本解题思路是: 首先通过 SQL 定义语句为表建立一个新字段,然后通过两个 SQL 更新语句分别针对订单是 2001 年和 2002 年的记录更新“新单价”的值,其中,更新判断条件可以通过 SQL 查询语句得到满足条件的记录。 注意,浮动型字段用字母 F 表示,对于 SQL 定义语句不太热悉的考生,也可以在数据表设计器中增加新字段。 快速报表的建立需要在报表设计器中进行,在报表设计器中可以通过菜单命令启动建立快速报表的功能,建立快速报表应先指定报表的数据源。