免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9713 | 回复: 19
打印 上一主题 下一主题

关于打印报表的几点心得 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-22 16:51 |只看该作者 |倒序浏览
其实也没什么很技术的,只是以前做报表总是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就是向右移一列,慢慢+,就可以看到换页是否正确了。

论坛徽章:
0
2 [报告]
发表于 2006-06-22 17:01 |只看该作者
恩,感谢分享~~~

哈哈。

最近天气比较热,大家都去潜水了,,,发些帖子可以让大家出来冒冒泡 ○○○○○○

论坛徽章:
0
3 [报告]
发表于 2006-06-22 17:02 |只看该作者
另外,不明白为什么不用RLU来处理表格呢。。。

论坛徽章:
0
4 [报告]
发表于 2006-06-22 17:19 |只看该作者
简单,很是实用。相信有不少朋友都被报表打印折磨过

论坛徽章:
0
5 [报告]
发表于 2006-06-23 08:39 |只看该作者
恩,很少认真的去做个报表了,一般都是COPY后,用19进去拉拉位置而已...

论坛徽章:
0
6 [报告]
发表于 2006-06-23 10:16 |只看该作者
谢谢,不过没怎么写过报表

论坛徽章:
0
7 [报告]
发表于 2006-06-23 10:40 |只看该作者
不错,不过偶也很少写报表

论坛徽章:
0
8 [报告]
发表于 2006-06-23 10:59 |只看该作者
好贴,加精华

论坛徽章:
0
9 [报告]
发表于 2006-06-23 11:18 |只看该作者
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是当前页数

论坛徽章:
0
10 [报告]
发表于 2006-06-23 11:50 |只看该作者
呵呵,宝哥的东西技术性就强喽。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP