您的位置:首页 > 数据库 > Oracle

关于报表工具IR中报表格式设置不起作用的问题(IR版本9.5.0.0)

2009-10-15 22:33 579 查看
      一直以为自己可以用英文写这些描述技术问题及其解决方法的文章,唉,还真是高估自己了。再回去看之前写过的英文文章,有些东西连自己都不认得了,真无奈,哈哈!好,赶紧改用中文写。
      我想,基本上没有人会碰到像我这样的问题吧:Interactive Reporting(Brio)工具的对报表的设置不起作用!这个问题一直困扰了我很久,郁闷的是Oracle那边的人又无法给出明确的解决方案,所以这阵子一直自己摸索并找出了避开这个bug的方法。首先具体地描述一下问题吧:我们知道,在IR的“工具”下拉菜单中的“选项”菜单,选中“默认格式”,则弹出默认格式设置对话框。对话框中有分别对OLAP区、表、报表、图表等的一些格式的设置。比如,现在我们在该对话框中对进行设置表标题居中并粗体显示,保存后,下次新建的报表区的标题将会居中,而且字体是粗体。这个设置在本地运行和使用插件方式打开bqy将会产生效果,但是放到了portal(web)上之后,问题就来了!什么问题?这得首先说到我们报表的设计思路。
      报表的设计思路是这样的:举个例子,我们的Essbase数据库里面存储“营运日期”这个维度的members时候粒度细到天,因此,层次应该类似这样2009/2009-Q4/2009-10/20091015总共5层(维度那层也算一层,叫第一层),在大纲里,给“营运日期”这个维建立了generation(层级)名,如在“2009”这一层,我们编写层级名叫“年”,如果不这样设置,那么系统将会自动生成层级名,命名为“Gen2_营运日期”。而在报表页面,用户查询时可以按年度进行汇总查询,当然也就可以按季度、月份进行汇总查询,最后也可以按日期查询明细数据。如果用户按年汇总,则查询下载到结果之后(DownloadToResult),关于“营运日期”的这一列的标题名将为“年”,如果不编辑层级名,则标题名为“Gen2_营运日期”。因此我们一般会编辑所有非指标Dimensions的层级名(如果有多层级的话),也因此如果用户的查询条件不同,比如下次他/她要按月汇总而不是年汇总了,则下载到结果后的该列的标题名就会发生改变。而最重要的是,我们的报表都是基于这个结果区的结果的,如果结果区的列名改变,那么报表的列名很可能也会改变。我们的设计思路也就是这样子,就是在每次查询时,都会删除掉报表区的所有列,然后根据用户选择的条件重新把新结果的相关列拉到报表区里面来。
      这样一来,最严重的问题产生了:在portal上,每一次查询结束出报表的时候,每一个新拉进来的列的标题底色都会变蓝,并且标题字体并没有居中,也无法粗体!也就是说,之前“默认格式”下的设置根本不起任何作用!!但是我发现一个有趣的地方,没有发生改变的那些列的标题还是符合了“默认格式”的设置效果。于是我想到了一个方法,那就是在结果区里面添加计算项,如添加“日期”计算项,该计算项则参照“营运日期”这个dimension产生的列,这要看用户的选择条件了,如果用户选择了年度汇总,则“日期”计算项参照结果区中的“年”列。下次用户如果按月份汇总,则代码中,我们就修改计算项的参照,改成参照“月份”……然后新建一个基于结果区的表,作为报表来展示给用户。在这个表里,拉入所有的需要展示给用户的计算项,比如拉入“日期”。这样查询的时候不再需要删除报表区所有的列然后重新添加,而只需要修改结果区中计算项的参照就足够了!
      另外,值得一提的是,使用表区比使用报表区来作为报表展示给用户的报表生成速度快很多,然而也会产生问题:排序问题。这个之后再明说……
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息