日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
Oraclereports中實現報表的定長

Oracle reports作為Oracle的數據統(tǒng)計以及圖形化報表的工具,其一共提供了六種不同風格的報表格式,但是我們經常使用到的兩種,就是tabular與matrix,無論用哪種風格生成的報表,打印出的表格數都是動態(tài)變化的。其中tabular風格的報表,列數固定,而行數不定;matrix風格的報表,行數和列數均不定。

成都創(chuàng)新互聯主要從事網站設計、成都網站建設、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務黟縣,十多年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575

那么在Oracle reports中如何實現報表的定長與定寬輸出呢?筆者在實際開發(fā)過程中對上述兩種風格的報表各總結出一種行之有效的方法,供大家參考。

一、對于tabular風格的報表

可用報表觸發(fā)子after parameter form和after report實現定長輸出。其方法是:根據實際情況確定每頁打印的行數,當最后一頁的記錄數少于每頁打印的行數時,則用空記錄補齊。在觸發(fā)子after parameter form插入空記錄,在觸發(fā)子after report中再將空記錄刪除,下面舉例說明。

假設有一數據基表wzdm:存放物資代碼信息,其數據結構為:

字段名 含義 長度 類型

wzdm 物資代碼 9 c

wzmc 物資名稱 20 c

xhgg 型號規(guī)格 20 c

jldw 計量單位 6 c

要求:按定長輸出物資代碼表,并且每頁均輸出x行(x可根據實際情況而定)。

1.啟動Oracle reports,建立物資代碼打印報表(略),然后在報表觸發(fā)子after parameter form中加入以下代碼:

 
 
 
  1. declare
  2. v—jls number(2);
  3. i number(2):=1;
  4. begin
  5. select count(*) into v—jls from wzdm;
  6. if mod(v—jls,x)〈〉0 then
  7. loop
  8. exit when i〉=(x-mod(v—jls,x))+1;
  9. insert into wzdm(wzdm,wzmc,xhgg,jldw)
  10. values(′′,′′,′′,′′);
  11. ii:=i+1;
  12. end loop;
  13. commit;
  14. end if;
  15. end;

在報表觸發(fā)子after report中分別加入以下代碼:

 
 
 
  1. begin
  2. delete from wzdm where wzdm is null;
  3. commit;
  4. end;

2.運行報表后即可輸出定長的物資代碼表。

說明:對于其它tabular風格的報表,在編寫上述兩個觸發(fā)子時只需將基表名與列名根據實際情況修改一下,并確定x的值即可。

二、對于matrix風格的報表

可利用視圖實現定長與定寬輸出,其思路是:當行記錄數和列記錄少于實際報表的行數和列數時,均以空記錄補齊。下面舉例說明。

假設有一物資資金消耗去向統(tǒng)計月報,該表橫向顯示本期消耗去向,縱向顯示物資類別,由于每月物資消耗去向和消耗物資均不定,所以此類報表即為一矩陣報表。該報表的數據存放在基表t—zjxhqx中,其數據結構如下:

字段名 含義 長度 類型

lbmc 類別名稱 20 c

dwmc 單位名稱 20 c

je 金額 14,2 n

要求:按定長定寬輸出物資資金消耗去向統(tǒng)計月報,并且每頁均輸出x行y列(行數和列數可根據實際情況而定)。

1.首先建一基表t—kjl,用來存放空記錄,其數據結構為:

字段名 含義 長度 類型

no 序號 2 n

建完該數據表后,再往其中插入記錄,記錄數可根據實際情況而定,一般為一頁所能打印的最大行數,這里假設為z條,即no的值為1,2,3…z。

2.建視圖,其過程如下:

 
 
 
  1. create view v—tjbb as
  2. select dwmc,lbmc,je from t—zjxhqx
  3. union
  4. select dwmc,null,to—number(null) from t—zjxhqx,t—kjl
  5. where no-(z-x)〉
    (select mod(count(distinct lbmc)-1,x)+1 from t—zjxhqx)
  6. union
  7. select null,lbmc,to—number(null) from t—zjxhqx,t—kjl
  8. where no-(z-y)〉
    (select mod(count(distinct dwmc)-1,y)+1 from t—zjxhqx);

3. 啟動Oracle reports,建立矩陣報表查詢時直接引用視圖v—tjbb即可。這樣運行時輸出的報表每頁都是x行y列,即實現了定長和定寬輸出。


本文名稱:Oraclereports中實現報表的定長
轉載注明:http://m.5511xx.com/article/copeooi.html