2011-11-16 133 views
0

当我从数据库添加值时,列表框应避免重复值。如何避免重复值

对于实施例

的List1框

Value 

100 
200' 
300 

从表中,当添加相同的值001,列表框,应避免的值。当我尝试添加400时,列表框应该允许添加。

+0

当你检索数据时,你不能在你的SQL语句中使用DISTINCT关键字吗? –

+0

如果列表框中的Value已经存在,该怎么办......? – Gopal

+0

当您说“添加相同的值001”时,您的意思是? “添加相同的值100”?如果是这样,当你说添加,你的意思是你将它添加到数据库,或者你的意思是你在VB代码中添加它,然后用数据库值填充列表框? – jworrin

回答

3

当您创建列表框时,应该使用字典来存储所有这些值。

然后,您可以检查,如果该值存在:

If Not dict.Exists(key) Then 
    dict.Add key, value 
    listitem.Add key 
End If 

看到这个主题的更多信息:Does VBA have Dictionary Structure?

+0

问题是VB6,但VBA应该很容易转换。我重申了这个问题。 – JimmyPena

+0

谢谢。似乎它也适用于VB6:http://stackoverflow.com/questions/2789830/iterate-through-a-vb6-dictionary – JMax

1

不知道我是否理解你的问题,但我建议限制他们从数据库返回的值。如果不了解数据库的外观,我建议查找DISTINCT并在查询中使用它以返回列表框的列表

+0

如果值已经在列表框中可用,意味着该怎么做...? – Gopal

0

为了避免添加重复项,您需要检查列表中的每个条目。 你可以用特定的方法解决这个问题,但它取决于代码的其他功能。

但是... 要重申jworrin说过的话,您应该重构数据库查询以仅获取要显示的数据。

1

VB6的ListBox控件没有一个方法,以确定它是否已经包含给定值。您必须使用ListBox的List()和ListCount属性来执行搜索。如果ListBox的Sorted = True,则可以使用二进制搜索模式;否则将不得不进行顺序搜索。

我假设你通过AddItem填充项目,而不是数据绑定(DataSource,DataField等)。如果您正在使用数据绑定,那么您将需要使用SQL,并可能使用DISTINCT,正如jworrin所建议的那样。