1、国家二级 VF 机试(操作题)-试卷 121 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开“订货管理”数据库,并将表 order list 添加到该数据库中。 (2)在“订货管理”数据库中建立表 customer,表结构描述如下: 客户号 字符型(6) 客户名 字符型(16) 地址 字符型(20) 电话 字符型(14) (3)为新建立的 customer 表创建一个主索引,索引名和索引表达式均是“客户号”。 (4)将表order detail 从数据库中移出,并永久删除。(分数:2.00)_二、简单应用题(总题数:1,分数:2.0
2、0)2.(1)用 SQL 语句进行以下查询:查询“外汇账户”表中的日元信息。查询结果包括钞汇标志、金额,结果按金额降序排序,并存储于表 twodbf 中,并将 SQL 语句存储于新建的 threetxt 文件中。 (2)用一对多报表向导建立报表,“外汇代码”表为父表,“外汇账户”表为子表。要求:选择父表和子表中的全部字段;用“外币代码”字段为两个表建立关系;排序方式为按“外币代码”升序:报表样式为“帐务式”,方向为“横向”;报表标题为“外汇账户情况”;报表文件名为 report account。然后在报表设计器中修改该报表,在报表标题带区的右端利用 OLE 对象插入文件 picturegif。
3、(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.在做本题前首先确认在基础操作中已经正确地建立了 order_detail 表,在简单应用中已经成功地将记录追加到 order_detail 表。 当 order_detail 表中的“单价”修改后,应该根据该表的“单价”和“数量”字段修改 order_list 表的“总金额”字段,现在有部分 order_list 记录的“总金额”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为 odmod 的表中(与 order_list 表结构相同,自己建立),然后根据 order_detail 表的“单价”和“数量”字段修
4、改 od_mod 表的“总金额”字段(注意一个 od_mod 记录可能对应几条 order_detail 记录),最后 od_mod 表的结果要求按“总金额”升序排序,编写的程序最后保存为 proglprg。(分数:2.00)_国家二级 VF 机试(操作题)-试卷 121 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开“订货管理”数据库,并将表 order list 添加到该数据库中。 (2)在“订货管理”数据库中建立表 customer,表结构描述如下: 客户号 字符型(6) 客户名 字符型(16) 地址 字符型(20) 电话 字符
5、型(14) (3)为新建立的 customer 表创建一个主索引,索引名和索引表达式均是“客户号”。 (4)将表order detail 从数据库中移出,并永久删除。(分数:2.00)_正确答案:(正确答案:(1)命令窗口执行:MODIFY DATABASE 订货管理,打开数据库设计器。右击数据库设计器选择【添加表】,在“打开”对话框中双击 order_list 表添加到数据库中。 (2)右击数据库设计器,选择【新建表】,在“新建表”对话框中单击“新建表”按钮,在“创建”对话框的“输入表名”框输入“customer”,单击“保存”打开表设计器。 在表设计器中逐行输入每个字段的字段名,设置字段类
6、型和宽度,单击“确定”按钮,系统询问“现在输入数据记录吗?”,单击“否”。 (3)右击数据库设计器中的 customer 表,选择【修改】,打开 customer 表设计器,在“字段”选项卡中选“客户号”,“索引”列中选“升序”,在“索引”选项卡中修改“索引类型”为主索引,建立“客户号”字段的主索引,单击“确定”按钮保存表结构修改。 (4)右击数据库设计器中的 order detail 表,选择【删除】,在弹出的对话框中单击“删除”按钮永久删除。)解析:解析:本题考查了数据库及表的基本操作;索引的建立。 向数据库中添加表在数据库设计器中完成。在袁设计器的“字段”选项卡中可通过选择“排序”下拉框
7、中的“升序”和“降序”为指定的字段建立一个索引名与索引表达式相同的普通索引,“索引”选项卡中可改变索引名或索引类型。二、简单应用题(总题数:1,分数:2.00)2.(1)用 SQL 语句进行以下查询:查询“外汇账户”表中的日元信息。查询结果包括钞汇标志、金额,结果按金额降序排序,并存储于表 twodbf 中,并将 SQL 语句存储于新建的 threetxt 文件中。 (2)用一对多报表向导建立报表,“外汇代码”表为父表,“外汇账户”表为子表。要求:选择父表和子表中的全部字段;用“外币代码”字段为两个表建立关系;排序方式为按“外币代码”升序:报表样式为“帐务式”,方向为“横向”;报表标题为“外汇
8、账户情况”;报表文件名为 report account。然后在报表设计器中修改该报表,在报表标题带区的右端利用 OLE 对象插入文件 picturegif。(分数:2.00)_正确答案:(正确答案:(1) 步骤 1:在命令窗口执行命令: MODIFY FILE three ,打开文本编辑器编写SQL 命令。 步骤 2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成): SELECT 外汇账户炒汇标志,外汇账户金额; FROM 外汇!外汇账户; ORDER BY 外汇账户金额 DESC; INTO TABLE twodbf 步骤 3:在命令窗口执行命令:DOthreetxt,执行文件(
9、注意:执行文件时,文件后缀名txt 不能缺省)。 (2) 步骤 1:在命令窗口执行命令: OPEN DATABASE 外汇 ,打开“外汇”数据库。步骤 2:执行【文件】【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在“新建”中选“报表”选项,单击“向导”按钮,在“向导选取”中选“一对多报表向导”项,单击“确定”按钮,启动报表向导。 步骤 3: “步骤 1-从父表选择字段”的“数据库和表”下选中“外汇代码”表,将“可用字段”全部添加到“选定字段”中,单击“下一步”按钮。 步骤 4:“步骤 2-从子表选择字段”的“数据库和表”下选“外汇帐户”表,将“可用字段”全部添加到“选定字段”中,单击
10、“下一步”按钮。 步骤 5:“步骤 3-为表建立关系”界面中系统自动建立两个表的联系,单击“下一步”按钮。 步骤6:“步骤 4排序记录”中双击“可用的字段或索引标识”中的“外币代码”字段到“选定字段”列表中,再选择“升序”,单击“下一步”按钮。 步骤 7: “步骤 5选择报表样式”的“样式”下选中“账务式”,在“方向”下选择“横向”,单击“下一步”按钮。 步骤 8:“步骤 6完成”界面中的“报表标题”下方文本框中输入“外汇账户情况”,单击“完成”按钮。 步骤 9:在“另存为”对话框的“保存报表为:”框中输入表单文件名 report account,单击“保存”按钮。 步骤 10:在命令窗口执行
11、命令: MODIFY REPORT report_account ,打开 report account 报表设计器。 步骤 11:在“报表控件”工具栏中单击“图片ActiveX 绑定控件”按钮,然后在报表标题带区的右端单击并拖动鼠标拉出图文框,弹出如图 334 所示的“报表图片”对话框,选中对话框“图片来源”下的“文件”选项,接着单击后面的表达式按钮,弹出“打开”对话框,选中要插入的图片 picturegif,单击“确定”按钮,返回“报表图片”对话框,继续单击“确定”按钮关闭对话框,可以看到报表设计器的“标题”区域增加了一个图片,如图 335 所示。 )解析:解析:(1)本题是简单的 SQL
12、单表查询。将查询结果保存在永久表中,应使用 INTO TABLE 短语。 (2)本题主要考查的是报表向导的使用和报袁设计器的使用。可以通过“新建”对话框打开报表后,根据向导提示完成即可。用向导制作完报袁后,再在报表设计器中修改报表。要在报表中插入图片,需要添加“图片ActiveX 绑定控件”。三、综合应用题(总题数:1,分数:2.00)3.在做本题前首先确认在基础操作中已经正确地建立了 order_detail 表,在简单应用中已经成功地将记录追加到 order_detail 表。 当 order_detail 表中的“单价”修改后,应该根据该表的“单价”和“数量”字段修改 order_lis
13、t 表的“总金额”字段,现在有部分 order_list 记录的“总金额”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为 odmod 的表中(与 order_list 表结构相同,自己建立),然后根据 order_detail 表的“单价”和“数量”字段修改 od_mod 表的“总金额”字段(注意一个 od_mod 记录可能对应几条 order_detail 记录),最后 od_mod 表的结果要求按“总金额”升序排序,编写的程序最后保存为 proglprg。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令: MODIFY COMMAND progl ,
14、打开程序文件编辑器输入如下程序代码: SELECT 订单号,SUM(单价*数量)AS 总金额; FROM order_detail; GROUP BY 订单号; INTO CURSOR arrtable SELECT order_liSt*; FROM order_liSt , arrtable; WHERE order list订单号=arrtable 订单号 AND order_list总金额 arrtable总金额; INTO TABLE Od_mod USE Od_mod DO WHILE NOT EOF() SELECT arrtable总金额 FROM arrtable ; WHE
15、RE arrtable订单号=od_mod订单号; INTO ARRAY arr REPLACE 总金额 WITH arr SKIP ENDDO CLOSE ALL SELECT*FROM od_mod ORDER BY 总金额; INTO CURSOR arrtable1 SELECT * FROM arrtablel INTO TABLE Od_mod 步骤 2:保存文件修改,在命令窗口执行命令:DO proglprg,执行程序文件。)解析:解析:本题主要考查 SQL 分组计算查询;DO WHILE 循环结构。本基本解题思路可按以下步骤进行:首先,根据 order_detail 表的“单价
16、”和“数量”数据,利用分组计算查询求出每组订单的“总金额”,将结果保存到一个临时表中。 然后,通过对 order_1iSt 表和临时表的联接查询,找出 order_list 表中“总金额”字段与临时表中“总金额”不相同的记录,并将 order_list 表中这些“总金额”不相同的记录输出到 od_mod 表中。 接着利用 DO WHILE 循环语句对 od_mod 表中的每条记录进行处理。通过 SQL 查询语句从临时表中先获得与 od_mod 表当前所指记录“订单号”相同的“总金额”字段值,将该值保存到数组中,再通过 REPLACE 命令修改 od_mod 表当前记录的值,每处理完一条记录,记录指针便指向下一条记录,一直到处理完 od_mod 表中的所有记录。 最后将 od_mod 表的记录按“总金额”排序,由于查询结果不能覆盖正在作为查询数据源的表,因此,可以通过一个临时表过渡,保存排序的表记录,再通过临时表将排好序的记录保存到原数据表中。