Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 将值添加到Access'07 VBA中的多列列表框_Ms Access_Listbox_Vba - Fatal编程技术网

Ms access 将值添加到Access'07 VBA中的多列列表框

Ms access 将值添加到Access'07 VBA中的多列列表框,ms-access,listbox,vba,Ms Access,Listbox,Vba,我是07年的初学者。我目前正在开发一个食堂查询系统。在Add/Modify Item屏幕中,我有一个组合框,它从包含Item、Rate、QtyAvailable字段的表tblSampleData中提取值。我将所需的项目从combo(主要是所有可用项目的列表)转移到一个列表框中,该列表框包含用户通过单击转移按钮想要的项目。组合框和列表都有列标题。如何在列表框中创建另一个与任何表都不关联的行,称为Quantity,用户可以在其中输入其项目的数量 我们将向紧急援助表示祝贺。 任何其他解决这一问题的方法

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

我们将向紧急援助表示祝贺。 任何其他解决这一问题的方法都值得称赞。 此外,如果您不理解,请随时询问有关此的任何问题

问候,,
S Sandeep

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

[假设]

->表数据:我的[tblSampleData]如下所示:

ID  Item    Rate    QtyAvailable
1   Item1   Rate1   3
2   Item2   Rate2   5
->组合框:组合框的绑定列是1,隐藏的第一列是[ID]

->数据绑定:组合框有行源tblSampleData,但没有控制源。列表框完全未绑定

如果您的情况不同,您需要调整示例代码以适应

[/假设]

我创建了一个测试表单,第一次打开时它看起来像这样:

表单后面的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
用户从组合框中选择项目

…在文本框中输入数量

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


它表示tblSampleData中的Set rst=cdb.OpenRecordsetSELECT*行出现代码错误,其中ID=&Me.cbxItems.Value,dbOpenSnapshot。Message=参数太少。预期1.您能否将用户选择的数量从可用数量中减去?这并不困难。以dbOpenDynaset而不是dbOpenSnapshot打开记录集将允许更新记录集。然后你可以重新开始。编辑,重新开始!QtyAvailable=rst!QtyAvailable-qtySelected,并在关闭记录集之前进行rst.Update。