如果我正确理解您的要求,您将需要在表单中添加一个文本框,以便用户在选择项目时可以指定数量。
[假设]
--> 表数据:我的 [tblSampleData] 看起来像这样:
ID Item Rate QtyAvailable
1 Item1 Rate1 3
2 Item2 Rate2 5
--> 组合框:Bound Column
组合框的 是1
,(隐藏的)第一列,即[ID]。
--> 数据绑定:组合框有Row Source
(tblSampleData),但没有Control Source
. 列表框完全未绑定。
如果您的情况不同,您将需要调整示例代码以适应。
[/假设]
我创建了一个测试表单,当它第一次打开时看起来像这样:

表单后面的 VBA 代码是这样的:
Option Compare Database
Option Explicit
Private Sub btnTransfer_Click()
Dim cdb As DAO.Database, rst As DAO.Recordset, qtySelected As Long
Set cdb = CurrentDb
Set rst = cdb.OpenRecordset("SELECT * FROM tblSampleData WHERE ID=" & Me.cbxItems.Value, dbOpenSnapshot)
qtySelected = Val(Nz(Me.txtQty.Value, 0))
If qtySelected <= 0 Then
MsgBox "Please specify a (positive) quantity.", vbExclamation
Else
If qtySelected <= rst!QtyAvailable Then
Me.lstSelected.AddItem rst!ID & ";" & rst!Item & ";" & rst!Rate & ";" & qtySelected
Else
MsgBox "Quantity selected exceeds quantity available.", vbExclamation
End If
End If
rst.Close
Set rst = Nothing
Set cdb = Nothing
End Sub
Private Sub Form_Load()
Do While Me.lstSelected.ListCount > 0
Me.lstSelected.RemoveItem 0
Loop
Me.lstSelected.AddItem ";Item;Rate;QtySelected"
End Sub
用户从组合框中选择项目...

...在文本框中输入数量...

...然后单击“转移”按钮将项目+所选数量移动到列表框中:
