在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前Visual FoxPro系统菜单的“帮助”子菜单之前插入一个“考试”子菜单,如图1-16所示。 菜单命令“统计”和“返回”的功能都

admin2013-03-31  23

问题 在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前Visual FoxPro系统菜单的“帮助”子菜单之前插入一个“考试”子菜单,如图1-16所示。

    菜单命令“统计”和“返回”的功能都通过执行过程完成。
    菜单命令“统计”的功能是以组为单位求订单金额的和。统计结果包含“组别”、“负责人”和“合计”3项内容,其中“负责人”为该组组长(由employee中的“职务”
一项指定)的姓名,“合计”为该组所有职员所签订单的金额总和。统计结果应按“合计”降序排序,并存放在tabletwo表中。
    菜单命令“返回”的功能是返回标准的系统菜单。
    菜单程序生成后,运行菜单程序并依次执行“统计”和“返回”菜单命令。

选项

答案步骤1:在命令窗口执行命令:CREATE MENU mymenu,在弹出的“新建菜单”对话框中单击“菜单”图标按钮,打开菜单设计器。 步骤2:在菜单设计器“菜单名称”列的文本框中输入“考试”,在“结果”下拉框中选择“子菜单”,单击“创建” 按钮进入下级菜单设计,在“菜单名称”列的第1、2行文本框中依次输入子菜单名“统计”、“返回”,将“统计”和“返回”子菜单的“结果”都设置为“过程”,单击“统计”子菜单行的“创建”命令按钮,打开过程编辑框编写过程代码。 步骤3:两个子菜单的命令代码如下: *****“统计”子菜单的过程代码***** SELECT Employee.组别,SUM(Orders.金额) AS合计; FROM订单管理!employee INNER JOIN订单管理!orders; ON Employee.职员号=Orders.职员号; GROUP BY Employee.组别; INTO CURSOR RES SELECT Res.组别,Employee.姓名AS负责人,Res.合计,FROM Res,Employee; WHERE Res.组别 =Employee.组别; AND Employee.职务=”组长”; ORDER BY Res.合计DESC; INTO TABLE tabletwo.dbf *****“返回”子菜单的命令代码***** SET SYSMENU NOSAVE SET SYSMENU TO DEFAULT 步骤4:执行【显示】→【常规选项】菜单命令,在“位置”区域选中“在…之前”单选项,然后在该选项后面出现的下拉框中选择“帮助(H)”。则新建立的子菜单会在当前Visual FoxPro系统菜单的“帮助”菜单命令前显示。 步骤5:执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击“是”按钮,接着系统会弹出“生成菜单”对话框,单击“生成”按钮生成一个可执行的菜单文件。 步骤6:在命令窗口执行命令:DO mymenu.mpr,运行菜单,并执行“统计”菜单命令。

解析 本大题考查菜单的建立及使用;SQL简单联接查询和分组计算查询。
    表的建立和菜单的建立都属于比较基本的操作,注意向系统菜单追加菜单项时,应在菜单设计器中打开“常规选项”对话框进行设置。本题的关键是菜单命令中SQL查询、插入和更新语句的设计。编写程序代码基本思路如下:
    首先利用SQL计算查询,统计每组的订单金额总和,将结果保存到临时表中,其中,利用SUM()函数可以计算订单金额总和,利用GROUP BY短语按“组别”字段分细计算。
    接着,对新生成的临时表与Emp1表进行联接查询,两个表的联接字段为“组别”(注意:该字段要作为临时表的输出字段,此处才可以进行联接),同时,通过WHERE短语筛选Empl表中职务为“组长”的职员记录(这可以保证一个订单金额总和字段仅与一条职员信息联接,否则将导致查询结果表中会生成多条职员记录与订单金额总和联接,因为同一个“组别”中有多个职员记录);最后将查询结果保存到永久性表中,完成查询。
    菜单设计完成后,注意要生成可执行的菜单文件,并执行“统计”菜单命令。
转载请注明原文地址:https://kaotiyun.com/show/Irsp777K
0

最新回复(0)