当前位置:编程学习 > VB >>

请帮忙解决VB中条件累加的代码

如题, 具体如下:

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个循环内的逻辑搞得不是很明白,请各位高手不吝赐教。

谢谢。 mysql vb string --------------------编程问答-------------------- 没看懂楼主说的是什么意思。
--------------------编程问答-------------------- 此需求的核心部分是将数据项汇总累加。至于楼主将 PR1, PR2 等再汇总成 PR,1,2 以及重组为 CAS 起始的串,都可以下一步再做。

最简单的方法就是利用 ListBox 的列表项查找及利用 ItemData 属性(Long 类型)做逐项累加。

Private Declare Function SendMessagebyString Lib _
"user32" Alias "SendMessageA" (ByVal hWND As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As String) As Long

Private Const LB_FINDSTRINGEXACT = &H1A2    '在 ListBox 中精确查找

Private Sub Command1_Click()
Dim i As Long, j As Long, n As Long
Dim strItem() As String

List1.Clear
For i = 1 To 99
    strItem = Split(Data_Line(i), ",")
    For j = 0 To 8 Step 2
        strItem(j) = Trim(Item(j))
        strItem(j + 1) = Trim(Item(j + 1))
        n = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, strItem(j))

        If n = -1 Then
            List1.AddItem strItem(j)
            List1.ItemData(List1.NewItem) = Val(strItem(j + 1))
        Else
            List1.ItemData(n) = List1.ItemData(n) + Val(strItem(j + 1))
        End If
    Next j
Next i

For i = 0 To List1.ListCount - 1
    Debug.Print List1.List(i), List1.ItemData(i)
Next i
End Sub
--------------------编程问答-------------------- 多谢解答,我先用你的方法试一下。 --------------------编程问答-------------------- 我用你的代码了,可是弹出variable not defined,就是List变量没定义。请解答一下为什么? --------------------编程问答--------------------

自己拽个ListBox控件到Form上 --------------------编程问答-------------------- 不好意思了,我是菜鸟.

我想说明一下我不需要在 List Box里显示,我需要把上面 实现的值 输出在 txt文件里。 --------------------编程问答-------------------- 有没有高手能 通过 dictionary 函数去 实现这个最后结果的? --------------------编程问答--------------------
引用 7 楼 markyao118 的回复:
有没有高手能 通过 dictionary 函数去 实现这个最后结果的?

Dictionary 是“对象”, 不是函数吧。

补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,