1、国家二级 VF机试模拟试卷 205及答案与解析 一、基本操作题( 30分) 1 在考生文件夹下的数据库 salary_db中完成如下操作: (1)在数据库 salary_db中建立表 dept,表结构如下: 字段名 类型 宽度 部门号 字符型 2 部门名 字符型 20 随后在表中输入 5条记录,记录内容如下: 部门号 部门名 01 制造部 02 销售部 03 项目部 04 采购部 05 人事部 (2)为 dept 表创建一个主索引 (升序 ),索引名和索引表达式均是 “部门号 ”。 (3)通过 “部门号 ”字段建立 salarys表和 dept表间的永久联系。 (4)为以上建立的联系设置参照完
2、整性约束:更新规则为 “级联 ”;删除规则为 “限制 ”;插入规则为 “限制 ”。 二、简单应用题( 40分) 2 (1)用 SQL语句完成下列操作:列出所有与 “红 ”颜色零件相关的信息 (供应商号,工程号和数量 ),并将检索结果按 “数量 ”降序排序存放于表 supply_temp中。 (2)建立一个名为 menu_quick 的快捷菜单,菜单中有, quick两个菜单项 “查询 ”和“修改 ”。然后在表单 myform中的 RightClick事件中调用快捷菜单 menu_quick 三、综合应用题( 30分) 3 在考生文件夹下有一个名为 myform的表单,表单中包括一个列表框和两个
3、命令按钮。请在该表单中完成如下操作: 在表单设计器环境下设置列表框的数据源(RowSource)和数据源类型 (RowSourceType)两个属性。设置 RowSourceType属性为3,在 RowSource属性中使用 SQL的 SELECT.INTO CURSOR 语句根据 “国家 ”表中 “国家名称 ”字段的内容在列表框中显示 “国家名称 ”(注意:不要使用命令指定这两个属性 )。 为 “生成表 ”命令按钮编写程序。程序的功能是根据表单运行时列表框中选定的国家名称,将 “获奖牌情况 ”表中相应国家的所有记录存入以该国家名称命名的自由表中,自由表中包含 “运动员名称 ”、 “项目名称
4、”和 “名次 ”三个字段,并按照 “名次 ”升序排列。 提示:假设从列表框中选择的国家名称存放在变量 gm中,那么在 SQL SELECT语句中使用短语 into table &gm就 可以将选择的记录存入以该国家名命名的自由表中。 运行表单,分别生成存有 “中国 ”、 “日本 ”、 “美国 ”、 “俄罗斯 ”4个国家获奖情况的 4个自由表。 国家二级 VF机试模拟试卷 205答案与解析 一、基本操作题( 30分) 1 【正确答案】 (1) 命令窗口执行命令: MODIFY DATABASE salary_db,打开 salary_db数据库设计器。 在数据库设计器中右击鼠标,选择【新建表】快
5、捷菜单命令,在弹出的 “新建表 ”对话框中单击 “新建表 ”图标按钮,然后在弹出的 “创建 ”对 话框的 “输入表名 ”框中输入 “dept”,单击 “保存 ”按钮打开表设计器。 根据题意,在表设计器中逐行输入每个字段的字段名,并设置字段类型和宽度,然后单击 “确定 ”按钮,此时系统会弹出一个对话框询问 “现在输入数据记录吗 ?”,单击 “是 ”按钮,在弹出的 “dept”表编辑窗口中根据题目要求逐行输入每条记录的值。 (2)右击数据库设计器中的 dept表,选择【修改】快捷菜单命令,打开 dept表设计器,在 “字段 ”选项卡中选中 “部门号 ”,在 “索引 ”列中选择 “升序 ”,然后在
6、“索引 ”选项卡中修改 “索引类型 ”为主索 引,建立 “部门号 ”字段的主索引,单击 “确定 ”按钮保存表结构修改。 (3)在数据库设计器中,拖动 dept表 “索引 ”下方的主索引 “部门号 ”到 salarys表 “索引 ”下方的普通索引 “部门号 ”上,为两个表建立联系。 (4) 选中 dept和 salarys两个表之间的连线 (被选中的线会变粗 ),首先执行【数据库】 【清理数据库】菜单命令,清空数据库表中带有删除标记的记录,然后执行【数据库】 【编辑参照完整性】菜单命令。 在打开的 “参照完整性 ”对话框的表格中,选择 “更新 ”下的单元格内容为 “级联 ”; “删除 ”下的单元
7、格内容为 “限制 ”; “插入 ”下的单元格内容为 “限制 ”。单击 “确定 ”按钮保存参照完整性的修改。 【试题解析】 本大题考查了数据库表的建立和索引的建立;表间永久联系的建立和参照完整性的设置。 在表设计器的 “字段 ”选项卡中,可以通过选择 “排序 ”下拉框中的 “升序 ”或 “降序 ”为指定的字段建立一个索引名与索引表达式相同的普通索引,如果要改变索引名或索引类型,则需要在 “索引 ”选项卡中进行修改。 二、简单应用题( 40分) 2 【正确答案】 (1)在命令窗口执行命令: (以下程序是通过查询设计器生成 ): SELECT供应供应商号,供应工程号,供应数量; FROM 供应零件
8、!零件 INNER JOIN 供应零件 !供应 ; ON 零件零件号 =供应零件号; WHERE 零件颜色 =“红 “; ORDER BY 供应数量 DESC; INTO TABLE supply-temp dbf (2)步骤 1:在命令窗口执行命令: CREATE MENUmenu_quick,在弹出的 “新建菜单 ”对话框中单击 “快捷菜单 ”图标按钮,打开快捷菜单 设计器。 步骤 2:在菜单设计器 “菜单名称 ”列的文本框中输入两个菜单项名 “查询 ”和 “修改 ”。执行【菜单】 【生成】菜单命令,生成一个可执行的菜单文件。 步骤 3:在命令窗口执行命令:MODIFY FORM myfo
9、rm,打开表单设计器,双击表单,在事件代码编辑窗口的 “过程 ”下拉框中选择 RightClick (鼠标右击 ) 事件代码,编写该事件的代码: DO menu_quick mpr。 步骤 4:单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。结构如图 2-13所示。 【试题解析】 (1)本题主要考查的是 SQL联接查询。 SQL查询可以通过查询设计器完成,也可以直接编写 SQL语句进行查询,在查询设计器中建立查询后,可以通过查看 SQL代码将语句复制出来。 SQL查询短语中, SELECT短语对应查询设计器的 “字段 ”选项卡; JOIN对应“联接 ”选项卡;
10、 WHERE短语对应 “筛选 ”选项卡; GROUP BY短语对应 “分组依据 ”选项卡; ORDER BY短语对应 “排序依据 ”选项卡。 (2)本题考查的是快捷菜单的设计,快捷菜单与下拉菜单的比较是缺少条形菜单,即快捷菜单仅包括一个弹出式菜 单,其他设计基本上都与下拉菜单的设计一致,快捷菜单一般都是通过单击鼠标右键触发的,因此,在调用快捷菜单时需要在调用快捷菜单的对象的右击 (RiqhtClick)事件中设置。 三、综合应用题( 30分) 3 【正确答案】 步骤 1:在命令窗口执行命令: MODIFY FORM myform,打开表单设计器修改表单。 步骤 2:选中表单中的列表框 (Lis
11、t1),在属性面板中修改其 RowSourceType属性值为: 3-SQL语句;同时指定 RowSource属性值为: SELECT 国家名称 FROM 国家 INTO CURSOR mylist。 步骤 3:双击 “生成表 ”命令按钮,编写 Click事件代码。代码如下: *“生成表 ”按钮的 Click事件代码 * gm=“SS“ gm=THISFORM LIST1 VALUE SELECT 运动员名称,项目名称,名次, FROM 获奖牌情况,国家 WHERE 国家国家名称 =gm; AND 获奖牌情况国家代码 =国家国家代码; ORDER BY 名次 INTO DBF &gm 步骤 4
12、:单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,分别选中列表框中的 “中国 ”、 “日本 ”、 “美国 ”和 “俄罗斯 ”4个条目生成对应的表,将表单文件保存到考生文件夹下。 【试题解析】 本大题考查了表单及控件的常用属性和方法的设置; SQL简单联接查询。 本题关键是 SQL查询语句中怎样将列表框中被选中的 “国家名称 ”内容命名为表名,由于列表框中被选定的条目不固定,因此不能利用一个常量来指定查询输出的表名。解决此问题的方法就是先定义一个变量等于列表框中的被选定的条目值,然后使用宏替换函数 (&)将变量值替换出来,即使列表框的值无论怎样改变,替换 出来的数据都是列表框被选中的条目值。 另外,本题进行联接查询的两个表是 “国家 ”表和 “获奖牌情况 ”表,联接字段为“国家代码 ”,利用 ORDER BY短语可对查询结果排序,利用 INTO DBF(或 INTO TABLE)短语将结果输出到数据表中。