在oracle 中实现报表的定长输出_Oracle数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

在oracle 中实现报表的定长输出

作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0

本篇关键词:Oracle数据库Oracle教程
黑客防线网安网讯:   oracle*reports是oracle的数据统计及图形化报表工具,它提供了六种风格的报表格式,而我们通常使用的只有其中的两种,即tabular和matrix,无论用哪种风格生成的报表,打印出的表格数都...
   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的值为
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-13198-1.html
网站维护教程更新时间:2012-03-23 00:52:14  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer