删除组合/列表框中的重复项
我根据数据库中字段中的值填充组合框。唯一的问题是数据库中存在重复项(必需的重复项)如何只列出一次每个项目 i Then
LB.RemoveItem i
Else
i = i + 1
End If
Loop
LB.ListIndex = -1
End Function
这对我也适用
~'J'~ Hendie,我将其添加到VBA功能区域的文本下。 伟大的工具
看这里 如果添加到combobox中的值来自数据库,最简单的解决方案是只查询数据库中的唯一值。你要注意在你使用的SQL语句中。您可能会在SQL语句中使用DISTINCT关键字。例如,如果您正在对一个包含州的组合框进行populate,并且您从中提取州的表包含您所有客户的地址,则该表将包含(除了其他内容之外)如下字段:
,,,,
现在,您将用于从该列表中选择唯一州的SQL语句将是
“从您的表中选择不同的城市name ORDER BY City”
DISTINCT关键字根据select语句中的字段来决定什么是不同的。例如,如果您有一个这样的表
addr 1 city
1 Chicago
2 Chicago
并且您使用了SQL语句“SELECT DISTINCT * FROM Table1”或“SELECT DISTINCT addr1,city FROM Table1 ”,您将得到一个包含2行的记录集,每一行对应一个地址(因为1和Chicago的组合不同于2和Chicago的组合)。如果您使用语句“SELECT DISTINCT city from Table1 ”,您将得到一个包含一行的记录集,因为表中只有一个唯一的城市。
现在,由于您从数据库中提取的都是唯一数据,因此您无需编写任何自己的重复数据删除代码。这应该会更快,因为您没有向combobox添加数据,这些数据稍后才会从combobox中移除。 此外,似乎列出的函数只有在对组合框中的数据进行排序时才起作用。 我同意,但是OP可能想在从这个盒子中移除副本之前看到所有的值?
~'J'~ 完美的...
谢谢大家的帮助....
是的,伙计
这里是一个寻求帮助的好地方
我可以秘密地告诉你…这里有太多聪明的程序员
(但不包括我)
快乐的计算
~'J'
好吧,如果你想先对它进行排序,那么...
Function LBsort(LB As ListBox)
' Sort the listbox
Dim LBvar As Variant
For i = 0 To LB.ListCount - 2
If LB.List(i) > LB.List(i + 1) Then
LBvar = LB.List(i)
LB.List(i) = LB.List(i + 1)
LB.List(i + 1) = LBvar
i = -1
End If
Next i
End Function
页:
[1]