1、CMS自定义报表工具教程2009/08/28目 录报表制作的基础知识自定义报表工具安装使用自定义报表工具绘制报表使用CMS运行自定义报表自定义报表的调试目 录报表制作的基础知识自定义报表工具安装使用自定义报表工具绘制报表使用CMS运行自定义报表自定义报表的调试1 什么是报表报表制作的基础知识 报表是由数据源和显示格式组成的对象,工作方式为先从数据源检索出的数据再应用显示格式显示出来,由于显示格式可以多种多样,所以相同的数据可以呈现出多种样式的报表。因此制作报表就是定义数据源和绘制显示格式的过程。2 CMS报表 CMS报表是指能让CMS识别和调用的报表,每个报表分为两部分,报表查询条件和报表主体
2、,二者一一对应,缺一不可。制作CMS报表就是绘制数据窗口对象(报表主体和查询条件)的过程,它的数据源就SQL语句,显示格式就是数据窗口输出的格式,报表主体一般要求为列表格式(Grid),查询条件一般要求为自由格式(Freeform)。目 录报表制作的基础知识自定义报表工具安装使用自定义报表工具绘制报表使用CMS运行自定义报表自定义报表的调试1 软件环境要求自定义报表工具安装 Windows2000及以上操作系统,安装了Oracle客户端,能访问CMS数据库,CMS数据库必须存在五张用户表:pub_rpt,pub_rpt_language,pub_rpt_link,pub_rpt_user,pu
3、b_rpt_userprop。2 自定义报表工具安装 将自定义报表工具程序目录直接拷贝到硬盘上即可。程序目录中包括程序主体文件(pbd、exe)和动态链接库文件(dll)。打开文件目录中SYSSET.INI,进行CMS数据库连接信息配置,方法同CMS目录的sph.ini,确保报表工具和CMS程序访问的是同一个数据库。双击reporter.exe,运行报表工具。目 录报表制作的基础知识自定义报表工具安装使用自定义报表工具绘制报表使用CMS运行自定义报表自定义报表的调试使用自定义报表工具绘制报表简要流程简要流程开始增减报表字段编辑报表样式供CMS用户自定义报表模块调用保存到CMS数据库结束Pbl/
4、pbd文件载入报表CMS数据库载入报表手工SQL输入生成报表添加排序和过滤条件及分组信息维护保存到外部文件1 自定义报表设计视图使用自定义报表工具绘制报表 设计视图是指自定义报表的编辑区域,分两种模式,带区设计视图和Word设计视图,一般使用带区设计视图。2 工作带区介绍 视图中总共有几种不同的区(Bands),每一种区代表不同的显示含义,字段或是其它对象在视图中所放置的区,将决定这些对象会被显示或打印在报表的什么地方。表头区每页上方都显示,显示不下时不能自动换页分组题头区在每一个群组和每一页的最上面显示明细区显示每行数据,显示不下可以自动换页分组汇总区在每一个群组和每一页的最后面显示汇总区显
5、示在明细区的最后面,只显示一次表尾区每页最下方都显示相同内容,显示不下不能自动换页。使用自定义报表工具绘制报表4 创建报表的3种方法使用自定义报表工具绘制报表 向导式,直接编辑SQL方式,从PBL文件中导入已有的报表再编辑。后两种方式比较常用,尤其第3种方式比较快捷,减少重复劳动。5 报表的3种类别 系统导入临时报表,用于标识从PBL文件中导入的已有报表 用户报表设计,用于标识用户报表对象 用户查询报表设计,用于标识报表查询条件对象只有后两种CMS系统才能识别和调用,第一种只是为了导入暂存报表,方便修改后另存成后两种报表对象。3 报表设计的常用对象 常用对象包括:列(column),计算列(c
6、ompute),文本(text)。列显示数据源的数据;计算列是由列和其他计算列组成的表达式,支持函数,通过计算显示结果;文本用来显示特定的字符,如表头信息。使用自定义报表工具绘制报表7 报表参数及查询条件列的命名规则6报表写SQL原则 大表写在前面,小表写在后面,表名要起别名,别名采用小写字母,按照由小到大的顺序命名。WHERE条件先写大表的关联条件,再写小表的关联条件,最后写字段的常量条件。WHERE条件中的AND关键字统一写在最左边。SQL中的计算列也要起别名,别名采用有意义的英文单词及其缩写,例如:namespec,不要用中文。报表参数命名:数据类型前缀_对应的字段名,例如:as_goo
7、ds,an_purdeptid,ad_startdate。字符型前缀:as,数据值型前缀:an,日期型前缀:ad,日期时间型前缀:adtm。查询条件列的命名:对应的字段名,例:billno,cstcode,goods。对时间段查询条件一般取startdate,enddate,也可以用结合字段名灵活命名,例:createdate_start,createdate_end。使用自定义报表工具绘制报表8 报表设计实例讲解(详见视频文件)目 录报表制作的基础知识自定义报表工具安装使用自定义报表工具绘制报表使用CMS运行自定义报表自定义报表的调试1 用户自定义报表设置 使用CMS运行自定义报表 进入CM
8、S,打开系统管理|系统参数|用户自定义报表设置功能,新增一记录,在报表代码中F7输入报表主体代码,在查询窗口报表代码中F7输入 查询条件报表代码,最后点击保存,以达到将报表主体与查询条件相互关联起来的目的。使用CMS运行自定义报表 使用CMS运行自定义报表2 定义报表菜单 以管理员身份进入CMS,打开系统管理|系统参数|系统菜单管理功能,添加自定义报表菜单,窗口名为w_pub_rpt_user,打开参数为报表代码,菜单代码可包含公司拼首缩写,例如:广州公司为09_gz_01,方便识别。同时可以利用菜单的登录部门和人员角色属性,限制菜单的使用范围,当然别忘记对普通用户设置菜单权限。使用CMS运行
9、自定义报表3 运行自定义报表 使用CMS运行自定义报表 进入CMS,打开刚才定义的报表菜单,可以看到报表主体已经载入列表窗口,点击查询按钮,可以看到查询条件报表也载入弹出窗口中,输入查询条件,其中定义了F7输入功能的查询条件栏位,可以F7输入,日期条件可以双击小日历输入,如果栏位作了人员角色或部门的限制,在满足条件时也可输入,否则不能编辑,最后点击确定按钮,即可在列表窗口显示查询结果。使用CMS运行自定义报表目 录报表制作的基础知识自定义报表工具安装使用自定义报表工具绘制报表使用CMS运行自定义报表自定义报表的调试1 运行SQL监控工具(SqlMonitor)自定义报表的调试 SqlMonit
10、or是一个能够监控应用程序向Oracle数据库发送SQL的工具,运行后自动显示连接Oracle数据库的应用程序,将要监控的程序前打勾,CMS运行后显示为sys_main.exe,将它勾上即可监控CMS程序发送的SQL。2 运行CMS自定义报表 打开CMS自定义报表菜单,在弹出的查询窗口中输入查询条件,点击确定按钮显示报表查询结果,再切换到SqlMonitor 中,此时SQL输出页面上显示的SQL就是报表执行的,可以查看到SQL中的变量及其的赋值情况,如果有报错信息显示,则将这段SQL拷贝出来单独执行,查找错误原因,并到报表工具中对数据窗口对象进行相应的修改,然后再测试,反复几次下来一般的报错都
11、可解决。自定义报表的调试3 常见问题自定义报表的调试Q:打开菜单出现“获取报表语法信息时出错,没有找相关记录!”信息?A:菜单的打开参数没有写正确,CMS没有找到用户报表。Q:打开查询条件窗口出现“获取报表语法信息时出错,没有找相关记录!”信息?A:自定义报表和它对应的查询条件没有设置正确,CMS没有找到查询条件报表对象,到“用户自定义报表设置”中改正。Q:查询时出现“参数:an_purdeptid不是有效参数,请检查!”A:自定义报表没有添加参数an_purdeptid,或者查询条件的tag属性中该字段没写对参数名称。自定义报表的调试Q:查询出现“retrieve argument 9 do
12、es not match excepted type”信息?A:报表的第9个参数的数据类型和传入的查询条件不一致,需要到自定报表工具中进行相关修改。Q:我的报表双击列头不能排序?A:报表的列头文本对象命名不正确造成,正确命名规则为:列名_t,报表工具初始生成的列头都是按这个规则命名的,只有手工增加的需要改。Q:报表导出时出现“ora-00972:identifier is too long”信息?A:报表的某个或几个字段命名过长,超过了30个字符,需要到自定义报表工具中将这些字段找到并重命名短些,同时将对应列头文本重命名。Q:查询条件输入双击或F7时,出现“存放Id的列宽度不足以支持多选模式需要,请与开发人员联系!”信息?A:因为该查询条件字段设置了F7多选功能,且字符长度小于500,一般将长度设为500即可。Q:运行CMS报表时,出现输入查询条件回车后焦点不能离开的现象?A:原因为报表查询条件对象该列的值输入非法,解决方法为到报表工具中打开该查询条件对象,检查该列的数值类型,与输入值类型是否符合,特别注意有下拉框时,要检查下拉框中的值是否也都符合。自定义报表的调试