在vb6.0中
mshflexgrid控件里有N条纪录,RT:序号 料号 数量 组
1 123455 1.2000 01
2 343585 1.0003 05
3 351351 2.0000 06
4 687486 3.0000 07
5 988754 4.0000 07
6 874845 2.2222 09
....
全部的料号都不相同的,只想通过这个控件显示出来的"组的值"进行相同合并,并把数量相加,然后料号显示最大数量的一条。另一条则不要请问如何处理? 多谢!
mshflexgrid控件里有N条纪录,RT:序号 料号 数量 组
1 123455 1.2000 01
2 343585 1.0003 05
3 351351 2.0000 06
4 687486 3.0000 07
5 988754 4.0000 07
6 874845 2.2222 09
....
全部的料号都不相同的,只想通过这个控件显示出来的"组的值"进行相同合并,并把数量相加,然后料号显示最大数量的一条。另一条则不要请问如何处理? 多谢!
数据从哪里来的?如果是来自数据库表,一条 SQL 语句就可以拿下。否则,需要写一段代码来算。
数据是从另一个系统出来的,所以无法实现SQL的操作.
2)逐行循环:
如果下一行的[组]与本行相同,将本行的[数量]加到下一行中,删除本行。
Option ExplicitPrivate Sub Command1_Click()
Dim i As Long
With MSHFlexGrid1
.Sort = 9 ' flexSortCustom
i = .FixedRows
While i < .Rows - 1
If Val(.TextMatrix(i, 3)) = Val(.TextMatrix(i + 1, 3)) Then
.TextMatrix(i + 1, 2) = Val(.TextMatrix(i, 2)) + Val(.TextMatrix(i + 1, 2))
.RemoveItem i
Else
i = i + 1
End If
Wend
End With
End SubPrivate Sub Form_Load()
Dim aValues
Dim i As Long
aValues = Array("序号", "料号", "数量", "组", _
1, 123455, 1.2, 1, _
2, 343585, 1.0003, 5, _
3, 351351, 2#, 6, _
4, 687486, 3#, 7, _
5, 988754, 4#, 7, _
6, 874845, 2.2222, 9)
With MSHFlexGrid1
.FixedCols = 0
.Cols = 4
.Rows = 7
For i = 0 To UBound(aValues)
.TextArray(i) = aValues(i)
Next
End With
End SubPrivate Sub MSHFlexGrid1_Compare(ByVal Row1 As Long, ByVal Row2 As Long, Cmp As Integer)
Dim cmp1 As Integer
Dim cmp2 As Integer
With MSHFlexGrid1
cmp1 = Sgn(Val(.TextMatrix(Row1, 3)) - Val(.TextMatrix(Row2, 3)))
cmp2 = Sgn(Val(.TextMatrix(Row1, 1)) - Val(.TextMatrix(Row2, 1)))
End With
Cmp = Sgn(cmp1 * 10 + cmp2)
End Sub