基于非绑定列重新查询后访问VBA还原列表框选择

时间:2014-08-24 21:44:43

标签: vba ms-access listbox access-vba

因此,我继承了MS Access 2010(以及现在的2013年)代码,该代码具有绑定到非唯一列的列表框。但是,该绑定值在代码中使用,因此,我无法更改绑定的列。但是,我有一个子表单需要重新查询父表单上的列表框。我正在努力解决的问题是如何将父级列表框中的选择恢复为在重新获取列表框之前选择的项目。

我已尝试在重新查询之前存储Parent.List0值,然后使用Parent.List0.Selected和Parent.List0.ItemData,但这些似乎不起作用,因为可能是列表框绑定到的列是不是唯一的。

列表框中的一列是唯一的。第4列(第(3)列)是唯一的,但我没有找到基于绑定列以外的列选择列表框项的方法。

我相信有人会有一些想法可以解决这个问题,但我在搜索网页时找不到任何解决方案。

1 个答案:

答案 0 :(得分:1)

我在2010版本中,在测试时,我无法复制列表框丢失其值的情况。无论是在绑定表格还是未绑定表格上。

无论如何,第3列似乎有一个唯一的键 - 所以你可以使用它。

' Assuming this code runs from within the sub-form
KeyID = Me.Parent.Controls("MyListBox").Column(3)
With Me.Parent.Controls("MyListBox")
  .Requery ' Or do whatever you do that causes it to requery

  ' Find the previously selected item and select
  For i = 0 To (.ListCount - 1)
    If .Column(3, i) = KeyID Then
      .Selected(i) = True
      Exit For
    End If
  Next
End With

这应该可以解决问题。