如題, 具體如下:
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個回圈內的邏輯搞得不是很明白,請各位高手不吝賜教。
謝謝。
uj5u.com熱心網友回復:
沒看懂樓主說的是什么意思。
uj5u.com熱心網友回復:
此需求的核心部分是將資料項匯總累加。至于樓主將 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
uj5u.com熱心網友回復:
多謝解答,我先用你的方法試一下。uj5u.com熱心網友回復:
我用你的代碼了,可是彈出variable not defined,就是List變數沒定義。請解答一下為什么?uj5u.com熱心網友回復:

自己拽個ListBox控制元件到Form上
uj5u.com熱心網友回復:
不好意思了,我是菜鳥.我想說明一下我不需要在 List Box里顯示,我需要把上面 實作的值 輸出在 txt檔案里。
uj5u.com熱心網友回復:
有沒有高手能 通過 dictionary 函式去 實作這個最后結果的?uj5u.com熱心網友回復:
Dictionary 是“物件”, 不是函式吧。

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/142405.html
標籤:網絡編程
