1、国家二级 VF机试模拟试卷 85及答案与解析 一、基本操作题( 30分) 1 在考生文件夹下,打开招生数据库 sdb,完成如下操作: (1)在 ksb表中增加一个名为 “备注 ”的字段、字段数据类型为 “字符 ”、宽度为30。 (2)在考生成绩表 kscjb中给成绩字段设置有效性规则和默认值,成绩 =0 AND成绩 =150:默认值为 0。 (3)通过 “考生号 ”字段建立 ksh表和 kscjb表间的永久联系,并为该联系设置参照完整性约束:更新规则为 “级联 ”;删除规则为 “限制 ”;插入规则为 “忽略 ”。 (4)使用报表向导建立一个简单报表。要求选择考生表 ksb中所有字段;记录不分组
2、;报表样式为 “随意式 ”;列数为 1,字段布局为 “列 ”,方向为 “纵向 ”;排序字段为 “考生号 ”(升序 );报表标题为 “考生成绩一览表 ”;报表文件名为 one frx。 二、简单应用题( 40分) 2 (1)在 “公司 ”数据库中建立视图 “view1”,显示字段包括 “职员编号 ”“姓名 ”“部门编号 ”和 “部门名称 ”等字段,内容是部门名称为 “人事部 ”的记录。 (2)建立表单 “bd1”,标题为 “视图查看 ”。在表单上显示 (1)中建立的视图 “view1”的内容。表单上有一个标题为 “关闭 ”的命令按钮,单击该按钮,退出表单。 三、综合应用题( 30分) 3 首先将
3、 order_detail表全部内容复制到 od_bak表,然后完成如下操作: (1)将 od_bak表中的订单号字段值只保留最后一个字母 (用 REPLACE命令或SQLUPDATE命令完成修改 )。 (2)用 SQL语句对 od bak表编写完成如下功能的程序: 把 “订单号 ”相同并且 “器件号 ”相同的订单合并为一条记录, “单价 ”取最低价,“数量 ”取合计。 结果先按新 的 “订单号 ”升序排序,再按 “器件号 ”升序排序。 最终记录的处理结果保存在 od new表中,表中的字段由 “订单号 ”、 “器件号 ”、 “器件名 ”、 “单价 ”和 “数量 ”构成。 (3)最后将程序保存
4、为 prog1 prg,并执行该程序。 国家二级 VF机试模拟试卷 85答案与解析 一、基本操作题( 30分) 1 【正确答案】 (1) 在命令窗口执行命令: MODIFY DATABASE sdb,打开数据库设计器。 在数据库设计器中,右击 ksb表,选择【修改】快捷菜单命令,打开 ksb表设计器,在 “字段 ”选项 卡的 “字段名 ”列的最后一个空白文本框中输入字段名 “备注 ”,在 “类型 ”下拉框中选择 “字符型 ”,在 “宽度 ”文本框中输入 “30”,单击 “确定 ”按钮保存表结构修改。如图 2-37所示。(2)在数据库设计器中,右击 kscjb表,选择【修改】快捷菜单命令,打开
5、kscjb表设计器,在“字段 ”选项卡中选中 “成绩 ”,在 “字段有效性 ”的 “规则 ”文本框中输入:成绩=0and成绩 =150,在 “默认值 ”文本框中输入: 0。 (3) 在数据库设计器中,拖动kbs表 “索引 ”下方的主索引 “考生号 ”到 kscjb表中 “索引 ”下方的普通索引 “考生号 ”上,为两个表建立联系。 选中 ksb和 kscjb两个表之间的关联线 (被选中的线会变粗 ),首先执行【数据库】 【清理数据库】菜单命令,清空数据库表中带有删除标记的记录,然后执行【数据库】 【编辑参照完整性】菜单命令。在打开的 “参照完整性 ”对话框的表格中,将其中的两对关系均做如下操作:
6、选择 “更新 ”下的单元格内容为 “级联 ”: “删除 ”下的单元格内容为 “限制 ”: “插入 ”下的单元格内容为 “忽略 ”。单击 “确定 ”按钮保存参照完整性的修改。 (4) 在命令窗口执行命令: OPEN DATABASE sdb,打开 sdb数据库。 执行【文件】 【新建】菜单命令,或单击 “常用 ”工具栏的 “新建 ”按钮,在弹出的 “新建 ”对话框中选中 “报表 ”选项,然后单击 “向导 ”图标按钮,系统弹出 “向导选取 ”对话框,选中 “报表向导 ”项,单击 “确定 ”按钮,启动报表向导。 在报表向导的 “步骤 1-字段选取 ”界面的 “数据库和表 ”下选中 “ksb”表,将
7、“可用字段 ”中的字段全部添加到 “选定字段 ”中,单击 “下一步 ”按钮。 在报表向导的 “步骤 2-分组记录 ”界面中,单击 “下一步 ”按钮。 在报表向导的 “步骤 3-选择报表样式 ”界面的 “样式 ”下选择 “随意式 ”,单击 “下一步 ”按钮。 在报表向导的 “步骤 4-定义报表布局 ”的 “列数 ”下输入 “1”,在 “字段布局 ”下选择“列 ”,在 “方向 ”下选择 “纵向 ”,单击 “下一步 ”按钮。 在报表向导的 “步骤 5-排序记录 ”界面中双击 “可用的字段或索引标识 ”中的 “考生号 ”字段到 “选定字段 ”列表中,再选择 “升序 ”,单击 “下一步 ”按钮。 在报表
8、向导的 “步骤 6-完成 ”界面中的“报表标题 ”下方文本框中输入 “考生成绩一览表 ”,单击 “完成 ”按钮。 在 “另存为 ”对话框的 “保存报表为: ”框中输入报表文件名 one,单击 “保存 ”按钮。 【试题解析】 本大题考查了表结构的修改;有效性规则的建立及参照完整性的设置;报表向导的使用。 对表中字段建立有效性规则和设置默认值是在表设计器中操作的,在操作时要注意先选中需要建立有效性规则的字段。 参照完整性是针对两个表进行设置的,在建立参照完整性前要先建立两个表的关联,且有一个表中必须建立关联字段的主索引 (或候选索引 ),另一个表要建立普通索引,建立两个表联系后要先清理数据库,然后
9、再设置参照完整性。 利用报表向导制作报表属于比较简单的操作,可以通过 “新建 ”对话框打开报表后,根据 向导提示一步步完成即可。 二、简单应用题( 40分) 2 【正确答案】 (1) 选择【文件】 【打开】命令,或直接单击工具栏上的 “打开 ”图标,在弹出的对话框中选择要打开的数据库文件 “公司 dbc”。 选择【文件】 【新建】命令,选择 “视图 ”,单击 “新建文件 ”按钮打开 “添加表或视图 ”对话框,选择 “表 ”单选项,选择数据库 “公司 ”,将表 “部门 ”和 “职员信息 ”分别 “添加 ”到视图设计器中,系统会自动选择关联字段 “部门编号 ”为两个表建立内部联,单击 “确定 ”按
10、钮关闭 “联接条件 ”对话框,然后关闭 “添加表或视图 ”对话框。 在视图设计器中单击 “字段 ”选项卡,将 “可用字段 ”列表框中的 “职员信息职员编号 ”“职员信息姓名 ”和 “部门部门编号 ”和 “部门部门名称 ”等字段添加到右边的 “选定字段 ”列表框中。 在视图设计器中单击 “筛选 ”选项卡,在 “字段名 ”下拉列表框中选择 “部门部门名称 ”字段,在 “条件 ”下拉列表框中选择 “=”,在 “实例 ”文本框中输入 “”人事部 ”。 在视图设计器中单击 “关闭 ”按钮,将视图文件以 “view1”名保存在考生文件夹下。 (2) 选择【文件】 【新建】命令,选择 “表单 ”,单击 “新
11、建文件 ”按钮打开表单设计器,在表单属性窗口中将 “Caption”属性修改为 “视图查看 ”;单击表单控件工具栏上的 “命令按钮 ”控件图标,为表单添加一个命令按钮 Command1;单击表单控件工具栏上的 “表格 ”控件图标,再添加一个表格控件 Grid1。 选定命令按钮 Command1,在按钮属性窗口中将命令按钮 Command1的Caption属性值修改为 “关闭 ”。双击命令按钮,在 Click事件中输入代码:ThisForm Release,用来关闭表单。 在表单设计器中,用鼠标右键单 击表单空白处,在弹出的快捷菜单中选择 “数据环境 ”命令,打开 “添加表或视图 ”对话框,选定
12、 “视图 ”,将数据库 “公司 ”下的视图 “view1”添加到数据环境中。 选定表格控件 Grid1,在表格属性窗口中将 “RecordSomceType”属性值修改为“0”,将 “ReeordSource”属性值修改为 “view1”。 选择【表单】 【执行表单】命令,系统首先要求保存该表单文件,在弹出的“另存为 ”对话框中输入表单文件名 “bd1”,保存在考生文件夹下,然后运行表单。 三、综合应用题( 30分) 3 【正确答案】 步骤 1:在命令窗口执行命令: SELECT * FROMorder_detail INTO TABLE od_bak,将 order_detail表的全部内容
13、复制到 od_bak表中。 步骤 2:在命令窗口执行命令: UPDATE od_bak SET订单号=RIGHT(ALLTRIM(订单号 ), 1),将 od_bak表中的 “订单号 ”字段值只保留最后一个字母。 步骤 3:在命令窗口执行命令: MODIFY COMMAND PROG1,新建程序并打开程 序编辑器。 步骤 4:在程序编辑器中输入如下程序代码: SELECT 订单号,器件号,器件名; MIN(单价 ) AS 单价, SUM(数量 ) AS 数量; FROM OD_BAK; GROUP BY 订单号,器件号; ORDER BY 订单号,器件号; INTO TABLE OD_NEW
14、步骤 5:单击 “保存 ”按钮,并运行程序。 【试题解析】 本题主要考查的是程序的建立方法、 SQL分组与计算查询语句、记录的修改方法。本题的 SQL分组与计算查询语句比较复杂,本题大概可以分为以下几步:首先利用 select语句将 order_detail表的记录复制到新表中,该语句比较简单。 接着,利用 UPDATE语句更新表中的记录值,不熟悉 UPDATE语句的考生也可以通过 replace.with.命令更新。 最后,通过 SQL分组与计算查询语句对记录进行合并,其中用到了 min()和sum()函数计算,分组语句则要求同时对两个字段进行分组,首先是按订单号字段分组,接着再按配件号分组,分组计算完毕之后,再通过 order by短语对查询结果进行排序,最后保存查询结果到新表中。