SearchBox в Vb.net

Я делаю панель поиска, используя базу данных доступа и список. Приведенный ниже код выполняет поиск элемента в базе данных. Если элемента нет, он выдаст "нет совпадений", а в случае совпадения отобразит результат в списке.

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

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

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

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles btnSearch.Click
    Dim con As New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=C:\Users\jacob\Desktop\MS Office\project.mdb")
    Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM tblProduct WHERE productID LIKE '" & txtSearch_Bar.Text & "'", con)
    con.Open()
    Dim sdr As OleDbDataReader = cmd.ExecuteReader()


    If Not sdr.HasRows Then
        MessageBox.Show("No Matches")
        Exit Sub
    End If

    While (sdr.Read())
        lstbSearchResult.Items.Add(sdr("ProductID"))
    End While


    'lstbSearchResult.Items.Clear()

End Sub

1 ответ

Решение

Ответ за)

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

Псевдокод:

found = false
for each item in listbox
    if newItem = item then found = true
if not found
    listbox.add item

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

Другие вопросы по тегам