【问题标题】:MS Access Modify items in listboxMS Access 修改列表框中的项目
【发布时间】:2017-07-17 08:40:58
【问题描述】:

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

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

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

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

我的表格:

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

【问题讨论】:

    标签: vba ms-access listbox


    【解决方案1】:

    如您所述,您不能使用 .AddItem.RemoveItem
    而是修改RowSource

    例如添加一个常量项

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

    【讨论】:

      【解决方案2】:

      由于无法直接修改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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-08
        • 2015-01-21
        • 1970-01-01
        • 2021-05-20
        相关资源
        最近更新 更多