1、国家二级 VF机试(操作题)模拟试卷 457及答案与解析 一、基本操作题 1 (1)创建一个名为 “订单管理 ”的数据库,并将已有的 employee、 orders和 customer三个表添加到该数据库中。 (2)为 orders表建立一个普通索引,索引名为 nf,索引表达式为 “year(签订日期 )”。 (3)为 employee表建立主索引,为 orders建立普通索引,索引名和索引表达式均为“职员号 ”。通过 “职员号 ”在 employee表和 orders表之间建立一个一对多的永久联系。 (4)为上述建立的联系设置参照完 整性约束:更新规则为 “限制 ”,删除规则为 “级联 ”
2、,插入规则为 “限制 ”。 二、简单应用题 2 (1)在考生文件夹下已有表单文件 formone scx,如图 3-28所示,其中包含一个列表框、一个表格和一个命令按钮。请按下面要求完成相应的操作: 在表单的数据环境中添加 orders表。 将列表框 Listl设置成多选,另外将其的 RowSourceType属性值设置为 “8-结构 ”、 RowSource设置为 orders。 将表格 Gridl的 RecordSourceType的属性值设置为 “4-SQL说明 ”。 修改 “显 示 ”按钮的 Click事件代码。当单击该按钮时,表格 Gridl内将显示在列表框中所选 orders表中指
3、定字段的内容。 (2)利用查询设计器创建查询,从 orders、 employee和customer表中查询 2001年 5月 1日以后(含)所签所有订单的信息。查询结果依次包含 “订单号 ”、 “签订日期 ”、 “金额 ”、 “签订者 ”和 “客户名 ”5项内容,其中 “签订者 ”为签订订单的职员姓名。各记录按 “签订日期 ”降序排序,签订日期相同按 “金额 ”降序排序;查询去向为表 tableone。最后将查询保存在 queryone qpr文件中,并 运行该查询。 三、综合应用题 3 在考生文件夹下创建一个顶层表单 myform scx(表单的标题为 “考试 ”),然后创建并在表单中添加
4、菜单(菜单的名称为 mymenu mnx,菜单程序的名称为mymenu mpr)。效果如图 3-29所示。 菜单命令 “统计 ”和 “退出 ”的访问键分别为 “T”和 “R”,功能都通过执行过程完成。菜单命令 “统计 ”的功能是以客户为单位、从 customer和 orders表中求出订单金额的和。统计结果包含 “客户号 ”、 “客户名 ”和 “合计 ”3项内容,其中 “合计 ”是指与某客户所签所有订单金额的和。 统计结果应按 “合计 ”降序排序,并存放在 tabletwo表中。菜单命令 “退出 ”的功能是释放并关闭表单。最后,请运行表单并依次执行其中的 “统计 ”和 “退出 ”菜单命令。 国
5、家二级 VF机试(操作题)模拟试卷 457答案与解析 一、基本操作题 1 【正确答案】 (1) 命令窗口执行: MODIFY DATABASE订单管理, 创建数据库并打开数据库设计器。 数据库设计器中右击,选择【添加表】,在 “打开 ”对话框中双击 employee表添加到数据库中;以同样的方法,再将 orders和 customer表添 加到数据库中。 (2) 在数据库设计器中右击 orders表,选择【修改】,打开表设计器。 在表设计器的 “索引 ”选项卡的 “索引名 ”列输入 nf, “类型 ”设置为 “普通索引 ”,“表达式 ”中输入 “year(签订日期 ) ”,单击 “确定 ”按钮
6、保存表结构修改。 (3) 右击数据库设计器中的 employee表,选择【修改】,打开表设计器, “字段 ”选项卡中选 “职员号 ”, “排序 ”列中选择 “升序 ”,建立 “职工号 ”的普通索引,在 “索引 ”选项卡中修改 “类型 ”为 “主索引 ”,单击 “确定 ”。 参照 employee表的操作为 orders表 再建立 “职员号 ”字段的普通索引。然后在数据库设计器中拖动 employee表 “索引 ”下方的主索引 “职员号 ”到 orders表中 “索引 ”下方的普通索引 “职员号 ”上,为两个表建立联系。 (4) 选中两个表之间的关联线(被选中的连线会变粗),首先执行【数据库】
7、【清理数据库】菜单命令,清空数据表中带有删除标记的记录,然后执行【数据库】 【编辑参照完整性】菜单命令。 在打开的 “参照完整性 ”对话框的表格中,选择 “更新 ”下的单元格内容为 “限制 ”;“删除 ”下的单元格内容为 “级联 ”; “插入 ”下的单元格内容为 “限制 ”。单击 “确 定 ”按钮保存参照完整性的修改。 使用数据库;索引;参照完整性。 【试题解析】 本题考查了数据库的建立及基本操作;表索引的建立:表间联系的建立:参照完整性设置。 利用 MODIFY DATABASE命令可以新建数据库并打开数据库设计器,在数据库设计器中可以进行添加、新建和删除表等操作。数据库设计器中,建立联系前
8、必须对两个表中进行连接的字段建立相关索引,并通过索引字段建立表间联系,在表设计器的 “索引 ”选项卡中可以建立表索引。建立参照完整性前要先建立两个表的联系:建立联系后要先清理数据库,然后再设置参照完整性 。 二、简单应用题 2 【正确答案】 (1)步骤 1:命令窗口执行: MODIFY FORM formone, 打开表单设计器修改表单。 步骤 2:右击表单选择【数据环境】,在表单数据环境中击右键选择【添加】,在“添加表或视图 ”对话框中双击 orders表添加到数据环境中。 步骤 3:选中表单中的列表框控件,将 RowSourceType属性值设置为: 8结构,将 RowSource属性值设
9、置为: orders,将 MultiSelect属性值设置为: T;选中表格 (Gridl)控件,将 RowSourceType属性值设置为: 4SQL说明。 步骤 4: “显示 ”按钮( Command1)的 Click事件代码如下: *“显示 ”按钮的 Click事件代码 * 下面代码的功能是根据用户对列表框的选择结果构建字段列表,然后进一步构建select语句并据此为表格的相关属性设值。 *修改所有 *FOUND*下面的一条语句。 *不能修改其他语句。不能增加语句,也不能删除语句。 s=“ f= T FOR i=1 TO thisform Listl ColumnCount IF thi
10、sform Listl Selected (i) IF f s=thisform Listl value ELSE s=s+thisform Listl value ENDIF ENDIF ENDFOR st=“select s from orders into cursor tmp“ this fo rm Gridl RecordSource=st 命令按钮修改后的事件代码如下: s=“ “ * FOUND * FOR i=l TO thisform Listl ListCount IF thisform Listl Selected (i) IF f s=thisform Listl Li
11、st (i) ELSE *FOUND* s=s+“, “+thisform Listl List (i) ENDIF ENDIF ENDFOR st=“select s from orders into cursor tmp“ this form Gridl RecordSource=st 步骤 5:单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,并单击 “输出数据 ”按钮产生temp dbf表文件,保存。 程序基本结构;(宏替换函数)。 (2)步骤 1:命令窗口执行: OPEN DATABASE订单管理, 打开数据库环境。 步骤 2:命令窗口执行: CREATE QUERY queryo
12、ne, 打开查询设计器,在 “添加表或视图 ”对话框中,分别双击 employee、 orders和 customer表(注意:一定要按顺序添加表),将表添加到查询设计器中,此时,添加的表会按照数据库中已存在的表间联系自动为3个表在查询设计器中建立联系。 步骤 3:依次双击 orders表中的 “订单号 ”、 “签订日期 ”、 “金额 ”字段,添加到 “字段 ”选项卡的 “选定字段 ”列表中; “字段 ”选项 卡的 “函数和表达式 ”下的文本框中输入: Employee姓名 AS签订者,单击 “添加 ”按钮添加到 “选定字段 ”中;双击customer表中的 “客户名 ”字段添加到 “选定字段
13、 ”列表中。 步骤 4: “筛选 ”选项卡的 “字段名 ”中选择 “Orders签订日期 ”字段, “条件 ”下拉框中选择 “ =”,在 “实例 ”框中输入: 20010501。 步骤 5: “排序依据 ”选项卡中双击 “选定字段 ”列表框中的 “Orders签订日期 ”字段添加到 “排序条件 ”中, “排序选项 ”中选择 “降序 ”;双击 “选定字段 ”中的 “Orders金额 ”字段添 加到 “排序条件 ”中, “排序选项 ”中选择 “降序 ”单选项。 步骤 6:执行【查询】 【查询去向】菜单命令,在弹出的 “查询去向 ”对话框中单击 “表 ”图标按钮,接着在 “表名 ”中输入文件名 ta
14、bleone,单击 “确定 ”按钮。 步骤 7:最后单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将查询文件保存到考生文件夹下。 查询的建立与使用。 【试题解析】 (1)本题主要考查了 FOR循环语句:表单控件常用属性:宏替换函数。 本题需要了解列表框的两个重要属性:选中条目 SELECTED( I)和条目总数(LISTCOUNT)属性。程 序要求实现的功能大致如下: 首先定义一个变量并赋值为空字符串,再定义一个变量,赋值为逻辑真。 接着使用 FOR循环开始统计列表框中被选定的条目,循环初值为 1,终值为列表框中的条目数(该数值通过 LISTCOUNT函数计算得出):进入循环体后,通过I
15、F条件语句首先判断列表框中条目是否被选中,如果选中,则执行第二个 IF条件语句,否则返回 FOR语句处,继续判断列表框的下一个条目。 第二个 IF语句中,首先判断则逻辑变量的值是否为真,如果为真,则空字符串变量的值等于当前列表框的条目值,接着将逻辑变量的值指定为逻辑假,当执 行一次该 IF语句后,逻辑变量的值就始终为逻辑假了:在后面执行的条件判断语句中,当逻辑变量值为假时,字符串变量的值等于 s值加上当前列表框中的条目值,此时,不会再执行逻辑变量为真的语句了。 最后,利用宏替换函数 ( )将字符串中的数据替换出来,作为简单查询的输出字段:将查询结果保存到临时表中,并通过表格控件显示查询结果。
16、(2)本题考查了查询设计器的使用。由于涉及 3个表的连接查询,因此,要注意向查询设计器中添加表的顺序,保证各表之间在添加到查询设计器后能彼此建立联系。 三、综合应用题 3 【正确答案】 步骤 1:命令窗口执行: CREATE MENU mymenu, 在 “新建菜单 ”中单击 “菜单 ”图标按钮,打开菜单设计器。在 “菜单名称 ”列的文本框中依次输入 “统计 ( T)”和 “退出( R)”两个主菜单名, “结果 ”下拉框中都选择为 “过程 ”。 步骤 2:分别单击两个 “过程 ”后面的 “创建 ”按钮打开过程编辑器,编写如下过程代码: *“统计 ”菜单命令的过程代码 * SELECT Cust
17、omer客户号, Customer客户名, SUM( Orders金额) AS合计; FROM 订单管理! customer INNER JOIN订单管理! orders; ON Customer客户号 =Orders客户号; GROUP BY Customer客户号; ORDER BY 3 DESC; INTO TABLE tabletwo dbf *“退出 ”菜单命令的过程代码 * MYFORM RELEASE 步骤 3:执行【显示】 【常规选项】菜单命令,在 “常规选项 ”中勾选 “顶层表单 ”复选框,然后单击 “确定 ”。 步骤 4:执行【菜单】 【生成】菜单命令,在弹出的对话框中单击
18、 “是 ”按钮,系统弹出 “生成菜单 ”对话框,单击 “生成 ”生成一个可执行的菜单文件,关闭菜单设计器。 步骤 5:命令窗口执行: CREATE FORM MYFORM, 打开表单设计器新建表单。修改表单( Forml)的 “ShowWindow”属性值设置为 “2作为顶层表单 ”;将 Caption属性设置为 “考试 ”。 步骤 6:双击表单 ( Forml),分别编写表单的 Load事件代码和 Destroy事件代码,代码如下: *表单 ( Forml)的 Load事件代码 * DO mymenu mpr WITH THIS, “xxx“ *表单 (Forml)的 Destroy事件代码
19、 * RELEASE MENU xxx EXTENDED 步骤 7:单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 为顶层表单添加菜单; SQL分组与计算查询。 【试题解析】 本题主要考查了顶层表单的设计;菜单设计器的使用: SQL分组与计算查询。 通过表单的 ShowWindow属性值可以设置为顶层表单,在表单的 Load(或INIT)事件中调用菜单文件,通过 THIS短语指定当前表单对象的引用。基本格式为: DO菜单文件 mpr WITH THIS, “菜单内部名 “;另在表单的Destroy事件中编写清除菜单的代码。 建立菜单文件时要勾选 “常规选项 ”对话框中的 “顶层表单 ”,另外,在菜单名称后加 “ ”符号并指定一个大写字母作为访问键。 本题 SQL查询使用的是分组与计算查询语句,用来计算的函数是 SUM()求和函数。