Как избежать дублирования значений - PullRequest
0 голосов
/ 16 ноября 2011

Когда я добавляю значение из базы данных, список должен избегать дублирующегося значения.

Например

Поле List1

 Value

100
200'
300

Из таблицы, когда я добавляю то же значение 001, список должен избегать значения. Когда я пытаюсь добавить 400, список должен позволить добавить.

Ответы [ 4 ]

3 голосов
/ 16 ноября 2011

При создании списка вы должны использовать словарь для хранения всех этих значений.

Затем вы можете проверить, существует ли значение:

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

Подробнее см.информация: Имеет ли VBA словарную структуру?

1 голос
/ 16 ноября 2011

Элемент управления VB6 ListBox не имеет метода, чтобы определить, содержит ли он уже заданное значение.Вы должны будете использовать свойства List () и ListCount ListBox, чтобы выполнить поиск.Если ListBox имеет Sorted = True, вы можете использовать шаблон двоичного поиска;иначе это должен быть последовательный поиск.

Я предполагаю, что вы заполняете элементы через AddItem, а не привязки данных (DataSource, DataField и т. д.).Если вы используете привязки данных, вам нужно будет работать с SQL и, возможно, использовать DISTINCT, как рекомендовал jworrin.

1 голос
/ 16 ноября 2011

Не уверен, что понимаю ваш вопрос, но я бы рекомендовал ограничить значения, когда они возвращаются из базы данных. Не имея представления о том, как выглядит ваша база данных, я бы порекомендовал поискать DISTINCT и использовать его в своем запросе, который возвращает список для вашего списка

0 голосов
/ 16 ноября 2011

Чтобы избежать добавления дубликатов, вам нужно будет проверить каждую запись, уже имеющуюся в списке.Вы можете обойти это в доменных отношениях, но это зависит от того, что еще делает код.

Но ... Чтобы повторить то, что сказал jworrin, вам следует реструктурировать запрос к базе данных, чтобы получить только те данные, которые вы хотитедисплей.

...