集算报表自定义生成缓存

在访问报表时,如果数据量较大或者计算复杂,访问报表时就会等待较长时间,用户希望能够提高报表的访问速度。

这种报表基本上都有固定条件,比如按照用户名登陆,这样的话就可以想办法先将报表计算出来,用户访问时直接取报表结果就行。

集算报表提供了缓存管理,当开始缓存时(配置文件中的alwaysReloadDefine值为no),第一次访问报表时会进行计算,如果再次访问同一张报表,就会直接从缓存中取结果,能够提高报表访问速度,这种方式一般都是通过报表系统自行处理,针对用户的需求,报表提供了api方式,能够调用api自主对缓存进行控制,代码如下:

     long time=-1;//定义缓存有效时间,-1为一直有效

     for(int i=1;i<=5;i++){

     Context cxt = newContext();

      cxt.setParamValue("szzb",String.valueOf(i));//szzb为报表中定义的参数

      CacheManager manager =CacheManager.getInstance();

      ReportEntry entry =manager.getReportEntry("testhc.rpx");

     ReportCache cache =entry.getReportCache( cxt, time );

     IReport report =cache.getReport();

              }

可以在jsp中手动调用相应api代码,也可以在web.xml中增加个listener,应用启动时直接调用。

注:1、如果是按照参数循环,Contextcxt = new Context();这个要写在循环的最内侧,否则数据集缓存会取错

    2、参数类型必须一致,比如报表中定义参数是字符串型,那么api中传入的必须是string。

    3、报表名称和访问url上必须一致,有时url上会将报表名上加个斜线,也能正确访问报表,但是找缓存时要求保证严格一致。

    4、如果在listener中调用,web.xml会有加载顺序,会先加载listener,后加载servlet,而此时报表的servlet还没加载,会导致找授权文件,报表路径等有问题,所以需要在api中增加个时间延迟,比如:Thread.currentThread().sleep(15000);,过段时间后再执行报表api

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
-功能简介-   (1)任意增加、修改、删除报表,而无须改动源程序。   (2)自动生成功能,选择项目后快速生成表格式或自由式等常用报表。   (3)手动设计功能,可以设计出复杂的中国式报表及套打单据。   (4)直线、文本、表达式等对象的位置、大小、字体、颜色可以任意改变。   (5)具有中英翻译功能,表达式可以采用中文,适合中国人使用。   (6)表达式非常灵活,可以是字段、函数、变量组成的复杂表达式。如:取小数位(数量*单价*折扣/100,2)。   (7)表达式具有校验功能,如表达式有错误系统会立即提示。   (8)所有界面完全汉化,直观明了,可交付最终用户使用。   (9)采用动态数据窗口处理,无须调用PB之外的资源。   (10)表头和表体之间的格线,不会出现“裂缝”,改进了PB本身的缺陷。   (11)打印纸张、比例、横向、纵向打印等可以设置。   (12)数据源可以是后台数据库表或共享前台数据窗口数据,满足不同的需要。   (13)自动识别并适应显示分辨率。   (14)调用简便,与其它PB开发系统之接口简单。   (15)可以直接在Orcal,Sybase,Ms-sql等大型数据库下使用而无需任何改动。 (16)调用本系统之前已经设计好的报表,可以选择“原数据窗口格式”生成到本系统,把“死报表”变成“活报表”。 (17)对于下拉数据窗口的数据,可以采用本系统的“后台取数()”函数来实现取数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值