成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle reports功不可沒,實現報表定長輸出

數據庫 Oracle
以下的文章主要是對Oracle*reports的描述。它是Oracle的相關的數據統計以及相關圖形化的報表工具,以下就是文章的主要內容的描述。

我們大家都知道在Oracle中實現相關報表的定長輸出,首先我們要接觸到Oracle reports,它是Oracle的相關的數據統計以及相關圖形化報表的使用工具,它的主要功能是提供六種風格的報表格式。

而我們通常使用的只有其中的兩種,即tabular和matrix,無論用哪種風格生成的報表,打印出的表格數都是動態變化的。其中tabular風格的報表,列數固定,而行數不定;matrix風格的報表,行數和列數均不定。那么在Oraclereports中如何Oracle實現報表的定長與定寬輸出呢?筆者在實際開發過程中對上述兩種風格的報表各總結出一種行之有效的方法,供大家參考。

 

一、對于tabular風格的報表,可用報表觸發子after parameter form和after report實現定長輸出。

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

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

字段名 含義 長度 類型

wzdm 物資代碼 9 c

 

wzmc 物資名稱 20 c

 

xhgg 型號規格 20 c

 

jldw 計量單位 6 c

 

 

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

 

1.啟動Oracle reports,建立物資代碼打印報表(略),然后在報表觸發子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;  

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

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

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

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

二、對于matrix風格的報表,可利用視圖實現定長與定寬輸出,其思路是:當行記錄數和列記錄少于實際報表的行數和列數時,均以空記錄補齊。

下面舉例說明。

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

字段名 含義 長度 類型

lbmc 類別名稱 20 c

 

dwmc 單位名稱 20 c

 

je 金額 14,2 n

 

 

要求:按定長定寬輸出物資資金消耗去向統計月報,并且每頁均輸出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列,即實現了定長和定寬輸出。

【編輯推薦】

  1. Oracle性能優化五大工具介紹
  2. Oracle版本的區別有那些
  3. Oracle 數據庫的各種不同版本的差別
  4. Oracle 外鍵的相關約束中級聯刪除的方案
  5. Oracle用戶的相關授權和管理的分析
責任編輯:佚名 來源: 博客園
相關推薦

2010-04-06 15:41:22

Oracle repo

2016-05-23 16:06:25

軟件IC網

2014-05-09 14:43:31

思科人才培養思科

2022-10-17 08:03:54

CPUDMAKafka

2016-07-07 13:34:10

IBMPOWER LINUX

2010-12-20 09:04:47

2015-11-02 11:05:57

流量網絡終端應用

2019-02-14 12:41:54

程序員開發互聯網

2013-11-15 14:47:22

IE11微軟網絡安全

2012-01-06 10:32:33

2022-01-12 08:57:45

網絡攻擊漏洞Log4j

2018-07-18 13:33:38

大數據

2018-09-20 11:17:21

超融合

2012-06-20 10:04:11

Evernote

2010-04-01 11:32:33

Oracle repo

2010-04-01 12:33:37

Oracle repo

2024-09-03 13:40:00

2021-04-15 10:51:09

圖形軟件家居產業

2021-12-24 10:04:57

漏洞阿里云Log4Shell

2018-05-25 15:03:11

借貸寶
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品久久久 | 日本精品一区二区三区四区 | 成人在线一区二区三区 | 国产线视频精品免费观看视频 | 国产激情视频网址 | 成人在线观看免费视频 | 免费观看视频www | 久久久久综合 | 免费在线毛片 | 国产精品99久久久久久人 | 色天天综合 | 日韩成人高清 | 午夜影院在线观看版 | 国产成人99av超碰超爽 | 久久精品国产久精国产 | 成人免费毛片在线观看 | 欧美激情视频一区二区三区在线播放 | 亚洲性综合网 | 一级黄色毛片免费 | 日韩在线电影 | 99亚洲精品 | 91超碰在线| 成人午夜免费福利视频 | 欧美一区二区三区四区视频 | 欧美在线一区二区三区 | 欧美精品一区二区三区四区 在线 | 干干干操操操 | 国产欧美性成人精品午夜 | 国产精品一区二区久久 | 中国一级特黄真人毛片 | 宅男噜噜噜66一区二区 | 天天看天天操 | 国产免费又色又爽又黄在线观看 | 欧美亚洲成人网 | 成人在线中文 | 欧美综合在线观看 | 欧美在线观看黄色 | 成人三级视频 | 欧美成人免费在线视频 | 国产成人在线一区 | 亚洲国内精品 |