金蝶KIS旗舰版工业单据(老单)开发表单循环插入数据
金蝶KIS旗舰版7.0开发自动生成采购申请时,使用m_BillTransfer.SetGridText 循环插入数据时第一行数据能插入成功后,一直提示下标越界问题。

需要使用m_BillTransfer.BillForm.insertrow,代码如下
Do While Not rs.EOF
Call m_BillTransfer.SetGridText(i, ItemIdIndex, rs.Fields("FNumber"))
Call m_BillTransfer.SetGridText(i, nameIndex, rs.Fields("FName"))
Call m_BillTransfer.SetGridText(i, modelIndex, rs.Fields("FModel"))
Call m_BillTransfer.SetGridText(i, unitIndex, rs.Fields("unitnumber"))
Call m_BillTransfer.SetGridText(i, numIndex, rs.Fields("qty"))
m_BillTransfer.BillForm.insertrow i + 1, 1
i = i + 1
rs.MoveNext
Loop
使用上述方法可以实现数据插入,但是存在插入数据时只是第一行触发Action,会导致数据都插入完成后第一行的名称、规格型号、单位等会是最后一行的数据。暂时没有想到解决办法,只是记录下第一行的数据,重新SetGridText。代码如下:
Dim i As Integer
'解决触发action导致第一行数据的名称和型号改变
Dim tempName As String
Dim tempModel As String
Dim tempUnit As String
tempName = ""
tempModel = ""
tempUnit = ""
i = 1
Do While Not rs.EOF
Call m_BillTransfer.SetGridText(i, ItemIdIndex, rs.Fields("FNumber"))
Call m_BillTransfer.SetGridText(i, nameIndex, rs.Fields("FName"))
Call m_BillTransfer.SetGridText(i, modelIndex, rs.Fields("FModel"))
Call m_BillTransfer.SetGridText(i, unitIndex, rs.Fields("unitnumber"))
Call m_BillTransfer.SetGridText(i, numIndex, rs.Fields("qty"))
Call m_BillTransfer.SetGridText(i, dateIndex, datastr)
Call m_BillTransfer.SetGridText(i, finishDateIndex, datastr)
m_BillTransfer.BillForm.insertrow i + 1, 1
i = i + 1
rs.MoveNext
Loop
If (tempName <> "") Then
Call m_BillTransfer.SetGridText(1, nameIndex, tempName)
Call m_BillTransfer.SetGridText(1, modelIndex, tempModel)
Call m_BillTransfer.SetGridText(1, unitIndex, tempUnit)
Else
MsgBox "没有需要采购的物料!"
End If
本文来自博客园,作者:奮鬥的小蝸牛,转载请注明原文链接:https://www.cnblogs.com/xunbang/p/16393836.html

浙公网安备 33010602011771号