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数据库面试问题
Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统。下面是小编整理的关于oracle数据库面试问题,希望大家认真阅读!1.解释冷备份和热备份的不同点以及各自的优点解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进...
-
Oracle数据库无响应故障处理方式
Oracle数据库无响应故障,简单地讲就是数据库实例不能响应客户端发起的请求,客户端提交一个SQL后,就一直处于等待数据库实例返回结果的状态。更严重的现象是客户端根本不能连接到数据库,发起一个连接请求后,一直处于等待状态。Oracle数据库无响应故障怎么处理呢?下面...
-
Oracle11g认证考试主要途径
Oracle11g有400多项功能,经过了1500多个小时的测试,开发工作量达到了3.6万人/月,相当于1000名员工连续研发3年。Oracle11g提供了高性能、伸展性、可用性和安全性,并能更方便地在低成本服务器和存储设备组成的网格上运行,相对过往版本而言,Oracle11g具有了与众不同的...
-
关于sql语句优化的知识
用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表...
相关文章
- Illustrator与CorelDRAW操作的对比
- 英语作文Let the Surprise Speak of Your Love
- 英语阅读:VIT declines to acquire Ang Mo Kio property
- MySQL安装时出现current root password的解决方法
- 公共英语二级写作Preserving Natural Resources
- Efforts Urged to Improve Womens Reproductive Health英语阅读
- 人物性格分析 The Analysis of Personal Character英语作文
- Choice of large enterprises or small英语四级作文
- Protecting water resources英语作文
- A Letter to the Editor of a Newspaper英语四级作文