做过大型系统的人应该都有这个体会,就是客户对报表的要求各异,而且中国式报表统计的要求都很高,不是一般的自定义报表软件能够实现的.一般大项目的报表工作量,往往占用了整个项目时间的50%以上,对报表的高要求,往往导致了两个结果:
一个结果是做一个功能强大的自定义报表系统,可以让用户自己定义,OK!真是好想法啊,不过有疑问了,这个和pb的数据库画板有什么区别呢?而且需要花费很大精力,肯定做不了pb那么好.
另外一个相反的结果就是应客户的要求不断的做报表,不断的编译程序,更新程序.当然随着项目做多了,可以推荐用户使用某些报表模版,但是也只能解决部分问题.
我考虑了一下,为什么不利用pb的强大的报表功能呢?pb不是有informaker吗?
大家看我的分析:
自定义报表MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可行性分析
做一个有强大功能的自定义报表很不容易,其必备的一些要求如下:
1. 功能足够强大,能够满足用户的绝大部分需求;
2. 操作方便性,为了实现某个目的,能够比较方便快捷的操作;
3. 能够比较方便的结合目标系统,使系统不需要大改动就可以使用;
4. 用户学习方便;
5. 开发工作量小,能够利用现有报表和查询资源;
根据以上的要求,有4种方法备选:
(评分为每点一分)
1. 用pb写datawindow,这种方法还不如用informaker,因为informaker功能简单,同时可以满足查询和打印格式配置的要求。
2. 直接用informaker做需要的datawindw和form,然后编译为exe,直接执行。
优点:功能强大;目的系统不需要修改;操作还是比较方便的;开发工作量小;能够利用现有的报表和dw(尤其是复合式报表)
缺点:英文开发界面;英文运行界面;学习开发有难度;用户权限不好控制;
评分:5-4=1
3. 用自己开发的自定义报表
优点:权限比较容易控制;用户学习使用应该比较容易;任何目标系统结合的相对比较好;
缺点:功能上不可能很强大;操作方便性有欠缺;开发工作量大;无法完全利用现有报表,尤其是非grid,freeform报表,比较突出的是复合报表和价签打印的label报表,有一些复杂功能不能使用,比如分组,合并等。
评分:3-4=-1
4. 用汉化后的informaker写的pbl结合系统配置
优点:功能强大;操作方便;开发工作量小;目的系统相对改动也小;权限也可以控制;能够完全利用现有的报表和数据窗口;
缺点:用户学习开发有一定难度;版权问题;
评分:6-2=4
从以上可以看出,用informmaker实现写datawindow应该是可以的,比较方便的。因为
informmaker功能相对于pb来说还是简单的,删除了很多功能。只要能够在系统内比较方
便的做一些配置工作,甚至是对informaker的功能进行部分屏蔽和简化,汉化informaker
帮助,应该可以简化用户的学习,能够实现上述提出的所有要求。
调用问题:
pbl中写好的报表如何被程序调用?首先利用getlibrary,setlibrary,可以将pbl包含到程序中,那么其中的对象就可以调用了.
那么怎么调用新建报表的新取的名字呢,这个就需要定义一个表(其中包含模块名和pbl中报表对象名的一对多的关系),通过另外做的一个配置窗口,应用程序中可以将程序模块和pbl中的报表名联系起来,从而可以随配随改.
informaker汉化:
汉化工具我推荐ML,我花了不到3天时间曾经将informaker汉化好了,不过后来硬盘格式化,忘了备份出来了.其实没有什么难度,主要是细心,多试.
希望我的想法对大家有所帮助.