-1

我正在尝试从Listbox1(启用多选)中进行用户选择来填充Listbox2(在 中没有用户选择Listbox2)。Listbox1有 3 列,正在显示列 (1)。我想Listbox2Listbox1用户选择中显示列(2)。

我有两个表:Summary_Data&Vendor_Parts 我有一个查询:Vendor_PN_Query设置为使用组合框选择Vendor来过滤到特定供应商的 PN 列表。(Cbo_Vendor) Column(0)=Vendor, Column(1)=PN, Column(2)=Pgm_Name

Cbo_Vendor选择保存到Summary_Data表字段Vendor PN选择从Listbox1保存到Summary_Data表字段PN 我需要数据从Listbox2保存到Summary_Data表字段Pgm

Listbox1根据用户选择显示PN来自 的字段。用户可以通过添加复选标记从此列表框中选择单个或多个 PN。 应该显示与所选 PN 相关联的 Pgm_Name(s),然后将该信息记录回该字段下的表中。Vendor_PN_QueryCbo_VendorListbox2Summary_DataPgm

我找不到任何真正适用于此的代码示例。当我能够编写代码以检索一些数据时,我得到了供应商名称的重复(每个PN选择两次),仅此而已,无论我在代码中使用的任何列数或行源变体如何。

这是我当前的基本代码,但他没有检索 Listbox2 的任何数据:

Private Sub Cbo_Vendor_AfterUpdate()    
    Me.Listbox1.Requery        
End Sub

Private Sub Cmd_Done_Click()

   Dim i As Integer    'Row Index

   If Listbox1.ListCount = 0 Then
       MsgBox "Please select at least one part number."
       Exit Sub
   End If

   For i = 0 To Listbox1.ListCount - 1
      If Listbox1.Selected(i) = True Then
          Listbox2.AddItem Listbox1.Selected(i)
      End If
   Next i

End Sub

基于http://www.iaccessworld.com/29540-2/的修改代码,但我仍然没有在 listbox2 中检索到任何结果。

Private Sub Cbo_Vendor_AfterUpdate()

   Me.Listbox1.Requery

End Sub

Private Sub Cmd_Done_Click()

'Transfer column 2 of selected items in listbox1 to listbox2

Dim i As Integer

  With Me.Listbox1

    For i = 0 To .ListCount - 1
       Me.Listbox2.AddItem (Selected.Column(2, i))
    Next i

End With

End Sub

我在网上找到了从像这样的简单代码到必须创建类模块和临时表的所有示例。真的这么简单,我错过了什么吗?

我终于有了填充 Listbox2 的代码(尽管它以相反的顺序填充 - 不是什么大不了的事)。但是,现在我需要自动选择 Listbox2 中的所有项目并将它们自动保存到我的表中。表中的字段设置为值列表并允许多个值。

这是我的工作代码:

Dim i As Integer

For i = Listbox1.ListCount - 1 To 0 Step -1
  If Listbox1.Selected(i) = True Then
    Listbox2.AddItem Listbox1.Column(3, i)
  End If
Next I

工作代码:

Private Sub Cbo_Vendor_AfterUpdate()
   Me.Listbox1.Requery
End Sub

Private Sub Cmd_Done_Click()

'Transfer column 3 of selected items in listbox1 to listbox2
Dim i As Integer

For i = Listbox1.ListCount - 1 To 0 Step -1    'Code works but lists programs in reverse order & does not save to table.
  If Listbox1.Selected(i) = True Then
    Listbox2.AddItem Listbox1.Column(3, i)
  End If
Next I

End Sub

Private Sub Cmd_Save_Click()
    If Me.Dirty Then
        Me.Dirty = False
    End If
End Sub
4

1 回答 1

1

我的代码现在可以将所选项目从 Listbox1 传输到 Listbox 2,没有重复,然后保存到表中:

Private Sub Cmd_Done_Click()

'Transfer column 3 of selected items in listbox1 to listbox2
Dim i As Integer
Dim j As Integer
Dim strBlock As String
Dim x As Integer
Dim bool As Boolean

For j = Listbox2.ListCount - 1 To 0 Step -1
    Listbox2.Selected(i) = False
Next j

Me.Listbox2.RowSource = ""

For i = Listbox1.ListCount - 1 To 0 Step -1

    strBlock = Me.Listbox1.Column(3, i)

    If Listbox2.ListCount = 0 And strBlock <> "" Then
        If Listbox1.Selected(i) = True Then
          Listbox2.AddItem (strBlock)
          Listbox2.Selected(0) = True
        End If
    Else
        bool = False
         For x = Listbox2.ListCount - 1 To 0 Step -1
            If Listbox2.ItemData(x) <> strBlock Then
               If Listbox2.ItemData(x - 1) <> strBlock Then
                  bool = False
                  If Listbox1.Selected(i) = True Then
                     Listbox2.AddItem (strBlock)
                     Listbox2.Selected(x + 1) = True
                     Exit For
                  End If
               End If
            Else
                bool = True
                Exit For
            End If
        Next x
        End If
Next i
End Sub
于 2018-07-02T15:14:19.657 回答