求个循环,该怎么处理
求个循环
For iRow = 1 To dcData("Page2").Size
For iIndex = iRow + 1 To dcData("Page2").Size
If Val(m_BillInterface.GetFieldValue("FBase1", iRow)) = Val(m_BillInterface.GetFieldValue("FBase1", iIndex)) Then '--如果检测到相同的记录,提示,不允许保存
MsgBox "单据体第" & iRow & "行和第" & iIndex & "行相同", vbCritical, "错误"
fc = m_BillInterface.GetFieldValue("FDecimal", iRow)
fc1 = m_BillInterface.GetFieldValue("FDecimal", iIndex)
Call m_BillInterface.SetFieldValue("FDecimal", fc + fc1, iRow)
Call m_BillInterface.RemoveRow(True, 2, iIndex)
End If
Next iIndex
Next iRow
这个循环应该怎么写啊,一个结果集,如果结果集里物料编码有重复的话,就把物料的数量合并,把重复记录删除,这个循环应该怎么写,那位帮忙看看,谢谢
------解决方案--------------------
利用一个 ListBox (不可见):
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 中精确查找
For iRow = 1 To dcData("Page2").Size
tmp = Val(m_BillInterface.GetFieldValue("FBase1", iRow))
n = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, tmp)
If n = -1 Then
List1.AddItem tmp
List1.ItemData(List1.NewIndex) = m_BillInterface.GetFieldValue("FDecimal", iRow)
Else
List1.ItemData(n) = List1.ItemData(n) + m_BillInterface.GetFieldValue("FDecimal", iRow)
End If
Next iRow
这样,ListBox 每一条记录的 List 是编码,ItemData 是数量(Long 型)。
For iRow = 1 To dcData("Page2").Size
For iIndex = iRow + 1 To dcData("Page2").Size
If Val(m_BillInterface.GetFieldValue("FBase1", iRow)) = Val(m_BillInterface.GetFieldValue("FBase1", iIndex)) Then '--如果检测到相同的记录,提示,不允许保存
MsgBox "单据体第" & iRow & "行和第" & iIndex & "行相同", vbCritical, "错误"
fc = m_BillInterface.GetFieldValue("FDecimal", iRow)
fc1 = m_BillInterface.GetFieldValue("FDecimal", iIndex)
Call m_BillInterface.SetFieldValue("FDecimal", fc + fc1, iRow)
Call m_BillInterface.RemoveRow(True, 2, iIndex)
End If
Next iIndex
Next iRow
这个循环应该怎么写啊,一个结果集,如果结果集里物料编码有重复的话,就把物料的数量合并,把重复记录删除,这个循环应该怎么写,那位帮忙看看,谢谢
------解决方案--------------------
利用一个 ListBox (不可见):
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 中精确查找
For iRow = 1 To dcData("Page2").Size
tmp = Val(m_BillInterface.GetFieldValue("FBase1", iRow))
n = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, tmp)
If n = -1 Then
List1.AddItem tmp
List1.ItemData(List1.NewIndex) = m_BillInterface.GetFieldValue("FDecimal", iRow)
Else
List1.ItemData(n) = List1.ItemData(n) + m_BillInterface.GetFieldValue("FDecimal", iRow)
End If
Next iRow
这样,ListBox 每一条记录的 List 是编码,ItemData 是数量(Long 型)。