1、国家二级 VF机试-试卷 44及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.在考生文件夹下,打开 test db数据库,完成如下操作: (1)为表 sell建立一个主索引,索引名为PK,索引表达式为:部门号+年度+月份。 (2)将自由表 datatest、model、tabe 和 pass添加到当前打开的数据库中。 (3)在当前数据库中创建表 test(部门号,年份,销售额合计),其中:部门号为字符型,宽度为 2;年份为字符型,宽度为 4;销售额合计为数值型,宽度为 8(其中小数 2位)。 (4)使用报
2、表向导建立一个简单报表,要求选择表 sell中所有字段(其他不做要求),报表文件名为 two。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)使用报表向导建立一个简单报表。要求:选择“客户”表 Customer中所有字段;记录不分组;报表样式为“随意式”;列数为“1”;字段布局为“列”;方向为“纵向”;排序字段为“会员号”(升序);报表标题为“客户信息报表”;报表文件名为“myreport”。 (2)使用命令建立一个名称为“sb_vjew”的视图,并将定义视图的命令代码存放到命令文件“pviewprg”中。视图中包括客户的会员号(
3、来自 Customer表)、姓名(来自 Customer表)、客户所购买的商品名(来自 article表)、单价(来自OrderItem表)、数量(来自 OrderItem表)和金额(OrderItem单价*OrderItem数量),结果按“会员号”升序排序。(分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.当 order_detail表中的单价修改后,应该根据该表的“单价”和“数量”字段修改 order_list表的总金额字段,现在编写程序实现此功能,具体要求和注意事项如下: 根据 order_detail表中的记录重新计算 order
4、_list表的总金额字段的值。 一条 order_list记录可以对应几条 order_detail记录。 在编程前应保证在基础操作中正确地建立了 order_list表,在简单应用中为该表追加了记录(注意:只能追加一次)。 最后将 order_list表中的记录按总金额降序排序存储到 od_new表中。(表结构与order_list表完全相同) 将程序保存为 prog1prg 文件。(分数:2.00)_国家二级 VF机试-试卷 44答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.在考生文件夹下,打开
5、 test db数据库,完成如下操作: (1)为表 sell建立一个主索引,索引名为PK,索引表达式为:部门号+年度+月份。 (2)将自由表 datatest、model、tabe 和 pass添加到当前打开的数据库中。 (3)在当前数据库中创建表 test(部门号,年份,销售额合计),其中:部门号为字符型,宽度为 2;年份为字符型,宽度为 4;销售额合计为数值型,宽度为 8(其中小数 2位)。 (4)使用报表向导建立一个简单报表,要求选择表 sell中所有字段(其他不做要求),报表文件名为 two。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口执行命令: MODIFY DATAB
6、ASE test_db ,打开 test_db数据库设计器。 右击数据库设计器中的 sell表,选择【修改】快捷菜单命令,打开 sell表设计器,选中“索引”选项卡,在“索引名”下方的文本框中输入“PK”,在“索引”选项卡中将“类型”选择为“主索引”,在表达式下方的文本框中输入“部门号+年度+月份”,建立主索引。 (2)在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的“打开”对话框中双击 datatvst表,将表添加到数据库中,以同样的方法将 model、tabc 和 pass表添加到数据库中。 (3)在数据库设计器中右击鼠标,选择【新建表】快捷菜单命令,在弹出的“新建表”对话框
7、中单击“新建表”图标按钮,然后在弹出的“创建”对话框的“输入表名”框中输入 test,单击“保存”按钮打开表设计器。 根据题意,在表设计器中逐行输入每个字段的字段名,并设置字段类型和宽度,然后单击“确定”按钮。此时系统会弹出一个对话框询问“现在输入数据记录吗?”,本题不要求录入数据,单击“否”按钮。 (4)执行【文件】【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在弹出的“新建”对话框中选中“报表”选项,然后单击“向导”图标按钮,系统弹出“向导选取”对话框,选中“报表向导”项,单击“确定”按钮,启动报表向导。 在报表向导的“步骤 1字段选取”界面的叫“数据库和表”下选中 sell表,将
8、“可用字段”中的字段全部添加到“选定字段”中。 由于本题不再要求其他操作,可以直接单击“完成”按钮跳至向导最后一个界面。继续单击“完成”按钮,在“另存为”对话框的“保存报表为:”框中输入报表文件名 two,单击“保存”按钮。)解析:解析:本题考查了表索引的建立;数据库的基本操作;数据表的建立;报表向导的使用。 根据多个字段建立索引表达式时,需要在表设计器“索引”选项卡的“表达式”中进行设置,该索引表达式可以直接输入,也可以打开“表达式生成器”建立。 向数据库中添加表需要打开数据库设计器进行添加;创建数据库表时,可以通过数据库设计器中的快捷菜单命令打开表设计器建立表。 报表向导的使用非常简单,通
9、过“新建”对话框或莱单命令启动向导后,按照向导提示完成题目所要求的设置即可。二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.(1)使用报表向导建立一个简单报表。要求:选择“客户”表 Customer中所有字段;记录不分组;报表样式为“随意式”;列数为“1”;字段布局为“列”;方向为“纵向”;排序字段为“会员号”(升序);报表标题为“客户信息报表”;报表文件名为“myreport”。 (2)使用命令建立一个名称为“sb_vjew”的视图,并将定义视图的命令代码存放到命令文件“pviewprg”中。视图中包括客户的会员号(来自 Customer表)、姓名
10、(来自 Customer表)、客户所购买的商品名(来自 article表)、单价(来自OrderItem表)、数量(来自 OrderItem表)和金额(OrderItem单价*OrderItem数量),结果按“会员号”升序排序。(分数:2.00)_正确答案:(正确答案:(1)启动报表向导,并将“Customer”表所有字段加入到报表的“可用字段”中。在向导中,设置分组记录为“无”,报表样式选择“随意式”,报表布局列数选择“1”,字段布局选择“列”,方向选择“纵向”。 选择索引标志为“会员号”(升序),并设置报表标题为“客户信息一览表” 单击“完成”按键并保存报表名为“myreport” (2)
11、在 Visual FoxtPro命令窗口输入如下命令: CREA VIEW sb_view as; SEL ECT Customer会员号,Customer姓名,Article商品名,Orderitem单价, Orderitern数量,OrderItern单价*OrderItem数量 as金额 FROM ecommerce! customer INNER JOIN commerce! orderitem INNER JOIN ecommerce! article ON Article商品号=Orderitern商品号 ON Customer会员号=Orderitem会员号 ORDER BY C
12、ustomer会员号 输入Modify Command pviewprg 命令打开程序编辑窗口,并将上述代码复制(或输入)到该文件中。 退出并保存该 PRG文件。)解析:三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.当 order_detail表中的单价修改后,应该根据该表的“单价”和“数量”字段修改 order_list表的总金额字段,现在编写程序实现此功能,具体要求和注意事项如下: 根据 order_detail表中的记录重新计算 order_list表的总金额字段的值。 一条 order_list记录可以对应几条 order_detail记录
13、。 在编程前应保证在基础操作中正确地建立了 order_list表,在简单应用中为该表追加了记录(注意:只能追加一次)。 最后将 order_list表中的记录按总金额降序排序存储到 od_new表中。(表结构与order_list表完全相同) 将程序保存为 prog1prg 文件。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令: MODIFY COMMANDprog1 ,新建程序并打开程序编辑器。 步骤 2:在程序编辑器中输入如下程序代码: CLOSE DATABASE USE ORDER_LIST SELECT 订单号,SUM(单价*数量) AS AA; FROM
14、ORDER_DETAIL; GROUP BY 订单号 ORDER BY订单号; INTO CURSOR FF SELECT ORDER_LIST DO WHILE !EOF() SELE FF LOCATE FOR订单号=ORDERLIST订单号 SELE ORDER_LIST REPLACE 总金额 WITH FFAA SKIP ENDDO SELECT * FROM ORDER_LIST ORDER BY 总金额 DESC INTO DBF OD_NEW 步骤 3:单击“常用”工具栏中的“运行”按钮运行程序。)解析:解析:本题主要考查的是程序文件的建立、DOWHILE 循环结构和 SQL分组计算查询。 本题的基本解题思路是: 以 order list表为当前表,通过 SQL分组与计算查询从 order detail表中按订单号分组计算每组订单的总金额,并按订单号排序,将结果保存到临时表中。 接着通过 do while循环逐条处理order list中订单号与临时表中订单号相同的记录,利用 replace命令修改 order_list的总金额字段值等于临时表中对应的总金颇字段值。 最后用 SQL简单查询将 order_list表中的记录保存到表 OD_NEW中。