发新话题
打印

[待解决][发现BUG]紧急求助!请问这个表怎么做

[待解决][发现BUG]紧急求助!请问这个表怎么做

数据集是个  销售明细表,重要字段有 销售流水(PK)、分公司ID、产品类型、是否实名,需要做一个按分公司、产品类型分组的实名认证报表

表类如:
                       所有销售产品                                              实名销售产品                           实名比例
              全产品(即合计) 产品1  产品2                全产品  产品1    产品2             全产品比例  产品1比例  产品2比例            
分公司1               10件          2件   8件                       8件      1件       7件                   80%            50%             87%
分公司2
分公司3
总计

如果某分公司或者某产品在明细表里没有记录,则显示为0件,而不是缺少该行列,即不管明细表结果集怎样,表头始终如此,内容始终为count数和比例值。
请问这个模板怎样设计?

[ 本帖最后由 haifengqiu 于 2011-2-23 11:00 编辑 ]

TOP

取交叉索引的统计计算,
按.chm 是  索引名.字段名.sum()
按下载的示例里 却是  索引名.字段名{取值}.DEF.sum()  以及  索引名.字段名.DEF2.sum()

但是4了好像都不好使,一个简单的交叉报表里能好使的写法是   数据集名.@字段名.DEF2.sum()

求解释这几种写法到底是正确否?DEF和DEF2是啥,怎样引用交叉索引

TOP

不管是直接运行app还是运行bin包中的示例,有相应例子的代码运行均不好使……

TOP

按网上的最新版本,取交叉索引的统计计算应该:

=索引名.字段名{取值}.DEF.sum()  ,  索引名.字段名.DEF2.sum()     可用
=数据集名.@字段名.DEF2.sum()  可用

以下方法已经不可用了
=索引名.字段名.sum()    这种写法不能用了

TOP

1楼的问题:

简表中,在默认方式下,会排除没有数据的分组,比如没有某个分公司的销售数据,这个公司的分组,就不会显示在交叉表中。如果不管有没有数据,都想显示该分公司,那么,你只需要将分公司信息表,做成一个数据集,然后,生成分组节点,并绑定到交叉表中的行板上,就可以了.

TOP

谢谢版主热心指点

是否.DEF代表取出一维数组?DEF2是取出二维数组?
如果用=索引名.字段名{取值}.DEF.sum() 和 索引名.字段名.DEF2.sum()   后台会报出空指针错误,发生于return this.cache.getProperty(prop);此行。看代码是CrossIndexNode中的cache始终为NULL。
示例和自己的模板均如此……

1L的问题分公司用单独的数据集,这个能想到。我更在意的是,列表头的2个分组,一个相当于针对分公司|类型取交叉,一个能否做一个分公司|类型+实名标识取交叉?

TOP

引用:
原帖由 haifengqiu 于 2011-2-21 12:00 发表
谢谢版主热心指点

是否.DEF代表取出一维数组?DEF2是取出二维数组?
如果用=索引名.字段名{取值}.DEF.sum() 和 索引名.字段名.DEF2.sum()   后台会报出空指针错误,发生于return this.cache.getProperty(prop);此 ...
发现应该是源码粗心了?还是我不小心改了?
  if (this.cache != null) {   // 此处应该是==null 吧?
            this.cache = new CrossFieldsCache(this, this.indexView);
        }

请版主指点下面一个问题,谢谢。就是我的表样,列上是3部分组成这一疑问。

TOP

我下载的src的zip包,其中的CrossIndexNode.getProperty方法,其中就是
if (this.cache !=null) {   
            this.cache = new CrossFieldsCache(this, this.indexView);
        }
改成==null后DEF DEF2的写法就好使了,按写代码的逻辑来看,也应该是==null。。。

哎,我身为开发人员,因为文档和论坛存在,就产生惰性不看源码了,真是要不得。

TOP

用设计器里的变量来描述下我的问题就是:
我想建立2个交叉索引,ci2{分公司}{类型}    ci3{分公司}{类型,实名标识}
表头如前所述。

而在 第一组列下面的单元格中变量 =ci2.订单流水号.DEF2.count() 或者=ci2.订单流水号{分公司}.DEF.count() 好用。
那么在第二组列中的单元格中变量写 =ci3.订单流水号{分公司}{,1}.DEF.count() 不好使,其中1代表实名标识为true。

用数据库中的sql描述就是:
第一组列下面的记录为select count(*),... from 订单 where 1=1 group by 分公司,类型
第一组列下面的记录为select count(*),... from 订单 where 1=1 and 实名标识=1 group by 分公司,类型

[ 本帖最后由 haifengqiu 于 2011-2-21 12:24 编辑 ]

TOP

搞定一部分,使用=ci3.订单流水号{分公司}{"1",类型}.count() 即可。
但是,这时想对 这种实名记录 作总计,写法=ci3.订单流水号{分公司}{"1",}.count()  不能识别,想请问下,
索引中{f1}{f2,f3}这种,f1不限定时可写成{}{f2,f3},那f2不限定时应该如何写法?

TOP

引用:
原帖由 haifengqiu 于 2011-2-21 17:29 发表
搞定一部分,使用=ci3.订单流水号{分公司}{"1",类型}.count() 即可。
但是,这时想对 这种实名记录 作总计,写法=ci3.订单流水号{分公司}{"1",}.count()  不能识别,想请问下,
索引中{f1}{f2,f3}这种,f1不限定时 ...
目前是多建了几个交叉索引来完成这个要求,不知道有更好的方法否。

TOP

发现一BUG,在使用ci2.订单流水号.DEF2.count()的写法时,报表主页面显示无误,但是导出时就会出现错误,均会显示总和值。改成ci2.订单流水号{xxxx}{yyy}这种写法就不会,估计是导出时取出的值是在之前得到的最后值。

TOP

发新话题