1、国家二级 VF机试-试卷 24及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.(1)将数据库 tyw添加到项目 my中。 (2)对数据库 tyw下的表“出勤”,使用视图向导建立视图shim,要求显示出表“出勤”中的记录“姓名”,“出勤次数”和“迟到次数”。并按“姓名”排序(升序)。 (3)为表“员工”的字段“工资”设置完整性约束,要求“工资=0”,否则提示信息“工资必须大于 0”。 (4)设置表“员工”的字段“工资”的默认值为“1000”。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3
2、.简单应用题()(分数:2.00)_4.(1)使用“一对多表单向导”生成一个名为 sell的表单。要求从父表 de中选择所有字段,从子表 PT表中选择所有字段,使用“部门号”建立两表之间的关系,样式为“阴影式”;按钮类型为“图片按钮”;排序字段为部门编号(升序);表单标题为“数据维护”。 (2)在考生文件夹下打开命令文件 asp.pr8,该命令文件用来查询各部门的分年度的“部门编号”、“部门名称”、“年度”、“全年销售额”、“全年利润”和“利润率” (全年利润/全年销售额),查询结果先按“年度”升序、再按“利润率”降序排序,并存储到 li表中。 注意,程序在第 5行、第 6行、第 8行和第 9
3、行有错误,请直接在错误处修改。修改时,不可改变 SQL语句的结构和短语的顺序,不允许增加或合并行。(分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.为“部门信息“表增加一个新字段“人数”,编写满足如下要求的程序:根据“雇员信息”表中的“部门号”字段的值确定“部门信息”表的“人数”字段的值,即对“雇员信息”表中的记录按“部门号”归类。将“部门信息”表中的记录存储到 ate表中(表结构与“部门信息”表完全相同)。最后将程序保存为myp.prg,并执行该程序。 在命令窗口中输入命令:MODIFY COMMAND myp,在弹出的程序编辑窗口中输
4、入如下程序段: *程序文件 myp.prg中的程序段* ALTER TABLE 部门信息 ADD人数 I SELECT部门号,COUNT(*)AS 人数 FROM雇员信息; GROUP BY 部门号; INTO CURSOR atemp DO WHILE NOT EOF() UPDATE部门信息 SET人数=atemp.人数; WHERE 部门信息.部门号=atemp.部门号 SKIP ENDDO SELECT * FROM部门信息 INTO TABLE ate * 在命令窗口执行命:DO myp,运行程序,通过 BROWSE命令可查看查询结果,程序运行结果如图 3-26所示。(分数:2.00
5、)_国家二级 VF机试-试卷 24答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.(1)将数据库 tyw添加到项目 my中。 (2)对数据库 tyw下的表“出勤”,使用视图向导建立视图shim,要求显示出表“出勤”中的记录“姓名”,“出勤次数”和“迟到次数”。并按“姓名”排序(升序)。 (3)为表“员工”的字段“工资”设置完整性约束,要求“工资=0”,否则提示信息“工资必须大于 0”。 (4)设置表“员工”的字段“工资”的默认值为“1000”。(分数:2.00)_正确答案:(正确答案:(1)从菜单栏里
6、单击“文件”并选择“打开”,或直接单击工具栏上的“打开”图标,在弹出的对话框中选择要打开的项目文件 my.pjx。在项目管理器 my中,首先在“数据”选项卡中选择“数据库”,然后单击选项卡右边的“添加”命令按钮,在系统弹出的“打开”对话框中,将考生文件夹中的数据库 tyw添加到项目管理器中,单击“确定”按钮。 (2)在“数据”选项卡中,依次展开“数据库”“tyw”,选中 tyw分支下的“本地视图”,单击项目管理器右边的“新建”命令按钮,在弹出的“新建本地视图”对话框中,单击“新建视图”按钮,打开视图设计器,将“出勤”数据表添加到视图设计器中。根据题意,在视图设计器的“字段”选项卡中,将“可用字
7、段”列表框中的字段全部添加到右边的“选定字段”列表框中,在视图设计器的“排序依据”选项卡中,将“选定字段”列表框中的字段“姓名”添加到右边的“排序条件”列表框中,在“排序选项”中选择“升序”,完成视图设计,将视图以 shitu保存在考生文件夹下。 (3)在项目管理器中,选中“员工”数据表,同时单击右边的“修改”命令按钮,打开表设计器,选中“工资”字段,然后在“规则”文本框中输入“工资=0”,在“信息”文本框中输入“工资必须大于 0“”。 (4)打开“员工”表设计器,在“字段”选项卡中选中“工资”字段,在字段有效性“默认值”文本框中输入“1000”为该字段设置默认值。)解析:解析:本大题主要考查
8、数据库的添加、视图的建立以及有效性规则的建立。数据库添加可以通过项目管理器中的命令按钮,打开相应的设计器直接管理。字段的有效性规则建立可在“字段”选项卡中完成。视图的建立是在项目管理器中“数据”选项卡里完成,且视图文件在磁盘中是找不到的,直接保存在数据库中。二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.(1)使用“一对多表单向导”生成一个名为 sell的表单。要求从父表 de中选择所有字段,从子表 PT表中选择所有字段,使用“部门号”建立两表之间的关系,样式为“阴影式”;按钮类型为“图片按钮”;排序字段为部门编号(升序);表单标题为“数据维护”。
9、(2)在考生文件夹下打开命令文件 asp.pr8,该命令文件用来查询各部门的分年度的“部门编号”、“部门名称”、“年度”、“全年销售额”、“全年利润”和“利润率” (全年利润/全年销售额),查询结果先按“年度”升序、再按“利润率”降序排序,并存储到 li表中。 注意,程序在第 5行、第 6行、第 8行和第 9行有错误,请直接在错误处修改。修改时,不可改变 SQL语句的结构和短语的顺序,不允许增加或合并行。(分数:2.00)_正确答案:(正确答案:(1)启动 Visual FoxPro,在“工具”菜单选择“向导”“表单”菜单命令,出现“向导选取”对话框,根据题意数据源是多个表,因此选定“一对多表
10、单向导”。单击“确定”。 步骤一:在弹出的对话框中“数据库和表”选项选择父表 de,并把全部的“可用字段”选为“选定字段”。步骤二:选择子表 pt,并把全部的“可用字段”选为“选定字段”。 步骤三:系统自动以“部门编号”建立两表之间的关系。 步骤四:表单样式选择为“阴影式”,按钮类型选择“图片按钮”。 步骤五:在“排序次序”中选择“部门编号”,并选择升序排序。 步骤六:把表单标题改为“数据维护”,可以在单击“完成”之前单击“预览”按钮来预览生成的表单,最后单击“完成”按钮。 将表单以文件名 sell保存在考生文件夹里。表单运行结果如图 3-27所示, )解析:解析:本大题 1小题考查的是根据表
11、单向导生成联系多表的表单内容,利用向导时应注意父表和子表的选择;2 小题中考查的是 SQL语句的应用,注意 ORDER BY和 GROUP BY之间的差别。三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.为“部门信息“表增加一个新字段“人数”,编写满足如下要求的程序:根据“雇员信息”表中的“部门号”字段的值确定“部门信息”表的“人数”字段的值,即对“雇员信息”表中的记录按“部门号”归类。将“部门信息”表中的记录存储到 ate表中(表结构与“部门信息”表完全相同)。最后将程序保存为myp.prg,并执行该程序。 在命令窗口中输入命令:MODIFY CO
12、MMAND myp,在弹出的程序编辑窗口中输入如下程序段: *程序文件 myp.prg中的程序段* ALTER TABLE 部门信息 ADD人数 I SELECT部门号,COUNT(*)AS 人数 FROM雇员信息; GROUP BY 部门号; INTO CURSOR atemp DO WHILE NOT EOF() UPDATE部门信息 SET人数=atemp.人数; WHERE 部门信息.部门号=atemp.部门号 SKIP ENDDO SELECT * FROM部门信息 INTO TABLE ate * 在命令窗口执行命:DO myp,运行程序,通过 BROWSE命令可查看查询结果,程序
13、运行结果如图 3-26所示。(分数:2.00)_正确答案:(正确答案:在命令窗口中输入命令:MODIFY COMMAND myp,在弹出的程序编辑窗口中输入如下程序段: *程序文件 myp.prg中的程序段* ALTER TABLE 部门信息 ADD人数 I SELECT部门号,COUNT(*)AS 人数 FROM雇员信息; GROUP BY 部门号; INTO CURSOR atemp DO WHILE NOT EOF() UPDATE部门信息 SET人数=atemp.人数; WHERE 部门信息.部门号=atemp.部门号 SKIP ENDDO SELECT * FROM部门信息 INTO TABLE ate * 在命令窗口执行命:DO myp,运行程序,通过 BROWSE命令可查看查询结果,程序运行结果如图 3-26所示。 )解析:解析:本大题主要考查的是 SQL语句的应用,字段的增加用到数据表的定义语句,考生应该熟悉 COUNT函数的应用,在 SQL语句设计过程中可利用临时表来存放查询结果,再利用 DO循环语句对表中的记录逐条更新。