“实现主从关系Form中汇总行金额/数量”,这句话在百度一搜,你就会看到N多篇文章专门讲这个东西,出处基本都是张老大提供的技术文档

想当初俺也意识到这是个不错的东西收藏了一下,这不,现在实际的用上了!

但是按照该文章讲的方法做,出现了几个问题。

1.       头在post_query之后total_amount虽有赋值动作,但是又马上变成0了!

2.       行BLOCK如果设置为不能删除,点击删除按钮会不停地扣减合计金额。

3.       行上单独查询出一行进行更改,保存,之后再次查询,合计金额显示错误。

之后继续搜了下,通过以下文章头2个问题得到了解决:

1.       Post_query设置total_amount之后,还需设置total_amount_rtot_db

2.       Key-delerec加上CUX_PO_LINES_PKG.running_total('UNDELETE');

至于第三个问题,我的作法是这样的:

在行的POST_QUERY之后继续做一遍头的POST_QUERY赋值TOTAL_AMOUNT

这里整理一下暂时看着还没有bug的主从金额汇总方法:

说明:

主块CUX_OM_HEADER.TOTAL_AMOUNT需要汇总从块CUX_OM_LINE.LINE_AMOUNT,LINE_AMOUNT根据CUX_OM_LINE.ORDER_QUANTITY* CUX_OM_LINE.UNIT_SELLING_PRICE计算得到

步骤:

1.       在主块CUX_OM_HEADER创建零时汇总项目,:_RTOT_DB,NUMBER(38)/DISPLAY_ITEM,TOTAL_AMOUNT_RTOT_DB,非数据库项,不显示

2.       在从块创建2个零时统计项目,一个_RTOT_OLD,另一个_RTOT_DB,类型CHAR(61) DISPLAY_ITEM,LINE_AMOUNT_RTOT_DB、LINE_AMOUNT_RTOT_OLD,非数据库项,不显示

3.       计算汇总调用的方法:

--计算汇总金额

PROCEDURE running_total(p_event VARCHAR2) IS

BEGIN

app_calculate.running_total(p_event, 'CUX_OM_LINE.LINE_AMOUNT', 'CUX_OM_HEADER.TOTAL_AMOUNT');

END running_total;

4.       数量或者单价更改,WHEN-VALIDATE-ITEM

CUX_OM_LINE_PKG.event('AMOUNT_INIT');

CUX_OM_LINE_PKG.running_total('WHEN-VALIDATE-ITEM');

包计算行金额

ELSIF p_event = 'AMOUNT_INIT' THEN

:CUX_OM_LINE.LINE_AMOUNT := :CUX_OM_LINE.ORDER_QUANTITY * :CUX_OM_LINE.UNIT_SELLING_PRICE;

5.       主块POST_QUERY

cux_om_header_pkg.event('POST-QUERY');

SELECT nvl(SUM(cola.order_quantity* cola.unit_selling_price),0)

INTO :cux_om_header.total_amount

FROM cux_order_lines_all cola

WHERE cola.cux_order_header_id =:cux_om_header.cux_order_header_id;

:cux_om_header.total_amount_rtot_db :=:cux_om_header.total_amount;

6.       从快触发器

KEY-DELREC

CUX_OM_LINE_PKG.running_total('KEY-DELREC');

delete_record;

CUX_OM_LINE_PKG.running_total('UNDELETE');

KEY-DUPREC

CUX_OM_LINE_PKG.running_total('KEY-DUPREC');

duplicate_record;

KEY-CLRREC

CUX_OM_LINE_PKG.running_total('KEY-CLRREC');

app_folder.event('KEY-CLRREC');

WHEN-CLEAR-BLOCK

CUX_OM_LINE_PKG.running_total('WHEN-CLEAR-BLOCK');

POST-QUERY

app_folder.event('POST-QUERY');

app_globe.event('POSET-QUERY');

CUX_OM_LINE_PKG.event('AMOUNT_INIT');

CUX_OM_LINE_PKG.running_total('POST-QUERY');

if :system.trigger_record =1 then

SELECT nvl(SUM(cola.order_quantity * cola.unit_selling_price),0)

INTO :CUX_OM_HEADER.total_amount

FROM cux_order_lines_all cola

WHERE cola.cux_order_header_id = :CUX_OM_HEADER.cux_order_header_id;

:CUX_OM_HEADER.TOTAL_AMOUNT_RTOT_DB:=:CUX_OM_HEADER.total_amount;

end if;

oracle form 头行合计,FORM主从块头行金额汇总相关推荐

  1. oracle的form开发,Oracle Form开发之调用Form

    Form开发中经常会用到Form间相互调用的功能,总结了以下,大概有以下3种方法: 方法1 PROCEDURE shot_plan_new IS fm_id FormModule; BEGIN fm_ ...

  2. ajax c 提交form,使用ajax提交form表单,包括ajax文件上传

    前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的aja ...

  3. Element 单元格合计(多行合计、合计列合并)

    前言 基本内容自行查看官方文档,这里说一下比较特殊的需求. 合计行不显示 问题 最近做表格合计发现,合计行在页面初次加载时不会显示,但是窗口大小改变后,合计行正常显示. 解决 数据变化,触发组件的up ...

  4. 让WEB FORM更像WINDOWS FORM: 控制窗体事件

    [按] 你可能会误解本文标题:让WEB FORM 更像WINDOWS FORM. 你也许会把本文当作是讨论应用程序界面. 其实本文讨论的是ASP.NET表现层设计.  也许会给你一点启示:如何设计逻辑 ...

  5. Android中使用logger打印完整的okhttp网络请求和响应的所有相关信息(请求行、请求头、请求体、响应行、响应行、响应头、响应体)

    如果你的项目中的网络请求库是Retrofit的话,他的底层封装的是OkHttp,通常调试网络接口时都会将网络请求和响应相关数据通过日志的形式打印出来.OkHttp也提供了一个网络拦截器okhttp-l ...

  6. Ext_单选框和复选框_Ext.form.Radio和Ext.form.Checkbox

    <mce:script type="text/javascript"><!-- /* Ext.form.Checkbox和Ext.form.Radio配置表: b ...

  7. Ext.form.TextField与Ext.form.TextArea

    个人的一些小错误,虽然对大多数人没啥帮助,就当是记录一下自己学习extjs的过程. Ext.form.TextField个人认为是单行文本域,就是不能换行的那种.项目需要文本框进行换行显示,找了好久也 ...

  8. oracle数据库行转化成列,ORACLE行转列(行转一列,行转多列)

    --listagg(合并多行的值为字符串,只用一列来显示) select status, count(*), listagg(risk_id, ',') within group (order by ...

  9. C#窗口的Form.AcceptButton 属性和Form.CancelButton 属性

    C#窗口的Form.AcceptButton 属性和Form.CancelButton 属性 初入门时,看到这两个属性一般不太关注它,因为这两个属性在窗口设计上也不需要设置就可以工作,因为默认了按下回 ...

最新文章

  1. SQL-4查找所有已经分配部门的员工的last_name和first_name(自然连接)
  2. pytorch模型参数信息 计算模型的FLOPs
  3. 指定字符串按指定长度进行剪切
  4. 问题解决: 解释器错误: 没有那个文件或目录
  5. 微电网日前优化调度 。算例有代码(1)
  6. mysql与oracle性能对比,Oracle与MySQl对比,
  7. 基于python的图片修复程序-可用于水印去除
  8. Linux qt程序打包依赖库,Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)...
  9. VBA中利用Dir遍历文件
  10. linux构建基于mac的vlan,通过CLI配置交换机的基于MAC的VLAN组
  11. 怎么提高文公写作水平?公文写作请示类模板
  12. wingdings字体符号在哪_Wingdings特殊字符及符號對照表 | 學步園
  13. 武汉大学 计算机学院 衰落,为何武汉大学每年都被黑,武汉大学真的没有实力吗?...
  14. OOK电路在电调天线远端控制器(RCU)中的应用
  15. 一些在线图片处理工具收集
  16. mysql 内联注释_TSRC挑战赛:WAF之SQL注入防御思路分享
  17. node-addon-api 的简单使用,c++数值、字符串、对象、数组转化为js可用数据。
  18. 软件工程导论--设计工程
  19. 《Real-Time Rendering 4th Edition》全文翻译 - 第2章 图形渲染管线(上)2.1 ~ 2.3(20200720翻新)
  20. János-the-Ripper

热门文章

  1. 世园会开幕式上的机器人_【在国际智能制造大会暨智能机器人大会开幕式上的致辞】世界智能机器人大会...
  2. 仙道服务器维护,5月22日8:00全区停机维护 刺金传说上线
  3. 软件测试是采用(A)执行软件的活动,测试(Test)测试是一项采用测试用例执行软件的活动,在这.ppt...
  4. oracle导出对象和数据,浅析Oracle对象和数据的导入导出
  5. matlab算法时间复杂度,关于降低算法时间复杂度问题的探讨和总结
  6. matlab实现tophat,[问题] 多尺度tophat的实现问题
  7. android获取导航栏宽高,Android获取屏幕的宽高度、状态栏、标题栏、导航栏、编辑区域高度...
  8. springboot创建parent_Springboot 框架整理,建议做开发的都看看,整理的比较详细!...
  9. GitHub率先消灭了cookies:与烦人的用户条款说再见
  10. Spring Boot 2.x基础教程:MyBatis的多数据源配置