實現主從關係Form中彙總行金額 數量

2021-09-01 20:38:43 字數 2968 閱讀 9076

背景說明:

頭塊中的total欄位(headers.amount_total)彙總行上面amount(lines.amount)

行中的amount是unit price(lines.unit_price)和quantity(lines.quantity)的乘積

unit price和quantity的任何更改會導致amount發生改變,最終影響total值

實現步驟:

1,建立合計顯示字段,即headers.amount_total,設定其子類屬性為:text_item_display_only

2,在合計顯示的資料塊中,建立合計專案的彙總臨時專案,命名規則為:《合計專案名稱》_rtot_db,number(38)/display_item,即

amount_total_rtot_db/number(38)/display_item

3,在明細塊中建立兩個統計使用的item,乙個《被統計項》_rtot_old,另乙個《被統計項》_rtot_db,型別 char(61) display_item,即amount_rtot_old/char(61)/display_item 和amount_rtot_db/char(61)/display_item

procedure running_total (event varchar2) is

begin

end running_total;

5,在引發

headers.amount_total和

lines.amount

變化的兩個item

(lines.unit_price)和

procedure unit_price (event varchar2) is

begin

if event = 'when-validate-item' then

lines.amount('init');--先計算行上面的lines.amount

lines.running_total('when-validate-item'); --然後在計算headers.amount_total裡面的數值

end if;

end unit_price;

procedure quantity (event varchar2) is

begin

if event = 'when-validate-item' then

lines.amount('init');

lines.running_total('when-validate-item');--同上

end if;

end quantity;

6,建立lines.amount('init');的handler**

procedure amount (event varchar2) is

begin

if event = 'init' then

copy(name_in('lines.unit_price') * name_in('lines.quantity'),'lines.amount');

end if;

end amount;

7,在彙總顯示專案所在塊中的post-query觸發器中從資料庫中計算出明細的初始彙總值

procedure post_query is

begin

select nvl(sum(unit_price*quantity),0)

into :headers.amount_total

from xhu_order_lines

where header_id = :headers.header_id ;

:hd.sum_total_rtot_db := :hd.sum_total;

end post_query;

8,在明細塊的以下觸發器中新增相應的**

--key-delrec

lines.running_total('key-delrec');

delete_record;

--key-duprec

lines.running_total('key-duprec');

duplicate_record;

--key-clrrec

lines.running_total('key-clrrec');

或者下面的方式

clear_record;

--when-clear-block

lines.running_total('when-clear-block');

--post-query

lines.running_total( 'post-query' );

或者post-query中為

ln_private.running_total('post-query');

if :system.trigger_record =1 then

select sum(amount)

into :hd.sum_total

from cux_plan_project_lines_t

where header_id= :hd.header_id;

:hd.sum_total_rtot_db := :hd.sum_total;

end if;

實現主從關係Form中彙總行金額 數量

下面以實際的例子來描述如何實現彙總計算,效果圖如下 背景說明 頭塊中的total欄位 headers.amount total 彙總行上面amount lines.amount 行中的amount是unit price lines.unit price 和quantity lines.quantit...

kbmMW 實現主從關係表的方法

環境 delphi xe10.2.2 kbmmw5.02 unidac7.02 fb3.0 在日常應用中,我們經常會用到主 從 master detail 關係表,如客戶與訂單 角色與許可權等。在 kbmmw 中實現mater detail 關係表的方法有兩種,各有優缺點。下面是我實現這兩個方法的過...

Jedis如何確認主從關係

在不配置哨兵的情況下,jedis無需確認主從關係。redis的主從複製讀寫分離那都是內部處理的,對外的使用做到呼叫方無感知。所以無論是用命令列去操作redis,還是利用jedis操作redis,都不需要呼叫方去判斷當前連線是主是從。哪怕我在從伺服器進行set操作,redis也會自動跳轉到主伺服器操作...