| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 700 人关注过本帖
标题:求VB中条件累加的代码
只看楼主 加入收藏
markyao118
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-9-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
求VB中条件累加的代码
如题, 具体逻辑如下:

数据库有一串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个循环,请各位高手不吝赐教。

谢谢。
搜索更多相关主题的帖子: 数据库 而且 
2013-09-04 18:05
markyao118
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-9-4
收藏
得分:0 
回复 楼主 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个循环内的逻辑搞得不是很明白,请各位高手不吝赐教。

谢谢。
2013-09-04 21:15
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:10 
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 的顺序是固定的,那么第三层循环就不需要,直接计算出下标,进行累加即可。

授人于鱼,不如授人于渔
早已停用QQ了
2013-09-04 22:16
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:10 
实现为  CAS*PR*1*180*2*290~
        CAS*CO*45*420*223*580~
        CAS*CO*223*760~
cas?

[ 本帖最后由 Artless 于 2013-9-5 12:34 编辑 ]

无知
2013-09-05 12:32
markyao118
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-9-4
收藏
得分:0 
CAS是一个固定值,不是变量,需要做的就是 把所有 PR1, PR2, CO45, CO223中的值进行 钱值累加,汇总。
2013-09-05 14:15
快速回复:求VB中条件累加的代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026818 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved