背景說明:
頭塊中的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也會自動跳轉到主伺服器操作...