1、上机操作题-试卷 99 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.首先将 order_detail 表全部内容复制到 od_bak 表,然后完成如下操作:将 od_bak 表中的订单号字段值只保留最后一个字母(用 REPLACE 命令或 SQLUPDATE 命令完成修改)。用 SQL 语句对 od bak 表编写完成如下功能的程序: 把“订单号”相同并且“器件号”相同的订单合并为一条记录,“单价”取最低价,“数量”取合计。 结果先按新的“订单号”升序排序,再按“器件号”升序排序。 最终记录的处理结果保存在 od new 表中,表中的字段由
2、“订单号”、“器件号”、“器件名”、“单价”和“数量”构成。最后将程序保存为 prog1prg,并执行该程序。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下完成如下简单应用:(1)用 SQL 语句完成下列操作:列出所有与“红”颜色零件相关的信息(供应商号、工程号和数量),并将查询结果按数量降序存放于表“supply_temp”中。(2)新建一个名为“menu_quick”的快捷菜单,菜单中有两个菜单项:“查询”和“修改”,并在表单 myform 的RightClick 事件中调用快捷菜单 menu_quick。(分数:2.00)_三、综合应用题(总题数:1,
3、分数:2.00)3.(1)请编写名称为 change_ c 的程序并执行。该程序实现下面的功能:将雇员工资表 salarys 进行备份,备份文件名为 baksals.dbf。利用“人事部”向“财务部”提供的雇员工资调整表 c_salary1 的“工资”,对 salarys 表的“工资”进行调整(请注意:按“雇员号”相同进行调整,并且只是部分雇员的工资进行了调整,其他雇员的工资不动)。最后将 salarys 表中的记录存储到 od _ new 表中(表结构与 salarys 表完全相同)。(2)设计一个文件名为 form2 的表单,其中包含“调整”(名称 Command1)和“退出”(名称Com
4、mand2)两个命令按钮。 单击“调整”命令按钮时,调用 change_ c 命令程序实现工资调整。 单击“退出”命令按钮时,关闭表单。 注意:在两个命令按钮中均只有一条命令,不可以有多余命令。(分数:2.00)_上机操作题-试卷 99 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.首先将 order_detail 表全部内容复制到 od_bak 表,然后完成如下操作:将 od_bak 表中的订单号字段值只保留最后一个字母(用 REPLACE 命令或 SQLUPDATE 命令完成修改)。用 SQL 语句对 od bak 表编写完成如下功能的程序
5、: 把“订单号”相同并且“器件号”相同的订单合并为一条记录,“单价”取最低价,“数量”取合计。 结果先按新的“订单号”升序排序,再按“器件号”升序排序。 最终记录的处理结果保存在 od new 表中,表中的字段由“订单号”、“器件号”、“器件名”、“单价”和“数量”构成。最后将程序保存为 prog1prg,并执行该程序。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令:SELECT * FROMorder_detail INTO TABLE od_bak,将 order_detail 表的全部内容复制到 od_bak 表中。 步骤 2:在命令窗口执行命令:UPDATE o
6、d_bak SET 订单号=RIGHT(ALLTRIM(订单号),1),将 od_bak 表中的“订单号”字段值只保留最后一个字母。 步骤 3:在命令窗口执行命令:MODIFY COMMAND PROG1,新建程序并打开程序编辑器。 步骤 4:在程序编辑器中输入如下程序代码: SELECT 订单号,器件号,器件名; MIN(单价) AS 单价,SUM(数量) AS 数量; FROM OD_BAK; GROUP BY 订单号,器件号; ORDER BY 订单号,器件号; INTO TABLE OD_NEW 步骤 5:单击“保存”按钮,并运行程序。 本题主要考查的是程序的建立方法、SQL 分组与计
7、算查询语句、记录的修改方法。本题的 SQL 分组与计算查询语句比较复杂,本题大概可以分为以下几步:首先利用 select 语句将 order_detail 表的记录复制到新表中,该语句比较简单。 接着,利用 UPDATE 语句更新表中的记录值,不熟悉 UPDATE 语句的考生也可以通过 replace.with.命令更新。 最后,通过SQL 分组与计算查询语句对记录进行合并,其中用到了 min()和 sum()函数计算,分组语句则要求同时对两个字段进行分组,首先是按订单号字段分组,接着再按配件号分组,分组计算完毕之后,再通过 order by 短语对查询结果进行排序,最后保存查询结果到新表中。
8、)解析:二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下完成如下简单应用:(1)用 SQL 语句完成下列操作:列出所有与“红”颜色零件相关的信息(供应商号、工程号和数量),并将查询结果按数量降序存放于表“supply_temp”中。(2)新建一个名为“menu_quick”的快捷菜单,菜单中有两个菜单项:“查询”和“修改”,并在表单 myform 的RightClick 事件中调用快捷菜单 menu_quick。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口中输入命令: SELECT 供应供应商号,供应工程号,供应数量 FROM 零件,供应 WHERE 供应零件号=零
9、件零件号 AND 零件颜色=“红“ ORDER BY 供应数量 desc INTO DBF supply_temp (回车执行) (2)选择【文件】【新建】命令,选择“菜单”,单击“新建文件”按钮,再单击“快捷菜单”按钮,打开菜单设计器,在“菜单名称”中输入“查询”“修改”,在“结果”下拉列表框中选择“子菜单”,选择【菜单】【生成】命令,将菜单保存为“menu_quick”,生成一个菜单文件。 选择【文件】【打开】命令,在“打开”对话框中的“文件类型”下拉列表框中选择“表单”,选择“myform”,单击“确定”按钮打开表单设计器。 双击表单设计器空白处,在打开的对话框中的“过程”下拉列表框中选
10、择“rightclick”,并输入代码:do menumpr。)解析:三、综合应用题(总题数:1,分数:2.00)3.(1)请编写名称为 change_ c 的程序并执行。该程序实现下面的功能:将雇员工资表 salarys 进行备份,备份文件名为 baksals.dbf。利用“人事部”向“财务部”提供的雇员工资调整表 c_salary1 的“工资”,对 salarys 表的“工资”进行调整(请注意:按“雇员号”相同进行调整,并且只是部分雇员的工资进行了调整,其他雇员的工资不动)。最后将 salarys 表中的记录存储到 od _ new 表中(表结构与 salarys 表完全相同)。(2)设计
11、一个文件名为 form2 的表单,其中包含“调整”(名称 Command1)和“退出”(名称Command2)两个命令按钮。 单击“调整”命令按钮时,调用 change_ c 命令程序实现工资调整。 单击“退出”命令按钮时,关闭表单。 注意:在两个命令按钮中均只有一条命令,不可以有多余命令。(分数:2.00)_正确答案:(正确答案:本大题 1 小题主要是考查 SQL 的查询、定义和更新语句,在更新数据表中的记录时,可利用 DO 循环对表中的记录进行逐条更新;2 小题为表单的基本设计,在命令按钮中调用程序的命令,直接通过 DO 命令来实现。 在命令窗口输入命令:MODIFY COMMAND ch
12、ange_ c,打开程序编辑器,编写如下程序段: *change_ c.prg 文件中的程序段* SET TALK OFF SET SAFETY OFF SELECT * FROM salarys INTO TABLE baksals USE c_salary1 DO WHILE NOT EOF() UPDATE salarys SET 工资=c salary1.工资; WHERE 雇员号=c_salary1.雇员号 SKIP ENDDO SELECT*FROM SALARYS INTO TABLE od_ new CLOSE ALL SET TALK ON SET SAFETY ON * 保存文件,在命令窗口输入命令:DO change _c,运行该文件。 (2)在命令窗口输入命令:CREATE FORM form2,打开表单设计器,根据题意,通过“表单控件”工具栏,在表单中添加两个命令按钮,在属性面板中,分别修改两个命令按钮的 Caption 属性值为“调整”,和“退出”,如图所示。 )解析: