2017-07-17 43 views
1

我正在用窗体创建我自己的Access应用程序,并且遇到了我无法解决的问题。我在编程方面相当新。MS Access修改列表框中的项目

我创建了一个表单来创建一个订单,这一切都正常工作,并将partslist插入到数据库中。问题是我想改变这个顺序。我加载所有零件到列表框通过下面的代码:(进行的查询有点小,这只是举例)

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

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

Error

我的形式: A screen of my form FYI

我已经在堆栈溢出发现,这是不可能使用.AddItem.RemoveItem与使用查询的ListBox(仅值列表)。但我找不到解决这个问题的替代方法。

回答

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 /组合框将自动重新查询它。

0

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

例如,要排除的项目,你可以这样做:

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

然后.RowSource SQL会是这样: