注册 登录
编程论坛 VB6论坛

求VB中条件累加的代码

markyao118 发布于 2013-09-04 18:05, 700 次点击
如题, 具体逻辑如下:

数据库有一串Data String有99个循环值(每个值叫Data Line),而在每个Data Line中又有10个值分别为5组的循环值(Code & Amount)。

要实现的是,把所有Data Line内 相同的 Code所对应的Amount进行累加,而且在输出行里 相同的Code 只能输出一次。

如:DataLine  C1, 100, D1, 200, E1, 300, F1, 400, G1, 500; C1, 80, D1, 90, E1, 120, F1, 180, G1, 260;......................

实现为  C1*180
        D1*290
        E1*420
        F1*580
        G1*760
 
因为里面有2个循环,请各位高手不吝赐教。

谢谢。
4 回复
#2
markyao1182013-09-04 21:15
回复 楼主 markyao118
如题, 具体如下:

MySQL 数据库有一串Data String有99个循环值(每个值叫Data Line),而在每个Data Line中又有10个值分别为5组的循环值(Code & Amount)。

要实现的是,把所有99个Data Line内 相同的 Code所对应的Amount进行累加,而且在输出行里 相同的Code 只能输出一次。

如:DataLine1 前面有一些无用字符串, PR1, 100, PR2, 200, CO45, 300, CO223, 400, OAB5, 500 数据之间是chr(240)分隔
    DataLine2 前面有一些无用字符串, PR1, 80, PR2, 90, CO45, 120, CO223, 180, OAB5, 260 数据之间是chr(240)分隔

实现为  CAS*PR*1*180*2*290~
        CAS*CO*45*420*223*580~
        CAS*CO*223*760~

我曾经用for intI......next intI写过,发现2个循环内的逻辑搞得不是很明白,请各位高手不吝赐教。

谢谢。
#3
风吹过b2013-09-04 22:16
1楼:
没看懂。
是不是,有一个字符串:
DataLine  C1, 100, D1, 200, E1, 300, F1, 400, G1, 500; C1, 80, D1, 90, E1, 120, F1, 180, G1, 260;...................
是按这个顺序下去的。
标识:DataLine  
第一组: C1, 100, D1, 200, E1, 300, F1, 400, G1, 500;
第二组: C1, 80, D1, 90, E1, 120, F1, 180, G1, 260;
每一组之间用 ; 分隔,每个数据之间,用 , 分隔??

那先去掉标识,这个应该是固定长度的。
然后按 ; 分解得字符串数组。使用 split 函数
然后 循环每个元素,
按 , 分解得到 每个数据。
然后 ,循环 偶数元素, 与 求和数组 的 Code 进行比较,找到 对应的 下标,然后 偶数元素+1 的元素当成值,累加到 求和数组里。

'去掉标识
fj1=split(dl1,";")
for i1=0 to ubound(fj1)
    fj2=split(fj1(i1),",")
    for i2=0 to ubound(fj2) step 2
        for i3=1 to 5
            if fj2(i2)=adds(i3) then
                  addj(i3)=addj(i3)+val(fj2(i2+1))
                  exit for
             end if
        next i3
     next i2
next i1

第三层循环,因为只有 5 个,也可以直接写 Select case fj2(i2) 来多分支选择。

如果你的 C1,D1 的顺序是固定的,那么第三层循环就不需要,直接计算出下标,进行累加即可。
#4
Artless2013-09-05 12:32
实现为  CAS*PR*1*180*2*290~
        CAS*CO*45*420*223*580~
        CAS*CO*223*760~
cas?

[ 本帖最后由 Artless 于 2013-9-5 12:34 编辑 ]
#5
markyao1182013-09-05 14:15
CAS是一个固定值,不是变量,需要做的就是 把所有 PR1, PR2, CO45, CO223中的值进行 钱值累加,汇总。
1