博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于写报表的一些经验
阅读量:5163 次
发布时间:2019-06-13

本文共 987 字,大约阅读时间需要 3 分钟。

上个月,一直忙于开发报表,虽说自己写报表的经验不是很多,也就是从最近才开始的,之前也只是修改一下现有的报表,但经过这段时间,对报表的开发已经有了一些认识。

首先,要弄清楚报表中统计的每个字段的来源(字段是从哪个表里查出来的)、含义(有些字段是经过加减乘除运算的出来的,比如:平均值、比例、合计等)。明白报表的查询条件是什么,比如:时间条件、和业务上的一些条件。基本上可以限定,这个报表中用到了几个表,表之间的关联关系是什么(外键关系)。

对于简单的报表,可以通过一条SQL查出来结果集,再做一些简单的加减乘除,把运算好的结果封装到一个集合中(一般是list),然后在页面上显示即可。

但是一般的报表都比较复杂。我试过两种方式去写。

第一种,是使用SQL直接查出结果,结果用list接收,在页面显示。没错,所有的运算啊、什么的都通过SQL。SQL查出来之后,不需要对结果再处理。这样不是一个好办法。最初之所以用这种方式实现,是因为迫于当时时间紧急。当时,每个报表都有已经写好的SQL,为了尽快开发报表,以一天开发两个报表的速度,就用这种方式做了。

这种方式,首先写SQL的难度比较大。需要用到的表通常很多,七八个都是正常的,SQL也比较复杂,比较长,写SQL花费的时间也会长一些。而且测试的时候发现,表之间的关系稍有不慎,报表的结果就不准了,需要修改SQL。

然后,在上线之后,发现了一个比较严重的问题。8个报表中,有2个上线之后,直接报错。但是明明测试的没问题啊。只好拿SQL去生产的数据库里执行,报错如下:

上网查,说是因为temp表空间不足造成的。这两个报表的SQL并不是所有报表中最复杂的,而且也经过了一些优化,没有特别多余的语句,我也不明白为什么会这样。

之后通过对报表的维护,发现,SQL若有任何一点失误的地方,对SQL的改动就比较大,SQL动的时候要小心,因为可能会改错。所以我的感觉就是,维护的难度有点大。

然后就会想到用第二中方法来开发报表。

第二种:

用Java分步骤的查询、运算出来要用的数据,拼到一起,凑成结果集,在页面显示。或者直接在后台加上<table>、<tr>、<td>这些,和结果拼成字符串,传到前台,直接显示table,就是报表的样子。

 

转载于:https://www.cnblogs.com/mySummer/p/5034274.html

你可能感兴趣的文章
一周TDD小结
查看>>
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>
CVE-2014-6321 && MS14-066 Microsoft Schannel Remote Code Execution Vulnerability Analysis
查看>>
给一次重新选择的机会_您还会选择程序员吗?
查看>>
Mysql MHA高可用集群架构
查看>>
心急的C小加
查看>>
编译原理 First,Follow,select集求法
查看>>
java 浅拷贝和深拷贝
查看>>
vue实例中中data属性三种写法
查看>>
uva1636 - Headshot(条件概率)
查看>>
iOS开发 runtime实现原理以及实际开发中的应用
查看>>
BZOJ2437 NOI2011兔兔与蛋蛋(二分图匹配+博弈)
查看>>
android 学习资源网址
查看>>
shell基础
查看>>