金蝶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

posted @ 2022-06-20 16:53  奮鬥的小蝸牛  阅读(548)  评论(0)    收藏  举报