我正在使用表单创建自己的Access应用程序,但遇到了一个我无法解决的问题。我对编程很新。
我创建了一个表单来创建一个订单,这一切都运行正常,并将partslist插入到数据库中。问题是当我想要改变这个顺序时。我通过以下代码将所有部分加载到ListBox中:(使查询更小,仅作为示例)
Forms!VerkoopWijzigen!lbOnderdelen.RowSourceType = "Table/Query"
Forms!VerkoopWijzigen!lbOnderdelen.RowSource = "SELECT * FROM parts WHERE PartID=" & PartID & ""
这也可以正常工作,但如果我想删除或添加项目到ListBox,它会给我一个错误:
我已经在Stack Overflow上发现,使用查询(仅值列表)不能将.AddItem
和.RemoveItem
与ListBox一起使用。但我找不到另一种方法来解决这个问题。
答案 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