Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在窗体上的Access VBA中,我想使用两个列表框对一组字段名进行排序和重新排序_Vba_Sorting_Ms Access_Listbox_Filtering - Fatal编程技术网

在窗体上的Access VBA中,我想使用两个列表框对一组字段名进行排序和重新排序

在窗体上的Access VBA中,我想使用两个列表框对一组字段名进行排序和重新排序,vba,sorting,ms-access,listbox,filtering,Vba,Sorting,Ms Access,Listbox,Filtering,我正在尝试创建一个过滤器,这样用户就可以选择40多个字段中的任意一个显示在通过VBA动态创建的查询结果中 这是我在很多程序中看到的标准,所以我想一定有人的代码可以做到这一点,而不需要我重新发明轮子。不幸的是,我一直无法在网上找到它 基本上,当它启动时,所有字段名都列在左框中,右框为空。用户可以单击右箭头按钮将字段移动到右框中,或单击左箭头将字段删除并放回左框中。用户还可以使用向上和向下箭头按钮更改右侧列表框中选定字段的顺序 一旦正确填充和排序了正确的列表框,我就知道如何正确执行查询。如果您找不到

我正在尝试创建一个过滤器,这样用户就可以选择40多个字段中的任意一个显示在通过VBA动态创建的查询结果中

这是我在很多程序中看到的标准,所以我想一定有人的代码可以做到这一点,而不需要我重新发明轮子。不幸的是,我一直无法在网上找到它

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


一旦正确填充和排序了正确的列表框,我就知道如何正确执行查询。

如果您找不到完整的示例,那么您需要自己一步一步地完成。下面是
列表框
控件的示例。页面底部有指向此控件的各种方法和属性的链接

本质上,单击按钮(箭头)会触发单击事件; 在这种情况下,您可能需要循环查找所选的
项目;
如果列表框是多选的,则可以检查所选的
集合; 然后使用
AddItem
removieItem
方法将它们从右向左或从左向右移动

我现在记不起字段列表选项是绑定到表,还是在加载表单时只填充一次列表。如果已绑定,则需要使用值列表选项并使用VBA检索所有字段名,并使用这些名称设置
行源代码(您可能已经这样做了)

无论是在哪种情况下(字段还是值列表),我都不相信列表可以自动保持排序(与VB.NET不同)。您可能需要将RowSource拆分为一个(动态)数组,找到一个简单的排序例程来对数组进行排序,并将排序后的项目重新指定为
RowSource

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


然而,你可能想继续你的搜索,因为我怀疑某个地方有一个例子。祝你好运。

你似乎已经确定了基本想法,那么你的问题是什么?