vba - 在访问VBA的表单中,我希望使用两个列表框对一组字段名称进行排序和排序

  显示原文与译文双语对照的内容
0 0

我正在尝试创建一个过滤器,以便用户可以选择任何 40 + 字段以显示在通过VBA动态创建的查询结果中。

这是我在很多程序中看到的标准,所以我想有人必须有代码来完成它,而不需要我重新创建轮子。 不幸的是我在网上找不到。

基本上,当所有的字段名称都列在左边的框中时,右边的框。 用户可以单击右箭头按钮将字段移动到右侧框或者向左箭头,以删除这些字段并将它们放回左侧框。 用户也可以使用上下箭头按钮来更改右列表框中选定字段的顺序。

一旦正确地填充了右框并正确排序,我就知道如何正确执行查询。

时间: 原作者:

0 0

如果你无法找到一个完整的例子,那么你需要通过自己来完成。 下面是用于 ListBox 控件的MSDN链接 。 页面底部有指向该控件的各种方法和属性的链接。

本质上,点击一个按钮( 你的箭) )触发单击事件;在这种情况下,你可能需要遍历找到 Selected 项;如果多选择列表框然后你可以检查 ItemsSelected 收集;然后你将使用 AddItemRemoveItem right-to-left或者left-to-right方法来移动它们。

目前我不能记得字段列表选项是否绑定到桌上,还是它只是填充当表单加载列表。 如果它被绑定,那么你将需要使用值列表选项,并使用VBA检索所有字段名称,并使用这些选项来设置 RowSource ( 你可能已经这么做了) 。

在任何事件( 字段或者值列表) 我不相信列表可以自动保持排序( 与在 VB.NET). 中不同,你可能需要将行集合拆分为一个( 动态的) ) array, 找到一种简单的排序例程 array, 并重新分配排序项 RowSource

另一种方法是创建两个临时表,并使用 ADO ( 或者 DAO ) 在它们之间插入和删除行,然后使用SELECT语句来填充列表。 这样做的优点是,选择可以包含一个 ORDER BY 子句来每次对列表进行排序。 然而,它可能需要更多的努力,( 维护和删除临时表) 。

但是,你可能希望继续进行搜索,因为我怀疑某个示例在某个地方。 好运。

原作者:
...