1、国家二级 VF机试模拟试卷 108及答案与解析 一、基本操作题( 30分) 1 (1)将数据库 “职员管理 ”添加到项目 “xm”中。 (2)对数据库 “职员管理 ”下的表 “部门 ”,使用视图向导建立视图 “view1”,要求显示出表中的全部字段,并按 “部门编号 ”排序 (升序 )。 (3)设置表 “员工信息 ”的字段 “性别 ”的默认值为 “男 ”。 (4)为表 “员工信息 ”的字段 “工资 ”设置完整性约束,要求工资至少在 800元 (含 )以上,否则提示信息: “工资必须达到最低保障线 800”。 二、简单应用题( 40分) 2 (1)将 order detail1表中的全部记录追加
2、到 order detail表中,然后用 SQL SELECT语句完成查询:列出所有订购单的 “订单号 ”、 “订购日期 ”、 “器件号 ”、 “器件名 ”和“总金额 ”(按 “订单号 ”升序, “订单号 ”相同再按 “总金额 ”降序 ),并将结果存储到results表中 (其中 “订单号 ”、 “订购日期 ”、 “总金额 ”取自 order_list表, “器件号 ”、“器件名 ”取自 order_detail表 )。 (2)打开 modil prg命令文件,该命令文件包含 3条 SQL语句,每条 SQL语句中都 有一个错误,请改正 (注意;在出现错误的地方直接改正,不可以改变 SQL语句的
3、结构和 SQL短语的顺序 )。 三、综合应用题( 30分) 3 score_manger数据库中含有三个数据库表 student、 scorcl和 course。为了对 score manager数据库数据进行查询,设计一个如图 1-17所示的表单 myform1(控件名为form1,表单文件名 myform1 scx)。表单的标题为 “成绩查询 ”。表单中有文本 “输入学号(名称为 Label1的标签 )”和用于输入学号的文本框 (名称为 Text1)以及 “查询 ”(名称为Command1)和 “退出 ”(名称为 Command2)两个命令按钮以及一个表格控件。 表单运行时,用户首先在文本
4、框中输入学号,然后单击 “查询 ”按钮,如果输入学号正确,在表单右侧以表格 (名称为 Grid1)形式显示该生所选课程名和成绩,否则提示 “学号不存在,请重新输入学号 ”。 单击 “退出 ”按钮,关闭表单。 国家二级 VF机试模拟试卷 108答案与解析 一、基本操作题( 30分) 1 【正确答案】 (1) 选择【文件】 【新建】命令,选择 “项目 ”,单击 “新建文件 ”按钮,输入项目名称 “xm”后单击 “保存 ”按钮。 在项目管理器中选择 “数据 ”选项卡,然后选择列表框中的 “数据库 ”,单击 “添加 ”命令按钮,在 “打开 ”对话框中选择数据库 “职员管理 ”,单击 “确定 ”按钮将数
5、据库 “职员管理 ”添加到新建的项目 “xm”中。 (2) 在 “数据 ”选项卡中,展开数据库 “职员管理 ”,选择 “职员管理 ”分支下的 “本地视图 ”。 单击项目管理器右边的 “新建 ”命令按钮,在弹出的 “新建本地视图 ”对话框中,单击 “视图向导 ”按钮,在 “本地视图向导 ”对话框中,选择 “职员管理 ”数据库下的“部门 ”数据表,并把 “可用字段 ”下的 全部字段添加到 “选定字段 ”列表框中。 连续单击 “下一步 ”进入 “排序记录 ”的设计界面,将 “可用字段 ”列表框中的 “部门部门编号 ”字段添加到右边的 “选定字段 ”列表框中,并选择 “升序 ”单选项。 连续单击 “下
6、一步 ”进入最后的 “完成 ”设计界面,单击 “完成 ”按钮保存视图为“view1”,退出视图设计向导。 (3) 在项目管理器中,依次展开 “数据库 ”“职员管理 ”“表 ”,选择 “员工信息 ”表,单击 “修改 ”按钮,打开表设计器。 在 “员工信息 ”表设计器的 “字段 ”选项卡下,选择 “性别 ”字段,在 “字段有效性 ”的 “默认值 ”文本框中输入 “男 “”。 (4)在 “员工信息 ”表设计器中的 “字段 ”选项卡下,选择 “工资 ”字段,在 “字段有效性 ”的 “规则 ”编辑框中输入 “工资 =800”, “信息 ”编辑框中输入 “工资必须达到最低保障线 800“”,单击 “确定
7、”按钮,关闭表设计器并保存表 “员工信息 ”结构。 二、简单应用题( 40分) 2 【正确答案】 (1)步骤 1:在命令窗口执行命令: SELECT * FROM order_detail1 INTO ARRAY temp INSERT INTO order_detail FROM ARRAY temp 将 detaill表中的记录全部复制到 detail表中。 步骤 2:在命令窗口执行如下 SQL命令语句完成查询: SELECT order_list订单号, order_list订购 日 期, order_detail器 件 号, order_detail器件名, order_list总金额
8、; FROM 订货管理 !order_list INNER JOIN订货管理 !order_detail; ON order_list订单号 =order detail订单号; ORDER BY order_list订单号, order_list总金额 DESC; 工 NT() TABLE results dbf (注意:以上 SQL语句是根据查询文件生成的,大家也可以通过查询设计器完成本题操作。 ) (2)步骤 1:在命令窗口执行命令: MODIFY COMMANDmodil,打开modil程序文件,文件中的命令代码如下: & 所有器件的单价增加 5元 UPDATE order_detail
9、1 SET单价 WITH单价 +5 &计算每种器件的平均单价 SELECT 器件号, AVG(单价 ) AS 平均价 FROM order_detail1 ORDER BY器件号 INTO CURSOR 1sb &查询平均价小于 500的记录 SELECT*FROM 1sb FOR平均价 500 修改程序中的错误行,修改后的程序如下: UPDATE order_detail1 SET单价 =单价 +5 &UPDATE语句中赋值是通过 “=”号,而不是 WITH SELECT器件号, AVG(单价 ) AS平均价 FROM order_detaill GROUP BY器件号 INTO CURSO
10、R 1sb &GROUP BY短语才是分组短语,而 ORDER BY短语是用来对查询结果进行排序的 SELECT*FROM 1sb WHERE 平均价 500 &SELECT的条件短语是 WHERE,而不是 FOR 步骤 2:保存文件修改。在命令窗口执行命令: DO modi1 prg,执行程序文件。 【试题解析】 (1)本题考查了 SQL的简单查询和联接查询。 SQL简单查询可直接套用基本的查询 命令格式:进行联接查询时主要是判断查询输出字段来自哪个数据表 (本题都已指明 ),再正确设置联接条件。 (2)本题考查了 SQL更新功能:分组计算查询和简单查询。 第一处错误属于 SQL更新命令格式
11、错误,通过 SOL给字段赋新值是通过 “=”号设置的。 第二处错误是分组短语与排序短语混淆了,这也是改错题中经常设置锚误的地方。 第三处错误是查询语句的命令格式错误, SQL查询中筛选条件通过 WHERE短语指出。 三、综合应用题( 30分) 3 【正确答案】 步骤 1:在命令窗口执行命令: CREATE FORM myform1,打开表单设计器新建表单。 步骤 2:从 “表单控件 ”工具栏中依次向表单添加一个标签、一个文本框、两个命令按钮和一个表格控件。在 “属性 ”面板的下拉框中选择表单对象,在 “全部 ”选项卡中修改对象属性值,见表 2-20。步骤 3:双击命令按钮,编写各个命令按钮的
12、Click事件代码。各按钮代码如下: *查询 (Command1)的 click事件代码 *GO TOP LOCATE FOR student学号=ALLTRIM(THISFORM TEXT1 VALUE)IF student学号=ALLTRIM(THISFORM TEXT1 VALUE)THISFORM GRID1 RECORDSOURCE=“SELECTCourse课程名, Score1成绩, FROM COUrse INNER JOIN scorel; INNER JOIN student; ON student学号 =Scorel学号; ON Course课程号 =Score1课程号;
13、 WHERE Student学号=ALLTRIM(THISFORM TEXT1 VALUE); INTO CURSOR TEMP“ELSEMESSAGEBOX(“学号不存在,请重新输入学号“)THISFORM GRID1 RECORDSOURCE=“ENDIF *“退出 ”按钮的 Click事件代码 * THISFORM RELEASE 步骤 4:单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 【试题解析】 表单文件的创建、控件的属性的修改、 SOL 语句运用、表单的退出等知识点。 对本题操作时,首先根据题意新建表单、添加控件并修 改相关属性。本题的重点是 “查询 ”按钮 Click事件的编写,文本框中的内容用value属性表示;在表中查找输入的学号用 locate for命令,如果找到,则记录指针指向该记录,如果没找到,则指向文件尾;事件代码中用 IF.ELSE.ENDIF选择结构实现 “找到学号 ”和 “没找到学号 ”两种情况。