1

我是 Access '07 的初学者。我目前正在研究食堂查询系统。在 Add/Modify Item 屏幕中,我有一个组合框,它从包含 Item、Rate、QtyAvailable 字段的表 tblSampleData 中提取值。通过单击转移按钮,我将所需项目从组合(基本上是所有可用项目的列表)转移到列表框(包含用户想要的项目)。组合和列表都有列标题。您如何在名为 Quantity 的列表框中创建另一个与任何表无关的行,用户可以在其中输入其项目的数量?

紧急帮助将受到祝贺。任何其他解决此问题的方法都将受到称赞。另外,如果您不明白,请随时询问有关此的任何问题。

问候, S 桑迪普

4

1 回答 1

3

如果我正确理解您的要求,您将需要在表单中添加一个文本框,以便用户在选择项目时可以指定数量。

[假设]

--> 表数据:我的 [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

用户从组合框中选择项目...

CBX

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

数量

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

添加项目

于 2013-03-31T16:18:56.720 回答