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