首页 > 解决方案 > 如何将记录信息从 ListBox 存储到 Table?

问题描述

我正在使用以下链接到按钮的代码cmdAdd。使用“单击时”事件,将 ListBox 选择信息复制到表中KitBuild

Private Sub cmdAdd_Click()

  Dim strSQL        As String
  Dim db            As DAO.Database
  Dim rs            As DAO.Recordset
  Dim ctl           As Control
  Dim varItem       As Variant

  On Error GoTo ErrorHandler

  Set db = CurrentDb()
  Set rs = db.OpenRecordset("KitBuild", dbOpenDynaset, dbAppendOnly)

  'make sure a selection has been made
  If Me.lstResults.ItemsSelected.Count = 0 Then
    MsgBox "At least 1 part must be selected."
    Exit Sub
  End If

  'add selected value(s) to table
  Set ctl = Me.lstResults
  For Each varItem In ctl.ItemsSelected
    rs.AddNew
    rs!ItemNo = ctl.ItemData(varItem)
    rs.Update
  Next varItem
    
ExitHandler:
  Set rs = Nothing
  Set db = Nothing
  Exit Sub

ErrorHandler:
  Select Case Err
    Case Else
      MsgBox Err.Description
      DoCmd.Hourglass False
      Resume ExitHandler
  End Select

End Sub

KitBuild下面显示的是保存选择的表格。目前,它仅将来自选择的超过 1 条信息传输NoqryParts名为ItemNo (ID #8) 的列中。这工作正常,但我还需要将记录的描述单位成本qryParts转移到KitBuild.

在此处输入图像描述

我尝试将以下内容更改为rs!Descriptionrs!UnitCostNo值只是转移到那些列(ID #9、10),而不是提供DescriptionCost

  'add selected value(s) to table
  Set ctl = Me.lstResults
  For Each varItem In ctl.ItemsSelected
    rs.AddNew
    rs!ItemNo = ctl.ItemData(varItem)
    rs.Update
  Next varItem

这是我想从复制qryParts到的信息的一个示例KitBuild在此处输入图像描述

如何修改代码以包含No、Description 和 Cost

标签: vbams-access

解决方案


我假设您的 ListBox 的数据顺序与您最后一张图片的顺序相同。用这个:

      'add selected value(s) to table
      Set ctl = Me.lstResults
      For Each varItem In ctl.ItemsSelected
        rs.AddNew
        rs!ItemNo = ctl.Column(0)
        rs!Description = ctl.Column(1)
        rs!UnitCost = ctl.Column(2)
        rs.Update
      Next varItem


推荐阅读