其实也没什么很技术的,只是以前做报表总是COPY的,所以经常是不改还好,一改就错。搞得很长一段时间,很怕画报表,直到这一两年,摸索到了一点点规律,共享一下:
1、关于记录格式
其实这个本来没什么可说的,不过我就经常搞错,还是说说吧。
同一个记录格式之下,应该是
记录格式名
0001.00+ 打印内容
0002.00+ 打印内容
0003.00+
这样的一个格式。
每行要有这个+,才归属于同一个记录格式。如果是个点的话,也就是说明这一行并不属于该记录格式,如果想让它属于这个记录格式,就用CLC命令;
当我们用19编译的时候,如果是3来COPY记录行,系统经常会自动在COPY处新增一个记录格式,所以要注意。(说来简单,但是我最开始画报表的时候,就曾经被这个问题折磨)
2、关于变量的命名
不同的记录格式,可以使用相同的变量名。
有的时候,为了少写赋值语句,可以直接将变量命名得与PF中的字段相同。(不过我不太喜欢这种写法)
如果在RPG程序中,给某个变量赋值,但没有对相应的记录格式进行WRITE操作,编译会不通过,报4030字段未定义的错。
3、关于打印时会错行的问题
有的时候,打印会错行,比如记录格式定义
0001.00+ 变量A(比如说10个字符长)
0002.00+ 变量B(比如说5个字符长)
变量A的起始处位于第一列
变量B在变量A的下一行,且起始处位于第五列
当变量A='AAAAAAAAAA', 变量B='BBBBB'时,会打印出
AAAAAAAAAA
BBBBB
这很正常。
但当A=' A'或空时,本来我们是希望打印出:
A(或者这里就是一空行)
BBBBB
这样的效果,但是系统就会打印成为
BBBBBA 或
BBBBB (没有打印出空行)
也就是说,当某一行的前面为空时,(好象空格也算空)如果下一行有数据,就会挤上来。解决办法是在将A字段的首位赋值为非空,如果想让客户看不见,可以考虑使用汉字指示器。想打印空行,也可以用这个办法。(报表的这个特点困扰我最久,去年才想明白)
4、关于报表的测试
其实这个东西最简单,不过我以前一向很少去留意。
以前测试报表,尤其是测试换页的时候,总是老老实实的用打印机去打,打出来了再检查换页对不对,慢不说,还费纸。
其实我们进到SPLF里,右上角就有当前的页数,行数,如第1页第1行,右上角就是1/1,第2页第3行,就是3/2,好象页数在后面。
在position to这里,+1 就是下一行,W+1就是向右移一列,慢慢+,就可以看到换页是否正确了。
qingzhou 回复于:2006-06-22 17:01:42
恩,感谢分享~~~
哈哈。
最近天气比较热,大家都去潜水了,,,发些帖子可以让大家出来冒冒泡 ○○○○○○
:m01::mrgreen:
qingzhou 回复于:2006-06-22 17:02:46
另外,不明白为什么不用RLU来处理表格呢。。。
wnai 回复于:2006-06-22 17:19:45
简单,很是实用。相信有不少朋友都被报表打印折磨过:em16:
fairyboy 回复于:2006-06-23 08:39:12
恩,很少认真的去做个报表了,一般都是COPY后,用19进去拉拉位置而已...
fxf_china 回复于:2006-06-23 10:16:12
谢谢,不过没怎么写过报表:em15:
zhaoming1214 回复于:2006-06-23 10:40:01
不错,不过偶也很少写报表
居士 回复于:2006-06-23 10:59:33
好贴,加精华
blogliou 回复于:2006-06-23 11:18:23
RLU屏幕编辑是有这些麻烦,但掌握熟了,还是不错的.
另外如要随心所欲控制报表打印页, 打印文件的信息结构INFDS结构几个参数是需要掌握的:
FTEST01P1 O E PRINTER INFDS(PR01DS)
F OFLIND(*IN99)
D PR01DS DS
D PR01PG 152 153B 0
D PR01OF 188 189B 0
D PR01LN 367 368B 0
D CUR_PAGE 369 372B 0
PR01OF是每页行数,一般是66,是创建打印文件时的编译参数,可用chgprtf
PR01LN是当前打印行数,
CUR_PAGE是当前页数
胖有型 回复于:2006-06-23 11:50:49
呵呵,宝哥的东西技术性就强喽。
blogliou 回复于:2006-06-23 12:21:44
引用:原帖由 胖有型 于 2006-6-23 11:50 发表
呵呵,宝哥的东西技术性就强喽。
我晕,感情你认识我?
blogliou 回复于:2006-06-24 14:19:07
查看了胖有型的精华帖, 很不错也! 不知道是哪位兄弟?
l.rover 回复于:2006-06-24 23:10:20
多贴点这些心得会好一些。
hornit 回复于:2006-06-28 10:20:45
谢了!!
82893772 回复于:2007-05-15 21:08:51
谢谢楼主.. :)
居士 回复于:2007-05-16 11:58:34
精华,加入常见问题集
bobofish29 回复于:2007-05-16 13:56:50
呵呵..好久不做报表了,想当初我也是经常做报表的,也有过许多心得!帮顶一下楼主,谢谢有好东西拿来分享!
|