1、国家二级 VF 机试(操作题)-试卷 17 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)从 student 表查询所有性别为“男”的学生信息,并按学号升序排序将查询结果存入 results 表。 (2)利用表单向导生成一个表单,该表单含有 student 表的“学号”、“班级”、“姓名”和“性别”4个字段,按“学号”字段升序排序,其他设置采用默认值,并将表单保存为 studentscx 文件。 (3)建立一个命令文件 myprogprg,该命令文件只有一行语句,即执行前一小题生成的表单文件。 (4)为student 表增加一个“年龄”
2、字段,类型为数值型(2)。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下,打开商品销售数据库 cdb,完成如下简单应用:(1)使用一对多报表向导建立名称为p_order 的报表。要求从父表顾客表 cust 中选择所有字段,从子表订单表 order 中选择所有字段;两表之间采用“顾客号”字段连接;按“顾客号”字段升序排序;报表样式为“经营式”,方向为“纵向”;报表标题为“顾客订单表”。然后修改该报表,在页注脚中增加一个标签“制表人:新思路”;该标签水平居中,标签中的“:”为中文的冒号。 (2)修改一个名称为 TWOPRG 的命令文件。该命令文件统计每个顾客购买
3、商品的金额合计(应付款),结果存储在临时表 1s 中。然后用 1s 中的每个顾客的数据去修改表scust 对应的记录。该命令文件有 3 行语句有错误,打开该命令文件进行修改。 注意:直接在错误处修改,不可改变 SQL 语句的结构和短语的顺序,不允许增加、删除或合并行。修改完成后,运行该命令文件。(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.设计名为 form_book 的表单(控件名为 form1,文件名为 form book)。表单的标题设为“图书情况统计”。表单中有一个组合框(名称为 Combo1)、一个文本框(名称为 Text1)和两个命令按钮“统计”(名称为Com
4、mand1)和“退出”(名称为 Command2)。如图 219 所示。 (分数:2.00)_国家二级 VF 机试(操作题)-试卷 17 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)从 student 表查询所有性别为“男”的学生信息,并按学号升序排序将查询结果存入 results 表。 (2)利用表单向导生成一个表单,该表单含有 student 表的“学号”、“班级”、“姓名”和“性别”4个字段,按“学号”字段升序排序,其他设置采用默认值,并将表单保存为 studentscx 文件。 (3)建立一个命令文件 myprogprg,该命令
5、文件只有一行语句,即执行前一小题生成的表单文件。 (4)为student 表增加一个“年龄”字段,类型为数值型(2)。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口执行如下命令,完成查询并保存查询结果到 results 表中。 SELECT * FROM student WHERE 性别=“男“ ORDER BY 学号 INTO TABLE results (2)执行【文件】【新建】菜单命令,在弹出的“新建”对话框中选中“表单”选项,然后单击“向导”图标按钮,系统弹出“向导选取”对话框,选中“表单向导”项,单击“确定”按钮,启动表单向导。 在表单向导的“步骤 1-字段选取”界面的“
6、数据库和表”下选中“STUDENT”表,依次双击“可用字段”中的“学号”、“班级”、“姓名”和“性别”字段全部添加到“选定字段”中,单击“下一步”按钮。 跳过“步骤2-选择表单样式”向导界面,继续单击“下一步”按钮。 在表单向导的“步骤 3-排序次序”界面中双击“可用的字段和索引标识”的“学号”字段添加到“选定字段”列表中,再单击“升序”单选项,单击“下一步”按钮。 在表单向导的“步骤 4-完成”界面中单击“完成”按钮,在“另存为”对话框的“保存表单为:”框中输入表单文件名 student,单击“保存”按钮。 (3)在命令窗口执行命令: MODIFY COMMAND myprog ,打开程序文
7、件编辑器。 在编辑器中输入程序代码: DO FORM student 。 保存文件,在命令窗口执行命令: DO myprogprg ,执行程序文件。 (4)关闭 student 表,在命令窗口执行命令: ALTER TABLE studerlt ADD 年龄 N(2) ,新增字段。)解析:解析:本大题考查了 SQL 排序查询;表单向导的使用;表单的运行;数据表结构的修改。 使用SQL 排序查询时注意排序短语为 ORDER BY;利用表单向导建立表单也属于比较简单的操作,根据向导提示完成即可;而运行表单时,一定要正确使用调用表单的命令格式:DO FORM;为表新增字段的操作,可直接通过 SQL
8、命令完成,也可以在表设计器中进行。二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下,打开商品销售数据库 cdb,完成如下简单应用:(1)使用一对多报表向导建立名称为p_order 的报表。要求从父表顾客表 cust 中选择所有字段,从子表订单表 order 中选择所有字段;两表之间采用“顾客号”字段连接;按“顾客号”字段升序排序;报表样式为“经营式”,方向为“纵向”;报表标题为“顾客订单表”。然后修改该报表,在页注脚中增加一个标签“制表人:新思路”;该标签水平居中,标签中的“:”为中文的冒号。 (2)修改一个名称为 TWOPRG 的命令文件。该命令文件统计每个顾客购买商品的金额合
9、计(应付款),结果存储在临时表 1s 中。然后用 1s 中的每个顾客的数据去修改表scust 对应的记录。该命令文件有 3 行语句有错误,打开该命令文件进行修改。 注意:直接在错误处修改,不可改变 SQL 语句的结构和短语的顺序,不允许增加、删除或合并行。修改完成后,运行该命令文件。(分数:2.00)_正确答案:(正确答案:(1) 步骤 1:在命令窗口执行命令: OPEN DATABASE cdb ,打开 cdb 数据库。 步骤 2:执行【文件】【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在弹出的“新建”对话框中选中“报表”选项,然后单击“向导”图标按钮,系统弹出“向导选取”对话框,
10、选中“一对多报表向导”项,单击“确定”按钮,启动报表向导。 步骤 3:在报表向导的“步骤 1-从父表选择字段”界面的“数据库和表”下选中 cust 表,将“可用字段”中的字段全部添加到“选定字段”中,单击“下一步”按钮。 步骤 4:在报表向导的“步骤 2-从子表选择字段”界面的“数据库和表”下选中 order 表,将“可用字段”中的字段全部添加到“选定字段”中,单击“下一步”按钮。 步骤 5:在报表向导的“步骤 3-为表建立关系”界面中系统自动建立两个表的联系,单击“下一步”按钮。 步骤 6:在报表向导的“步骤 4-排序记录”界面中双击“可用的字段或索引标识”中的“顾客号”字段到“选定字段”列
11、表中,再选择“升序”,单击“下步”按钮。 步骤 7:在报表向导的“步骤 5-选择报表样式”界面的“样式”下选中“经营式”,方向为“纵向”,单击“下一步”按钮。 步骤 8:在报表向导的“步骤 6-完成”界面中的“报表标题”下方文本框中输入“顾客订单表”,单击“完成”按钮。 步骤 9:在“另存为”对话框的“保存报表为:”框中输入表单文件名 p_order,单击“保存”按钮。 步骤 10:在命令窗口输入命令:MODIFY REPORT p_order,打开报表设计器修改报表。向报表设计器最底端的“页注脚”带区添加一个标签控件,并输入“制表人:新思路”,然后选中标签,在“布局”工具栏中单击“水平居中”
12、命令按钮(工具栏中的倒数第 4 个按钮),设置标签为水平居中。 (2) 步骤 1:在命令窗口执行命令:MODIFY COMMAND TWO ,打开程序文件,文件中的命令代码如下: 1 CLOSE DBF 2 PRIVATE no,money 3 USE scust 4 *下面的一行语句有错误 5 SELECT 顾客号,数量*单价应付款; 6 FROM order JOIN Corftrn ON order商品号=comm商品号; 7 GROUP BY 顾客号; 8 INTO CURSOR ls 9 SELECT scust 10 *下面的一行语句有错误 11 DO WHILE EOF() 12
13、 no=顾客号 13 SELECT ls 14 LOCAT FOR 顾客号=no 15 money=应付款 16 SELECT scust 17 +下面的一行语句有错误 18 REPLACE ALL 应付款=money 19 SKIP+1 20 ENDDO 21 CLOSE TABLE 22 RETURN 修改程序中的错误行,修改后的程序如下: 1 CLOSE DBF 2 PRIVATE no,money 3 USE scust 4 *下面的一行语句有错误 5 SELECT 顾客号,sum(数量*单价)应付款; 6 FROM order JOIN COIItm ON order? 商品号=co
14、mm商品号; 7 GROUP BY 顾客号; 8 INTO CURSOR ls 9 SELECT scust 10 下面的一行语句有错误 11 DO WHILE!EOF() 12 no=顾客号 13 SELECT ls 14 LOCAT FOR 顾客号=no 15 money=应付款 16 SELECT scust 17 *下面的一行语句有错误 18 REPLACE 应付款 with money 19 SKIP+1 20 ENDDO 21 CLOSE TABLE 22 RETURN 步骤 2:保存文件修改,在命令窗口执行命令:DO TWO,执行程序文件。)解析:解析:(1 本题考查报表向导以及
15、报表设计器的使用,在报表设计器中添加文字,可以通过“报表控件”工具栏中的“标签”控件进行添加。 (2)本题考查了 DO WHILE 循环语句;SQL 简单的计算查询;visual FoxPro 修改表记录语句,程序的功能大致如下: 首先定义两个私有变量,然后通过 SQL 语句计算每个顾客购买商品的金额合计,将结果保存到一个临时表中;接着通过一个 DO 循环语句逐条判断scust 表中的记录,修改 scust 表中顾客号与临时表 ls 表中顾客号对应相等的“应付款”字段值。 根据对程序语句的分析,可以得知: 第一处错误是 SQL 计算语句错误,要求应付款应该是合计值,输出字段中还缺少 sum()
16、函数进行合计。 第二处错误是 DO 循环条件错误,循环条件应该是没有到记录末尾,因此应使用!eof()。 第三处错误是修改记录的命令错误,应该使用 replacewith命令。三、综合应用题(总题数:1,分数:2.00)3.设计名为 form_book 的表单(控件名为 form1,文件名为 form book)。表单的标题设为“图书情况统计”。表单中有一个组合框(名称为 Combo1)、一个文本框(名称为 Text1)和两个命令按钮“统计”(名称为Command1)和“退出”(名称为 Command2)。如图 219 所示。 (分数:2.00)_正确答案:(正确答案:步骤 1:命令窗口执行: CREATE FORM form_book ,打开表单设计器新建表单。从“表单控件”工具栏中向表单添加一个组合框、一个文本框及两个命令按钮控件。 步骤 2:选择表单对象,修改对象属性值,见表 322。 )解析:解析:本大题考查了表单及控件的常用属性和方法的设置;SQL 简单查询。 本题的关键是“统计”命令按钮的 click 事件的编写,这里求总数用 COunt()函数,组合框当前值用 value 属性表示,将求出的总数存放到数组中,再将数组中的值赋给文本框的 value 值(即文本框中显示的内容)。