MS Access修改列表框中的项目

时间:2017-07-17 08:40:58

标签: vba ms-access listbox

我正在使用表单创建自己的Access应用程序,但遇到了一个我无法解决的问题。我对编程很新。

我创建了一个表单来创建一个订单,这一切都运行正常,并将partslist插入到数据库中。问题是当我想要改变这个顺序时。我通过以下代码将所有部分加载到ListBox中:(使查询更小,仅作为示例)

Forms!VerkoopWijzigen!lbOnderdelen.RowSourceType = "Table/Query"
Forms!VerkoopWijzigen!lbOnderdelen.RowSource = "SELECT * FROM parts WHERE PartID=" & PartID & ""

这也可以正常工作,但如果我想删除或添加项目到ListBox,它会给我一个错误:

Error

我的表格: A screen of my form FYI

我已经在Stack Overflow上发现,使用查询(仅值列表)不能将.AddItem.RemoveItem与ListBox一起使用。但我找不到另一种方法来解决这个问题。

2 个答案:

答案 0 :(得分:0)

如您所述,您无法使用.AddItem.RemoveItem 而是修改RowSource

E.g。添加常量项

RowSource = "SELECT * FROM parts WHERE PartID=" & PartID & _
            " UNION ALL SELECT 47, 'Bamboozle' FROM aDummyTableWithOneRecord"

或删除一些

RowSource = "SELECT * FROM parts WHERE PartID=" & PartID & _
            " AND foo <> 'Bamboozle'"

更改列表框/组合框的.RowSource将自动重新查询它。

答案 1 :(得分:0)

由于无法直接修改ListBox中的数据,因此需要修改表中的数据并根据需要修改控件的.RowSource。

例如,要排除项目,您可以执行此操作:

'Mark excluded
CurrentDb.Execute "UPDATE parts SET Excluded=True WHERE PartID=" & PartID

然后.RowSource SQL就像这样:

With Forms.VerkoopWijzigen.lbOnderdelen
    .RowSourceType = "Table/Query"
    .RowSource = "SELECT * FROM parts WHERE Excluded=False AND PartID=" & PartID
End With