日期:2014-05-20  浏览次数:20850 次

阿泰哥,一个水晶报表的问题,已经三天了我都无法解决,你帮忙看看
活期存款 中国银行1 ¥500
  工商银行1 ¥400
  兴业银行1 ¥300
小计: ¥1,200
  定期存款 中国银行2 ¥700
CYN 工商银行2 ¥400
兴业银行2 ¥500
兴业银行2 ¥500
光大银行1 ¥600
  工商银行3 ¥400
人民银行1 ¥200
小计: ¥3,300

小计是按存款是活期还是定期的来分组。请问500+400+300=1200这个在CR水晶报表上怎么写公式代码啊?不用到SUM公式的来写。
第二个问题是,这第二个问题是建立在第一问题上的应该,定期存款中有两个兴业银行2,都属于定期存款,我最后合计的时候想去掉重复的数据,就是最后的结果变成2800元。这个该怎么写代码啊?或者应该怎么做。

请大家帮忙,阿泰哥最好来帮忙啊,谢谢了哈

numberVar a;
currencyVar b;

if GroupNumber <> a then b := 0 ;
if GroupNumber <> a then a := GroupNumber;
 b1100 := b1100 + {BSID.DMBTR} ;
 b1100;
这样子写错了,只能汇总最后一条数据到组尾。


------解决方案--------------------
首先报表 按 定期/活期 分组

C# code

/// <summary>
/// 新建三个公式字段x1,x2,x3
/// </summary>

公式x1:
WhilePrintingRecords; 
StringVar Array  ary; //数组ary 用来保存不同银行
NumberVar nSum := 0;  //用来统计RMB,即最后所要的结果
NumberVar i := 0;     //数组ary当前长度

公式x2:
WhilePrintingRecords; 
StringVar Array ary;
NumberVar       nSum; 
NumberVar       i;

If Not ({DataTable1.银行} in ary) Then //若当前银行不在ary数组中
(
  i := i + 1;  //数组长度加1
  Redim Preserve ary[i];        //保留原数组
  ary[i] := {DataTable1.银行};// 把当前银行加到数组中

  nSum := nSum + {DataTable1.RMB}; //累加当前银行对应的RMB
)

公式x3:
WhilePrintingRecords; 
NumberVar nSum; //最终所要结果

------解决方案--------------------
本来数据是 按4楼的方法得到的数据 对比
条件为1100
的列
880 890 正常
89100 89980 正常
11200 101180 正常
11200 0 不显示正常(按4楼的方法得到的,正常)
11200 0 不显示正常
150 101330 正常
600 101930 正常
00 102430 由于是条件为1100,所以显示为00,加起来是102430是因为把非1100的那一列加起来了,是显示在
1200的列的数据加到这里来。
880 103310
20000 123310
00 123510
1427 124937
00 125937
00 127587