我正在尝试从Listbox1(启用多选)中进行用户选择来填充Listbox2(在 中没有用户选择Listbox2)。Listbox1有 3 列,正在显示列 (1)。我想Listbox2从Listbox1用户选择中显示列(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