一.自动行号实现

  1.方法一:

    只需要将“序号”定义成公式,并将公式设置为:get_block_property('block_name',current_record)就可以实现了,或者把这行语句放到“When-Create-Record”触发器中。

    缺点:增改删时,行号不能自动刷新。

  2.方法二:

    ①在需要自动行号的Block中,新增一个Item,我这里取名为LINE_NUM(注:这不是数据库中的字段,即属性Database Item为No),放在对应画布上及调整布局;

    ②在对应Block添加相应Block级别的触发器:ORDER_LINES为我的数据块

      KEY-CREREC:  

DECLARE
LINE NUMBER;
BEGIN
LINE := :SYSTEM.CURSOR_RECORD;
LOOP
IF :SYSTEM.LAST_RECORD = 'TRUE' THEN
EXIT;
ELSE
NEXT_RECORD;
:ORDER_LINES.LINE_NUM := :SYSTEM.CURSOR_RECORD + 1;
END IF;
END LOOP;
GO_RECORD(LINE);
CREATE_RECORD;
:ORDER_LINES.LINE_NUM := :SYSTEM.CURSOR_RECORD;
END;

      KEY-DELREC:

DECLARE
LINE NUMBER;
BEGIN
DELETE_RECORD;
LINE := :SYSTEM.CURSOR_RECORD;
LOOP
:ORDER_LINES.LINE_NUM := :SYSTEM.CURSOR_RECORD;
IF :SYSTEM.LAST_RECORD = 'TRUE' THEN
EXIT;
ELSE
NEXT_RECORD;
END IF;
END LOOP;
GO_RECORD(LINE);
END;

      WHEN-CREATE-RECORD:

:ORDER_LINES.LINE_NUM := :SYSTEM.TRIGGER_RECORD;

      POST-QUERY:(注:如果这里使用了该触发器,查询会获取不到行号,需要加入以下到该触发器获取行号)

begin
:ORDER_LINES.LINE_NUM:=:SYSTEM.TRIGGER_RECORD;
end;

  3.更多方法:https://blog.csdn.net/cai_xingyun/article/details/17922631

二.行金额自动汇总

  1.从无到有自己实现:

    

      效果图:包含两个数据块(OEDER_HEADERS和ORDER_LINES),ODRDER_HEADERS.TOTAL是所有总金额,ORDER_LINES.AMOUNT是没一行总金额

    步骤:

      ①创建ORDER_HEADERS.TOTAL,设置其子类属性为:TEXT_ITEM_DISPLAY_ONLY;

       在合计显示的数据块中,创建合计项目的汇总临时项目,命名规则为:<合计项目名称>_RTOT_DB,NUMBER(38)/DISPLAY_ITEM,即TOTAL_RTOT_DB/NUMBER(38)/DISPLAY_ITEM;

      (注:这两个字段都不是数据库中的字段,故Item的属性Database Item为No,否则会提示该字段无效);

      ②添加一个包,用于封装app_calculate.running_total()及初始化amount的存储过程,如下:

        包头:

PACKAGE TOTAL_LINES IS
procedure amount (event varchar2);
procedure running_total (event varchar2); END TOTAL_LINES;

          包体: 

procedure running_total (event varchar2) is
begin
app_calculate.running_total(event,'ORDER_LINES.AMOUNT','ORDER_HEADERS.TOTAL');
end running_total;
procedure amount (event varchar2) is
begin
if event = 'INIT' then
copy(name_in('order_lines.price') * name_in('order_lines.quantity'),'order_lines.amount');
end if;
end amount; END TOTAL_LINES;

      ③ORDER_LINES对应触发器:(ORDER_LINES块级,存放每行总金额的块)

        KEY-DELREC:

total_lines.running_total('KEY-DELREC');
--注:这里是删除行号的代码,如果不删除会同时删除两行
--DELETE_RECORD;
DECLARE
LINE NUMBER;
BEGIN
DELETE_RECORD;
LINE := :SYSTEM.CURSOR_RECORD;
LOOP
:ORDER_LINES.LINE_NUM := :SYSTEM.CURSOR_RECORD;
IF :SYSTEM.LAST_RECORD = 'TRUE' THEN
EXIT;
ELSE
NEXT_RECORD;
END IF;
END LOOP;
GO_RECORD(LINE);
END;

        KEY-DUPREC:

total_lines.running_total('KEY-DUPREC');
duplicate_record;

        KEY-CLRREC:

CLEAR_RECORD;

        WHEN-CLEAR-BLOCK:

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

        POST-QUERY: 

total_lines.amount('INIT');
total_lines.running_total( 'POST-QUERY');
--注:这是获取行号的
begin
:ORDER_LINES.LINE_NUM:=:SYSTEM.TRIGGER_RECORD;
end;  

      ④在ORDER_HEADERS(放Total总金额的数据块)的数据块级触发器上添加查询初始化所有总金额Total

        POST-QUERY:

select nvl(sum(price*quantity),0)
into :order_headers.total
from Cux_Order_Lines_All_25305
where header_id = :order_headers.header_id ;
:order_headers.total_rtot_db:=:order_headers.total;

      ⑤Item级触发器(Price和Quantity,对应修改触发金额从新初始化)

        Price和Quantity下触发器WHEN-VALIDATE-ITEM:

 total_lines.amount('INIT');
total_lines.running_total('WHEN-VALIDATE-ITEM');

  2.根据属性直接获取:

          这是获取总金额的Item,需要单独放在一个Block里面,summrary Function属性中是求和函数SUM,summarized Block中是所求和Item的Block,Summarized Item是所求和的Item

            给每一行设置公式获取每一行的总金额

    可能会报如图的错,解决方式

  

        

       

   

  

EBS自动行号,行金额自动汇总到头,金额根据币种编号总结的更多相关文章

  1. Ubuntu vim显示行号语法高亮自动缩进

    配置文件名为Ubuntu vimrc在Fedora中vim的配置文件存放在/etc目录中,配置文件名为Ubuntu vimrc在终端 输入以下命令来编辑Ubuntu vimrc配置文件:sudo vi ...

  2. Lua中如何实现类似gdb的断点调试—06断点行号检查与自动修正

    前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性. 我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行.我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功 ...

  3. C# DevExpress_gridControl 行号行样式

    #region 行号 /// <summary> /// 行号 /// </summary> /// <param name="sender"> ...

  4. 设置gridView 行号 行号宽

    gridView1.IndicatorWidth=30; //设置行号宽度 //对gridView1的CustomDrawRowIndicator事件进行操作 进行行号显示 private stati ...

  5. vim简单配置(tab,行号,自动缩进)

    进入到个人目录:cd - 打开vimrc文件:vim .vimrc 在文件中添加以下内容:set shiftwidth=4          #按tab键缩进4个空格set softtabstop=4 ...

  6. ExtJS表格——行号、复选框、选择模型

    本篇的内容是为表格添加行号,和复选框,最后谈一下Ext的选择模型.内容比较简单,就直接上代码了.一. 设置行号   行号的设置主要问题在于删除某一行后需要重新计算行号  Ext.onReady(fun ...

  7. vim显示行号、语法高亮、自动缩进的设置

    转载自:http://blog.csdn.net/chuanj1985/article/details/6873830   在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为v ...

  8. winedt设置自动显示行号[latex]

    options--preferences--appearance 在show line numbers for modes下面的文本框里添加;Tex 这样新建或者打开tex文件的时候就自动显示行号了( ...

  9. linux vim 配置文件(高亮+自动缩进+行号+折叠+优化)

    点评:将一下代码copy到 用户目录下 新建文件为 .vimrc保存即可生效 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)"===================== ...

随机推荐

  1. vue 打包部署到服务器上 配置nginx访问

    坑一 css,js资源引入不正确 webpack配置文件config/index.js 需要更改: 方法一 当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static文件夹当成了根 ...

  2. Springboot集成MongoDB实现CRUD

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  3. 新版uni-app 在微信小工具调试遇到报错解决方案

    问题描述:我在运行到微信小程序是运行报错打不开微信小程序报错如下图 结局方案:将微信小程序安全设置开启如下图

  4. 忘记Linux 3.X/4.x/5.x 宝塔面板密码的解决方案

    进入ssh 输入以下命令重置密码(把命令最后面的   “testpasswd”  替换成你要改的新密码)注:若是debian/ubuntu用户,请使用有root权限的账户去执行这条命令 cd /www ...

  5. R语言:时间的转化

    一般使用R从数据库导出来的时间数据一般都不是我们能看的懂的(具体是什么格式的我也忘记了),需要做如下转化 as.Date(time,origin = '1970-01-01') 最近从网上爬下来的时间 ...

  6. ReentrantLock源码探究1:非公平锁的获取和释放

    1.AQS简单介绍 ​ Sync是ReentrantLock的一个内部类,它继承了AbstractQueuedSynchronizer,即AQS,在CountDownLatch.FutureTask. ...

  7. layui表格遇到的小操作

    表头文字显示不全 done:function(res){ tdTitle() }, /*表头文字显示不全*/ function tdTitle(){ $('th').each(function(ind ...

  8. 十、封装assertResponse响应断言

    一.assertNotNull介绍 assertNotNull(responseEntity.getBody());可判断报文是否为空 responseEntity为响应实体对象 二.assertEq ...

  9. slub分配object

    kmem_cache如下: 62struct kmem_cache { struct kmem_cache_cpu __percpu *cpu_slab; /* Used for retriving ...

  10. pyqt5在QMainWindow中布局的问题

    在pyqt5中使用了父类为QMainWindow的话,在里面使用布局类,QGridLayout, QHBoxLayout ,QVBoxLayout 时,发现不好用. 解决: 如果是在以QWidget为 ...