<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • oracle reports實現報表定長與定寬輸出

    時間:2024-06-20 09:44:26 Oracle認證 我要投稿
    • 相關推薦

    oracle reports實現報表定長與定寬輸出

      oracle reports是oracle的數據統計及圖形化報表工具,它提供了六種風格的報表格式,而我們通常使用的只有其中的兩種,即tabular和matrix,無論用哪種風格生成的報表,打印出的表格數都是動態變化的。其中tabular風格的報表,列數固定,而行數不定;matrix風格的報表,行數和列數均不定。那么在oracle reports中如何實現報表的定長與定寬輸出呢?

      一、對于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中加入以下代碼:

      declare

      v—jls number(2);

      i number(2):=1;

      begin

      select count(*) into v—jls from wzdm;

      if mod(v—jls,x)〈〉0 then

      loop

      exit when i〉=(x-mod(v—jls,x))+1;

      insert into wzdm(wzdm,wzmc,xhgg,jldw)

      values(′′,′′,′′,′′);

      i:=i+1;

      end loop;

      commit;

      end if;

      end;

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

      begin

      delete from wzdm where wzdm is null;

      commit;

      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.建視圖,其過程如下:

      create view v—tjbb as

      select dwmc,lbmc,je from t—zjxhqx

      union

      select dwmc,null,to—number(null) from t—zjxhqx,t—kjl

      where no-(z-x)〉(select mod(count(distinct lbmc)-1,x)+1 from t—zjxhqx)

      union

      select null,lbmc,to—number(null) from t—zjxhqx,t—kjl

      where no-(z-y)〉(select mod(count(distinct dwmc)-1,y)+1 from t—zjxhqx);

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

    【oracle reports實現報表定長與定寬輸出】相關文章:

    Oracle認證:ORACLE綁定變量BINDPEEKING08-25

    Oracle認證:Oracle控制件文件修復07-27

    Oracle認證:Oracle避免全表掃描方式10-04

    Oracle認證:Oracle內存結構研究-PGA篇09-22

    oracle的sql語句01-21

    Oracle認證作用07-31

    Oracle最新認證07-13

    Oracle認證簡介11-30

    Oracle常見產品10-14

    Oracle認證途徑09-11

    主站蜘蛛池模板: 青青青青久久精品国产| 国产精品综合久成人| 国产精品99久久精品爆乳| 熟女精品视频一区二区三区 | 久久久久亚洲精品无码蜜桃| 亚洲国产精品久久久久婷婷老年| 亚洲精品高清国产一线久久| 国产精品内射视频免费| 992tv精品视频tv在线观看| 自拍偷自拍亚洲精品情侣| 日韩精品一区二区三区在线观看| 国产精品免费大片| 中文字幕精品亚洲无线码一区应用| 9re热国产这里只有精品| 久久ww精品w免费人成| 一本精品中文字幕在线| 9久热这里只有精品| 精品久久久久久| 国产精品无码午夜福利| 亚洲日韩精品无码一区二区三区| 久久精品一区二区三区中文字幕 | 99久久人妻无码精品系列蜜桃 | 久久久久九九精品影院| 一本久久a久久精品综合夜夜| 国产精品日韩欧美一区二区三区| 在线精品亚洲一区二区| 久久精品中文字幕有码| 精品国产一级在线观看| 国产内地精品毛片视频| 成人精品一区二区三区在线观看 | 99久re热视频这里只有精品6| 99久久精品费精品国产一区二区| 日韩人妻精品无码一区二区三区| 午夜国产精品无套| 欧美亚洲综合免费精品高清在线观看| 国产乱人伦偷精品视频不卡| 91精品免费久久久久久久久| 久久久精品午夜免费不卡| 精品视频第一页| 久久精品视频网| 四虎国产精品永久地址99|