1、国家二级 VF 机试(操作题)-试卷 216 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)建立数据库 ordersmanagedbc。把自由表 employeedbf 和 ordersdbf 添加到数据库中。 (2)打开表单 dhscx,设置标签控件中英文字母的字号为 18,保存表单。 (3)打开表单 dhscx,为命令按钮“隐藏”添加代码,使表单运行时,单击此按钮隐藏表单上标签控件 labell;保存并运行该表单。 (4)利用报表向导建立一对多报表,以 employee 表为父表,选择其中“职工号”、“姓名”和“性别”字段;以 or
2、der.s 表为子表,选择其全部字段。报表样式为“简报式”,表之间的关联通过“职工号”字段实现,排序方式为按“职工号”降序,报表标题为“职工订单”。报表其他参数取默认值。最后将生成的报表保存为 empordfrx。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.(1)student 是一个“学生”表,其中包含学号(C 8)、姓名(C 8)、性别(C 2)、政治面目(C 4)、班级(C 5)等字段。考生文件夹下的 modilprg 程序文件的功能是显示输出所有政治面目为“群众”的“男”生的姓名和班级,每行输出一个学生的信息;程序中有三处错误,请加以改正。 说明:程序中*ERR
3、OR FOUND*的下一行即为错误所在行。请用改正后的程序行覆盖错误所在行,不要插入或删除任何程序行。 (2)建立命令文件 sprogprg,该命令文件包含如下两条语句: . 第一条语句使用SQL UPDATE 命令计算和更新 student 表的年龄字段值(计算年龄的表达式是 year(dat()-year(出生日期)。. 第二条语句使用 SQL SELECT 命令查询各种“政治面目”的学生人数和平均年龄,并将结果存储于表sqlresults(字段名是政治面目、人数和平均年龄)。 说明:以上命令文件必须执行,并产生所要求的结果。(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)
4、3.建立一个文件名和表单名均为 myform 的表单文件,表单上有:表格控件 gridl(RecordSourceType 属性手工设置为“别名”),文本框控件 Textl,命令按钮控件 Commandl(文本为“确定”)。 程序运行时在文本框中输入“部门名”,然后单击“确定”命令按钮计算该部门各年度的“销售额”(合计)和“利润”(合计)(利润为“销售额-工资额”),按“年度”升序将结果(含“年度”、“销售额”和 P 利润”3 个字段)保存在以“部门名”命名的 dbf 文件的同时,在 Gridl 控件中显示计算的结果。如图 3-23 所示。(分数:2.00)_国家二级 VF 机试(操作题)-试
5、卷 216 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)建立数据库 ordersmanagedbc。把自由表 employeedbf 和 ordersdbf 添加到数据库中。 (2)打开表单 dhscx,设置标签控件中英文字母的字号为 18,保存表单。 (3)打开表单 dhscx,为命令按钮“隐藏”添加代码,使表单运行时,单击此按钮隐藏表单上标签控件 labell;保存并运行该表单。 (4)利用报表向导建立一对多报表,以 employee 表为父表,选择其中“职工号”、“姓名”和“性别”字段;以 order.s 表为子表,选择其全部字段
6、。报表样式为“简报式”,表之间的关联通过“职工号”字段实现,排序方式为按“职工号”降序,报表标题为“职工订单”。报表其他参数取默认值。最后将生成的报表保存为 empordfrx。(分数:2.00)_正确答案:(正确答案:(1)命令窗口执行 MODIFY DATABASE ordersmanage ,打开数据库设计器。 在数据库设计器中有击,选择【添加表】,在“打开”对话框中双击“employee”表添加到数据库中,同样的方法将“orders”表添加到数据库中。 (2)命令窗口执行:MODIFY FORM dh,打开表单设计器修改表单。 修改标签(Labell)的 FontSize 属性值为:1
7、8,保存表单修改。 (3)接是一小题,编写“隐藏”命令按钮 Click 事件代码如下: THISFORMLABELlVISIBLE=F 保存表单修改,并运行表单查看修改结果。 (4)命令窗口执行: OPEN DATABASE ordersmanage ,打开 order smanage 数据库环境。执行【文件】【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在“新建”中选“报表”选项,单击“向导”按钮,在“向导选取”中选“一对多报表向导”项,单击“确定”按钮,启动报表向导。 “步骤 1-从父表选择字段”的“数据库和表”中选“employee”表,双击“可用字段”中的“职工号”、“姓名”和
8、“性别”字段,添加到“选定字段”中,单击“下一步”。 在报表向导的“步骤2-从子表选择字段”界面的“数据库和表”下选中“orders”表,将“可用字段”中的字段令部添加到“选定字段”中,单击“下一步”按钮。 “步骤 3-为表建立关系”中系统自动建立两个表的联系,单击“下一步”。 “步骤 4-排序记录”中双击“可用的字段或索引标识”中的“职工号”字段到“选定字段”列表中,再单击“降序”单选项,单击“下一步”。 “步骤 5选择报表样式”选中“样式”列表中的“简报式”,单击“下一步”。 “步骤 6 一完成”中的“报表标题”下方文本框中输入“职工订单”,单击“完成”按钮。 在“另存为”对话框的“保存报
9、表为:”框中输入报表文件名empord,单击“保存”按钮。)解析:解析:本题考查了数据库及表的基本操作;表单控件的常用属性和方法的设置;报表向导的使用。 本题关键是掌握表单控件基本属性的含义,设置标题字体大小的属性为 FontSize,隐藏控件可设置Visible 属性。二、简单应用题(总题数:1,分数:2.00)2.(1)student 是一个“学生”表,其中包含学号(C 8)、姓名(C 8)、性别(C 2)、政治面目(C 4)、班级(C 5)等字段。考生文件夹下的 modilprg 程序文件的功能是显示输出所有政治面目为“群众”的“男”生的姓名和班级,每行输出一个学生的信息;程序中有三处错
10、误,请加以改正。 说明:程序中*ERROR FOUND*的下一行即为错误所在行。请用改正后的程序行覆盖错误所在行,不要插入或删除任何程序行。 (2)建立命令文件 sprogprg,该命令文件包含如下两条语句: . 第一条语句使用SQL UPDATE 命令计算和更新 student 表的年龄字段值(计算年龄的表达式是 year(dat()-year(出生日期)。. 第二条语句使用 SQL SELECT 命令查询各种“政治面目”的学生人数和平均年龄,并将结果存储于表sqlresults(字段名是政治面目、人数和平均年龄)。 说明:以上命令文件必须执行,并产生所要求的结果。(分数:2.00)_正确答
11、案:(正确答案:(1)步骤 1:在命令窗口执行命令: MODIFY COMMAND modil ,打开程序文件,文件中的命令代码如下: 1 SET TALK OFF 2 USE StUdent 3 LOCATE FOR 政治面目:”群众” 4 *error* DO WHILENOTFOUND() S IF 性别=“男“ 6 CONTINUE 7 *error* BREAK 8 ENDIF 9 ?姓名,班级 10 *error* SKIP 11 ENDDO 12 USE 13 SET TALK ON 修改程序中的错误行,修改后的程序如下: 1 SET TALK OFF 2 USE Student
12、 &打开 student 表 3 LOCATE FOR 政治面目=“群众“ &查找当前 记录的“政治面目”为“群众” 4 DO WHILE FOUND() &循环条件为找到“政 治面目“为“群众“的记录时进入循环 5 IF 性别=“男“ &如果性别为“女“,继续执 行下面的语句,否则执行 ENDIF 语句之后的语句 6 CONT INUE &返回到循环体起始位置继 续重新判断下一条也录“政治面目”值是否为“群众” 7 LOOP &返回到循环体起始位置,即 DO WHILE 处重新判断,不再执行后面的语句 8 ENDIF &当 IF 处条件不成立时,直接执行 该语句后面的命令 9 ?姓名,班级
13、&当前面的 IF 条件语句不成立 时,执行该语句,显示当前记录的“姓名”和“班级”值 10 CONTINUE &返回到循环体起始位置继续重 新判断下一条记录“政治而目“值是否为“群众“ 11 ENDDO &当 DO WHILE 处条件不成立时,直接退 出循坏体,执行该语句后面的命令 12 USE &关闭当前打开的表 13 SET TALK ON 步骤 2:保存文件修改,在命令窗口执行命令:DO modilprg,执行程序文件。 (2)步骤 1:在命令窗口执行命令: MODIFY COMMAND sprog ,打开程序文件编辑器。 步骤 2:在程序文件编辑器中输入如下代码(相关 SQL 查询语句
14、是通过查询设计器生成): 1 UPDATE Student SET 年龄=YEAR(DATE() -YEAR(出生日期) 2 SELECT STUDENT政治面目,COUNT(STUDENT 学号)AS 人数,AVG(STUDENT年龄)AS 平均年龄; 3 FROM Student; 4 GROUP BY Student政治面目; 5 INTO TABLE sqlresultsdbf 步骤 3:保存文件修改,在命令窗口执行命令: Do sprog.prg ,执行程序文件。)解析:解析:(2)本题主要考查的是利用 Visual FoxPro 命令查询定位数据表中的记录。此类型的题主要通过一个
15、DO WHILE 循环语句对表中的记录逐条比较,对满足条件的记录进行相关的操作。 本题中第一处错误是循环条件的错误,进入循环体的条件是逻辑值为真,第二处错误中属于命令短语错误,Visual FoxPro 中没有 BREAK 命令,第三处错误是 SKIP 命令错误,该命令虽然可以将当前记录指针指向下一条记录,但不再执行 LOCATE FOR 处的条件判断,如果要包含判断功能,则要使用 CONTINUE 短语。本题程段中各语句的功能可参考“操作步骤”中对各条语句的注释说明,这里不再细说。 (2)本题考查了 SQL 数据更新功能和分组计算查询功能。本题数据更新语句可直接套用 SQL 更新语句的命令格
16、式;对数据进行分组计算查询时,用来计数的函数为 COUNT(),用来求平均值的函数为 AVG(),通过 AS 短语可以指定新的字段名,另外,对记录进行分组时,分组字段要设置正确,根据题意,本题的分组字段应为“学生”表中的“政治面目”字段。三、综合应用题(总题数:1,分数:2.00)3.建立一个文件名和表单名均为 myform 的表单文件,表单上有:表格控件 gridl(RecordSourceType 属性手工设置为“别名”),文本框控件 Textl,命令按钮控件 Commandl(文本为“确定”)。 程序运行时在文本框中输入“部门名”,然后单击“确定”命令按钮计算该部门各年度的“销售额”(合
17、计)和“利润”(合计)(利润为“销售额-工资额”),按“年度”升序将结果(含“年度”、“销售额”和 P 利润”3 个字段)保存在以“部门名”命名的 dbf 文件的同时,在 Gridl 控件中显示计算的结果。如图 3-23 所示。(分数:2.00)_正确答案:(正确答案:步骤 1:命令窗口执行: CREATE FORM mvform ,打开表单设计器新建表单。向表单添加一个文本框、一个表格和一个命令按钮控件。 步骤 2:修改对象属性值,见表 4-29。 )解析:解析:本题考查了表单及控件的常用属性和方法的设置;SQL 分组与计算查询。 由于本题限制了表格的数据源类型为“1-别名”,因此,可以先将查询结果输出到表中,然后再通过表格的Recordsource 属性指定数据源,完成表格数据的显示。 本题关键是 SQL 查询语句中怎样将文本框中显示的“部门名”命名为表名,解决此问题的方法就是先定义一个变量等于文本框中的数据,然后使用宏替换函数()将变量值替换出来,替换出来的数据都是当前文本框显示的值。 本题可利用 SUM()函数进行计算,GROUP BY 分组,ORDERBY 排序,表 Dept 表和 Sell 表联接字段为“部门号”。