确定是不是在 MS Access 2007 列表框中选择了行

Posted

技术标签:

【中文标题】确定是不是在 MS Access 2007 列表框中选择了行【英文标题】:Determine whether row is selected in MS Access 2007 List Box确定是否在 MS Access 2007 列表框中选择了行 【发布时间】:2011-01-13 23:11:05 【问题描述】:

我有一种情况,我想将一个表中的多个值与另一个表中的值相关联。我的数据结构中包含一个多对多联接表,我正在尝试管理联接表中的成员资格。

这个问题是关于流程的 UI 部分。我认为我想做的是在一个表单上为用户提供一个多选列表框控件,该控件包含 TableA 常量(顺便说一句,隐藏)的 ID。列表将填充来自 TableB 的所有(相当短的列表)行(显示的描述,隐藏列中的 ID)。在加载时,我会选择列表中参与 M-M 连接的那些行。用户可以选择添加和/或取消选择删除。

我不确定如何判断是否选择了任何给定行。我知道 IsSelected 集合——如果我只是添加,我会使用 For Each 进行处理,但我需要删除任何已取消选择的集合,并且我需要重新添加任何已经存在的。我在这一点上的想法是遍历整个列表,测试每个选定的值并在不存在的情况下插入它,并测试每个 un 选择的值是否可能删除(嗯——这开始听起来不必要的复杂......)。

我开始问的是“我如何判断 row(x) 是否被选中?”我仍然想要这个问题的答案,但我也愿意接受其他管理基本问题的建议

【问题讨论】:

使用子表单会容易得多,您不想走那条路吗? 我可能会使用一个子表单,但我宁愿不这样做。我必须让它的行为与附近的其他一些子窗体不同。 【参考方案1】:

您似乎有一个用于创建所选项目的列表。用户更新列表框后,您可以将 .ItemsSelected 与列表中参与 M-M 联接的行进行比较。可以删除缺少的项目,并可以添加其他项目。一些非常粗略的注释:

For Each itm In Me.AList.ItemsSelected
    rsJoinList.Find "ID=" & Me.AList.Column(0, itm)

    If rsJoinList.NoMatch Then
        'To be added
    Else
        'To be deleted
    End If
Next

【讨论】:

以上是关于确定是不是在 MS Access 2007 列表框中选择了行的主要内容,如果未能解决你的问题,请参考以下文章

如何突出显示 MS-Access 列表框行?

MS access 2007 使用组合框填充图片

如何在 MS Access 2007 中使用值填充组合框

Ms Access,双击列表框元素以更新表单

MS Access VBA - 在表单上提取列表框值(使用表单名称。)

ms-access 2007 年报告