1、国家二级 VF机试(操作题)-试卷 219及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.在考生文件夹下,有一个学生数据库 sdb,打开该数据库,完成如下操作:(1)在学生表 student中增加一个名为“照片”的字段,字段数据类型为“通用”。 (2)在教师表 teacher中建立一个索引名为“教师号”的主索引(升序),索引表达式为教师号。在课程表 course中建立一个普通索引(升序),索引名为“教师号”,索引表达式为教师号。 (3)建立选课表 sc和学生表 student之间的永久联系;建立选课表sc与课程表 course之间的永久联系;建
2、立教师表 teacher和课程表 course之间的永久联系。并为以上建立的联系设置参照完整性约束:更新规则为“级联”;删除规则为“限制”;插入规则为“限制”。 (4)使用表单向导建立一个名称为 sform的表单。要求选择学生表 student中所有字段:表单样式为阴影式;按钮类型为图片按钮;选定排序字段为学号(升序);表单标题为“学生表数据输入”。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.(1)modilprg 程序文件中 SQL SELECT语句的功能是查询哪些零件(零件名称)目前用于三个项目,并将结果按升序存入文本文件 resultstxt。给出的 SQLSEL
3、ECT语句中在第 1、3、5 行各有一处错误,请改正并运行程序(不可以增、删语句或短语,也不可以改变语句行)。 (2)根据项目信息(一方)和使用零件(多方)两个表、利用一对多报表向导建立一个报表,报表中包含“项目号”、“项目名”、“项目负责人”、(联系)“电话”、(使用的)“零件号”和“数量”6 个字段,报表按项目号升序排序,报表样式为“经营式”,在总结区域(细节及总结)包含零件使用数量的合计,报表标题为“项目使用零件信息”,报表文件名为 report。(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下创建一个顶层表单 myformscx(表单的标题为“考试”)
4、,然后创建并在表单中添加菜单(菜单的名称为 mymenumnx,菜单程序的名称为 mymenumpr)。效果如图 229 所示。 (分数:2.00)_国家二级 VF机试(操作题)-试卷 219答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.在考生文件夹下,有一个学生数据库 sdb,打开该数据库,完成如下操作:(1)在学生表 student中增加一个名为“照片”的字段,字段数据类型为“通用”。 (2)在教师表 teacher中建立一个索引名为“教师号”的主索引(升序),索引表达式为教师号。在课程表 course中建立一个普通索引(升序),索引名为“
5、教师号”,索引表达式为教师号。 (3)建立选课表 sc和学生表 student之间的永久联系;建立选课表sc与课程表 course之间的永久联系;建立教师表 teacher和课程表 course之间的永久联系。并为以上建立的联系设置参照完整性约束:更新规则为“级联”;删除规则为“限制”;插入规则为“限制”。 (4)使用表单向导建立一个名称为 sform的表单。要求选择学生表 student中所有字段:表单样式为阴影式;按钮类型为图片按钮;选定排序字段为学号(升序);表单标题为“学生表数据输入”。(分数:2.00)_正确答案:(正确答案:(1)命令窗口执行: MODIFY DATABASE sd
6、b ,打开数据库设计器。 数据库设计器中,右击 student表,选择【修改】,打开表设计器,“字段”选项卡的“字段名”列的最后一个空白文本框中输入字段名“照片”,“类型”下拉框中选择“通用型”,单击“确定”按钮保存表结构修改。(2)使用上题中为 student表建立索引类似的方法为 teacher表建立索引。 数据库设计器中,右击course表,选择【修改】,打开表设计器,“字段”选项卡中选中“教师号”,在“索引”列中选择“升序”,单击“确定”按钮保存表结构修改。 (3)在数据库设计器中,拖动 student表“索引”下方的主索引“学号”到 sc表中“索引”下方的普通索引“学号”上,为两个表
7、建立联系。如图 329 所示。)解析:解析:本题考查了表结构的修改;索引的建立及参照完整性的设置;表单向导的使用。 在表设计器的“字段”选项卡中选择“排序”中的“升序”或“降序”为指定的字段建立一个索引名与索引表达式相同的普通索引,“索引”选项卡中可对索引名或索引类型进行修改。 在建立参照完整性前要先建立两个表的关联,且有一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引,建立两个表联系后要先清理数据库,然后再设置参照完整性。二、简单应用题(总题数:1,分数:2.00)2.(1)modilprg 程序文件中 SQL SELECT语句的功能是查询哪些零件(零件名称)目前用于三
8、个项目,并将结果按升序存入文本文件 resultstxt。给出的 SQLSELECT语句中在第 1、3、5 行各有一处错误,请改正并运行程序(不可以增、删语句或短语,也不可以改变语句行)。 (2)根据项目信息(一方)和使用零件(多方)两个表、利用一对多报表向导建立一个报表,报表中包含“项目号”、“项目名”、“项目负责人”、(联系)“电话”、(使用的)“零件号”和“数量”6 个字段,报表按项目号升序排序,报表样式为“经营式”,在总结区域(细节及总结)包含零件使用数量的合计,报表标题为“项目使用零件信息”,报表文件名为 report。(分数:2.00)_正确答案:(正确答案:(1) 步骤 1:命令
9、窗口执行: MODIFY COMMAND MODI1 , 打开 modilprg 程序,命令代码如下: SELECT 零件名称 FROM 零件信息 WHERE 零件号=; (SELECT 零件号 FROM使用零件; GROUP BY项目号 HAVING COUNT(项目号)=3); ORDER BY 零件名称; INTO FILE results 修改程序中的错误行,修改后的程序如下: SELECT 零件名称 FROM 零件信息 WHERE 零件号 IN; (SELECT 零件号 FROM使用零件; GROUP BY 零件号 HAVING COUNT(项目号)=3); ORDER BY 零件名
10、称; TO FTLE results 步骤2:保存文件修改,在命令窗口执行命令: DO MODI1PRG ,执行程序文件。 (2) 步骤 1:执行【文件】【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在“新建”对话框中选“报表”选项,击“向导”按钮,弹出“向导选取”,选中“一对多报表向导”项,单击“确定”按钮,启动报表向导。 步骤 2:“步骤 1-从父表选择字段”中,单击“数据库和表”下拉列表框旁边的“”按钮,在“打开”对话框中选中“项目信息”表,双击“可用字段”中的“项目号”、“项目名”、“项目负责人”和“电话”字段,将其添加到“选定字段”中,单击“下一步”。 步骤 3:步骤 2-从
11、子表选择字段”的“数据库和表”下选中“使用零件”表,双击“可用字段”中的“零件号”和“数量”字段添加到“选定字段”中,单击“下一步”。 步骤 4:在报表向导的“步骤 3-为表建立关系”界面中系统自动建立两个表的联系,单击“下一步”按钮。 步骤 5:“步骤 4-排序记录”中双击“可用的字段或索引标识”中的“项目号”字段到“选定字段”列表中,再选择“升序”,单击“下一步”。 步骤 6:“步骤 5-选择报表样式”的“样式”下选“经营式”,单击“下一步”。 步骤 7:“步骤 6-完成”中的“报表标题”下方文本框中输入“项目使用零件信息”,单击“完成”按钮。 步骤 8:在“另存为”对话框的“保存报表为:
12、”框中输入表单文件名 report,单击“保存”按钮。)解析:解析:(1)本题主要考查的是用 SQL嵌套查询、SQL 计算查询。 本题的查询思路是:在内查询中,从“使用零件”表中获得目前用于三个项目的零件的“零件号”,在外查询中,从“零件信息”表中求出这些零件的“零件名称”。 程序第一处错误是嵌套查询中的运算符错误,因为内查询中获得的“零件号”可能不只是一个,而是一个集合,所以应该用“IN”运算符,而不是“=”。第二处错误是分组依据错误,根据题意,应该按照“零件号”分组。第三处错误是查询去向语句错误,将查询结果保存在文本文件中应使用 TO FILE短语。 (2)本题的主要考核点是使用报表向导制
13、作报表。按照向导提示操作即可。三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下创建一个顶层表单 myformscx(表单的标题为“考试”),然后创建并在表单中添加菜单(菜单的名称为 mymenumnx,菜单程序的名称为 mymenumpr)。效果如图 229 所示。 (分数:2.00)_正确答案:(正确答案:步骤 1:命令窗口执行: CREATE FORM myform ,打开表单设计器新建表单。设置表单(form1)的 Caption属性为“考试”。 步骤 2:命令窗口执行: CREATE MENu mymenu ,在“新建菜单”对话框中单击“菜单”按钮,打开菜单设计器。 步骤
14、 3:在菜单设计器“菜单名称”列的文本框中依次输入“计算”和“退出”两个主菜单名,将两个菜单项的“结果”都设置为“过程”,分别单击两个过程后面的“创建”按钮打开过程编辑器,编写过程代码。 步骤 4:两个过程代码如下: *“计算”菜单命令的过程代码* CLOSE ALL USE orders &以 orders表为当前表 DO WHILE NOT EOF() SELECT SUM(Orderitems 数 量 *Goods单价) ZJE; FROM 订单管理!orderitemsINNER JOIN goods; ON Orderitems商品号=Goods商品号; WHERE Orderite
15、ms 订单号=Orders订单号; GROUP BY Orderitems订单号; INTO ARRAY TEMP REPLACE 总金额 WITH TEMP SKIP ENDDO *“退出”菜单命令的过程代码* myformrelease 步骤 5:执行【显示】【常规选项】菜单命令,在“常规选项”对话框中勾选“顶层表单”复选框,单击“确定”按钮,保存修改。 步骤 6:执行【菜单】【生成】菜单命令,在弹出的对话框中单击“是”按钮,弹出“生成菜单”对话框,单击“生成”按钮生成一个可执行的菜单文件(mymenumpr)。 步骤 7:命令窗口执行: MODIFY FORM myform ,打开表单设
16、计器。选中表单,设置表单(form1)的 ShowWindow属性值为“2作为顶层表单”。 步骤 8:编写表单的 LOAD事件代码如下: DO mymenumpr WITH THIS,T 步骤 9:单击“常用”工具栏中的“运行”查看结果,保存表单文件,并分别执行“计算”和“退出”菜单命令。)解析:解析:本题主要考查了表单及常用控件的属性的设置、SQL 分组计算查询、菜单的建立、项层表单的设置、DO WHILE 循环语句。 本题的重点是如何建立顶层表单和“计算”菜单项过程的编写。为顶层表单添加下拉式菜单,应先在“菜单设计器”中按要求设计下拉式菜单,然后做两个设置:一是在“显示”菜单下的“常规选项
17、”对话框中选择“顶层表单”复选框,说明该菜单应用在顶层菜单中,二是将表单的showwindow属性值设置成“2-作为顶层表单”,使其成为顶层表单。 在顶层表单中运行菜单,格式为: DOWITH This,“.“ 其中文件名指定被调用的菜单程序文件,扩展名mpr 不能省略。This 表示当前表单对象的引用。通过可以为被添加的下拉式菜单的条形菜单指定一个内部名字,可以省略。在顶层表单的菜单中关闭表单,应该引用表单的名称(NAME 值),并使用 Release方法关闭表单:Release。 “计算”菜单项过程的编写思路大概是: 先以 orders表为当前表,利用 DO WHILE循环语句对每条记录进行处理。DO WHILE语句的功能是:从 orderitems表和 goods表中求出和 orders表当前记录“订单号”相同的订单的总金额,并把该值保存在数组中,再用 REPLACE命令将 orders表当前记录的“总金额”字段值修改为数组中的值,即该订单的总金额。注意:在通过 orderitems表和 qoods表查询某订单的总金额时,应该以“订单号”分组,用 SUM()函数求各商品的金额之和。然后将记录指针指向 orders表的下一条记录,重新进行判断和处理,直到将 orders表中的每一条记录都处理完毕。