在考生文件夹下创建一个顶层表单myform.scx(表单的标题为“考试”),然后创建并在表单中添加菜单(菜单的名称为mymenu.mnx,菜单程序的名称为mymenu.mpr)。效果如图3-7所示。 ①菜单命令“计算”和“退出”的功能都通过执行过程完成。

admin2017-03-29  37

问题 在考生文件夹下创建一个顶层表单myform.scx(表单的标题为“考试”),然后创建并在表单中添加菜单(菜单的名称为mymenu.mnx,菜单程序的名称为mymenu.mpr)。效果如图3-7所示。

①菜单命令“计算”和“退出”的功能都通过执行过程完成。
②菜单命令“计算”的功能是根据orderitems表和goods表中的相关数据计算各订单的总金额(一个订单的“总金额”等于它所包含的各商品的金额之和,每种商品的“金额”等于“数量*单价”),并将计算的结果填入orders表的相应字段中。
③菜单命令“退出”的功能是释放并关闭表单。
最后,请运行表单并依次执行其中的“计算”和“退出”菜单命令。

选项

答案步骤1:命令窗口执行: CREATE FORM myform,打开表单设计器新建表单。设置表单(forml)的Caption属性为“考试”。 步骤2:命令窗口执行: CREATE MENU mymenu,在“新建菜单”对话框中单击“菜单”按钮,打开菜单设计器。 步骤3:在菜单设计器“菜单名称”列的文本框中依次输入“计算”和“退出”两个主菜单名,将两个菜单项的“结果”都设置为“过程”,分别单击两个过程后面的“创建”按钮打开过程编辑器,编写过程代码。 步骤4:两个过程代码如下: *****“计算”菜单命令的过程代码***** CLOSE ALL USE orders &&以orders表为当前表 DO WHILE NOT EOF() SELECT SUM (Orderitems.数量*Goods.单价) ZJE; FROM 订单管理!orderitems INNER JOIN goods; ON Orderitems.商品号=Goods.商品号; WHERE Orderitems.订单号=Orders.订单号; GROUP BY Orderitems.订单号; INTO ARRAY TEMP REPLACE 总金额 WITH TEMP SKIP ENDDO *****“退出”菜单命令的过程代码***** myform.release 步骤5:执行【显示】→【常规选项】菜单命令,在“常规选项”对话框中勾选“顶层表单”复选框,单击“确定”按钮,保存修改。 步骤6:执行【菜单】→【生成】菜单命令,在弹出的对话框中单击“是”按钮,弹出“生成菜单”对话框,单击“生成”按钮生成一个可执行的菜单文件( mymenu.mpr)。 步骤7:命令窗口执行: MODIFY FORM myform,打开表单设计器。选中表单,设置表单( forml)的Show Window属性值为“2.作为顶层表单”。 步骤8:编写表单的LOAD事件代码如下: DO mymenu.mpr WITH THIS,.T. 步骤9:单击“常用”工具栏中的“运行”查看结果,保存表单文件,并分别执行“计算”和“退出”菜单命令。为顶层表单添加菜单;SQL分组与计算查询。

解析 本题主要考查了表单及常用控件的属性的设置、SQL分组计算查询、菜单的建立、顶层表单的设置、DO WHILE循环语句。
本题的重点是如何建立顶层表单和“计算”菜单项过程的编写。为顶层表单添加下拉式菜单,应先在“菜单设计器”中按要求设计下拉式菜单,然后做两个设置:一是在“显示”  菜单下的“常规选项”对话框中选择“顶层表单”复选框,说明该菜单应用在顶层菜单中,二是将表单的  showwindow属性值设置成“2—作为顶层表单”,使其成为顶层表单。
在顶层表单中运行菜单,格式为:
DO<文件名>WITH This[,"<菜单名>"]
其中文件名指定被调用的菜单程序文件,扩展名.mpr不能省略。This表示当前表单对象的引用。通过<菜单名>可以为被添加的下拉式菜单的条形菜单指定一个内部名字,可以省略。在顶层表单的菜单中关闭表单,应该引用表单的名称(NAME值),并使用Release方法关闭表单:<表单名称>.Release。
“计算”菜单项过程的编写思路大概是:
先以orders表为当前表,利用DO WHILE循环语句对每条记录进行处理。DO WHILE语句的功能是:从orderitems表和goods表中求出和orders表当前记录“订单号”相同的订单的总金额,并把该值保存在数组中,再用REPLACE命令将orders表当前记录的“总金额”字段值修改为数组中的值,即该订单的总金额。注意:在通过orderitems表和goods表查询某订单的总金额时,应该以“订单号”分组,用SUM()函数求各商品的金额之和。然后将记录指针指向orders表的下一条记录,重新进行判断和处理,直到将orders表中的每一条记录都处理完毕。
转载请注明原文地址:https://jikaoti.com/ti/Spk0FFFM
0

最新回复(0)