1、国家二级 VF机试-试卷 77及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.(1)打开数据库“外汇”,通过“外币代码”字段为“外汇代码”和“外汇账户”建立永久联系。 (2)新建一个名为“外汇管理”的项目文件,将数据库“外汇”加入“外汇管理”项目中。 (3)修改 mymenu菜单文件,为“文件”下的子菜单项“查找”设置访问键 F。 (4)修改 oneprg 中的 SQL语句,使之正确(该语句的功能是从 rate表中删除币种 1代码为 14,并且币种 2代码为 27的记录)。(分数:2.00)_二、简单应用
2、题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.在考生文件夹下完成如下简单应用: (1)用 SQL语句完成下列操作:列出所有赢利(现价大于买入价)的股票简称、现价、买入价和持有数量,并将检索结果按持有数量降序排序存放于表 stockl_temp中。 (2)使用一对多报表向导建立报表。要求:父表为 stock_name,子表为 stock_s1,从父表中选择字段“股票简称”;从子表中选择全部字段:两个表通过“股票代码”建立联系;按股票代码升序排序;报表标题为“股票持有情况”;生成的报表文件名为 stock report。(分数:2.00)_三、综合应用题(总题数:2,分
3、数:4.00)5.综合应用题()(分数:2.00)_6.首先将 order_detail表全部内容复制到 od_bak表,然后完成如下操作: (1)将 od_bak表中的订单号字段值只保留最后一个字母(用 REPLACE命令或 SQLUPDATE命令完成修改)。 (2)用 SQL语句对 od bak表编写完成如下功能的程序: 把“订单号”相同并且“器件号”相同的订单合并为一条记录,“单价”取最低价,“数量”取合计。 结果先按新的“订单号”升序排序,再按“器件号”升序排序。 最终记录的处理结果保存在 od new表中,表中的字段由“订单号”、“器件号”、“器件名”、“单价”和“数量”构成。 (3
4、)最后将程序保存为 prog1prg,并执行该程序。(分数:2.00)_国家二级 VF机试-试卷 77答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.(1)打开数据库“外汇”,通过“外币代码”字段为“外汇代码”和“外汇账户”建立永久联系。 (2)新建一个名为“外汇管理”的项目文件,将数据库“外汇”加入“外汇管理”项目中。 (3)修改 mymenu菜单文件,为“文件”下的子菜单项“查找”设置访问键 F。 (4)修改 oneprg 中的 SQL语句,使之正确(该语句的功能是从 rate表中删除币种 1代码
5、为 14,并且币种 2代码为 27的记录)。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口执行命令: MODIFY DATABASE 外汇 ,打开数据库设计器。 在数据库设计器中,右击“外汇代码”表,选择【修改】快捷菜单命令,打开“外汇代码”表设计器,在“字段”选项卡中选中“外币代码”,在“索引”列中选择“升序”,然后在“索引”选项卡中修改“类型”为“主索引”,单击“确定”按钮保存表结构修改。 在数据库设计器中,右击“外汇账户”表,选择【修改】快捷菜单命令,打开“外汇账户”表设计器,选中“字段”选项卡中的“外币代码”,在“索引”列中选择“升序”,单击“确定”按钮保存表结构修改。 拖
6、动“外汇代码”表“索引”下方的主索引“外币代码”到“外汇账户”表中“索引”下方的普通索引“外币代码”上,为两个表建立联系。(2)在命令窗口执行命令: CREATE PROJECT 外汇管理 ,新建一个项目管理器。 在项目管理器中,选中“数据”选项卡内的“数据库”项,然后单击“添加”按钮,在弹出的“打开”对话框中双击“外汇”数据库文件,将数据库添加到项目管理器中。如图 2-45所示。 )解析:解析:本大题考查了项目管理器的建立及使用、永久联系的建立、菜单设计器的使用和 SQL查询语句。 建立两个表的永久联系时,有一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引。本题中,应先
7、以“外币代码”为关联字段在“外汇代码”表中建立主索引,在“外汇账户”表中建立普通索引,然后再建立联系。 在菜单设计器中,为菜单项设置访问键的方法是在要作为访问键的字符前加“”两个字符。注意:在对菜单进行修改后要保存并生成菜单程序文件。 SOL 语句中删除记录的命令是 delete from,删除条件应该用 where短语。二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.在考生文件夹下完成如下简单应用: (1)用 SQL语句完成下列操作:列出所有赢利(现价大于买入价)的股票简称、现价、买入价和持有数量,并将检索结果按持有数量降序排序存放于表 stock
8、l_temp中。 (2)使用一对多报表向导建立报表。要求:父表为 stock_name,子表为 stock_s1,从父表中选择字段“股票简称”;从子表中选择全部字段:两个表通过“股票代码”建立联系;按股票代码升序排序;报表标题为“股票持有情况”;生成的报表文件名为 stock report。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口输入命令:MODIFY Command query1,打开文件编辑器,输入如下程序: *文件 query1.prg文件中的程序段* SELECT stock name股票简称;stock_s1 现价,stock s1.买入价,; Stock s1 持
9、有数量; FROMstock!stock_name INNER JOIN stock!stock_s1; ON stock name.股票代码=stock s1 股票代码; WHERE stock s1.现价stock s1.买入价; ORDER BY stock s1.持有数量 DESC; INTO TABLE stock_temp.dbf * 在命令窗口输入命令;DO query1,执行程序,查询结果自动保存到新表中。 (2)利用菜单命令“文件”“新建”,或从常用工具栏中单击新建按钮,在弹出的“新建”对话框中选择“报表”单选项,再单击“向导”按钮,系统弹出“向导选取”对话框,在列表框中选择
10、“一对多报表向导”,单击“确定”按钮。 选择“一对多报表向导”后,系统首先要求选择一对多报表中作为父表的数据表文件,根据题意,选择 stock name表作为父表,如图 3-122所示。从“可用字段”列表框中将“股票简称”字段添加到右边的“选定字段”列表框中,用作父表的可用字段。单击“下一步”设计子表的可用字段,操作方法与父表选取字段的方法一样,将 stock s1表中的所有字段添加到“选定字段”列表框中,如图 3-123所示。 单击“下一步”进入“建立表关联”的设计界面,在此处系统已经默认设置好进行关联的字段:父表的“股票代码”和子表的“股票代码”字段。 单击“下一步”进入“选择排序方式”方
11、式的设计界面,将“股票代码”字段添加到右边的“选定字段”列表框中,并选择“升序”单选项。 单击“下一步”进入“选择报表样式”的界面,此处保持默认的设置。 单击“下一步”进入最后的“完成”设计界面,在“标题”文本框中输入“股票持有情况”为报表添加标题,单击“完成”命令按钮,在系统弹出的“另有为”对话框中,将报表以 stock_repod文件名保存在考生文件夹下,退出报表设计向导。 )解析:解析:本大题 1小题为 SQL简单的联接查询,注意每个表中输出字段的选取以及进行关联字段的选择即可。2 小题主要考查报表向导的使用,只要根据每个向导界面的提示来完成相应的步骤即可。三、综合应用题(总题数:2,分
12、数:4.00)5.综合应用题()(分数:2.00)_解析:6.首先将 order_detail表全部内容复制到 od_bak表,然后完成如下操作: (1)将 od_bak表中的订单号字段值只保留最后一个字母(用 REPLACE命令或 SQLUPDATE命令完成修改)。 (2)用 SQL语句对 od bak表编写完成如下功能的程序: 把“订单号”相同并且“器件号”相同的订单合并为一条记录,“单价”取最低价,“数量”取合计。 结果先按新的“订单号”升序排序,再按“器件号”升序排序。 最终记录的处理结果保存在 od new表中,表中的字段由“订单号”、“器件号”、“器件名”、“单价”和“数量”构成。
13、 (3)最后将程序保存为 prog1prg,并执行该程序。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令: SELECT * FROMorder_detail INTO TABLE od_bak ,将 order_detail表的全部内容复制到 od_bak表中。 步骤 2:在命令窗口执行命令: UPDATE od_bak SET订单号=RIGHT(ALLTRIM(订单号),1) ,将 od_bak表中的“订单号”字段值只保留最后一个字母。 步骤 3:在命令窗口执行命令: MODIFY COMMAND PROG1 ,新建程序并打开程序编辑器。 步骤4:在程序编辑器中输入
14、如下程序代码: SELECT 订单号,器件号,器件名; MIN(单价) AS 单价,SUM(数量) AS 数量; FROM OD_BAK; GROUP BY 订单号,器件号; ORDER BY 订单号,器件号; INTO TABLE OD_NEW 步骤 5:单击“保存”按钮,并运行程序。)解析:解析:本题主要考查的是程序的建立方法、SQL 分组与计算查询语句、记录的修改方法。本题的SQL分组与计算查询语句比较复杂,本题大概可以分为以下几步:首先利用 select语句将 order_detail表的记录复制到新表中,该语句比较简单。 接着,利用 UPDATE语句更新表中的记录值,不熟悉 UPDATE语句的考生也可以通过 replace.with.命令更新。 最后,通过 SQL分组与计算查询语句对记录进行合并,其中用到了 min()和 sum()函数计算,分组语句则要求同时对两个字段进行分组,首先是按订单号字段分组,接着再按配件号分组,分组计算完毕之后,再通过 order by短语对查询结果进行排序,最后保存查询结果到新表中。