#vb.net #sqlite
#vb.net #sqlite
Вопрос:
У меня есть два таких поля со списком
Мне нужно создать функцию автозаполнения для 1-го выпадающего списка. В нем должен быть указан идентификатор сотрудника, если в поле поиска указан номер сотрудника. Аналогично, в нем должно быть указано имя сотрудника вместе с фамилией, если в поле поиска указано Employee-Name.
Как я могу это сделать? Понятия не имею, я делаю это впервые. Я использую SQLite, Visual Studio 2010.
Dim mySelectQuery As String = "SELECT " amp; Search amp; " FROM EmployeeTable WHERE Status LIKE '" amp; Status amp; "'"
Dim myConnString As String = "Data Source=" amp; Application.StartupPath amp; "DatabaseSimpleDB.db3"
Dim sqConnection As New SQLiteConnection(myConnString)
Dim sqCommand As New SQLiteCommand(mySelectQuery, sqConnection)
sqConnection.Open()
Try
' Always call Read before accessing data.
Dim sqReader As SQLiteDataReader = sqCommand.ExecuteReader()
Dim j As Integer = sqReader.FieldCount
While sqReader.Read()
'''''''''''''''''''''''Here, Don't know how to list the items from the query reult into the combo-box
End While
'Close Reader after use
sqReader.Close()
Catch ex As Exception
'Show Message on Error
MsgBox(ex.ToString)
Finally
'At Last Close the Connection
sqConnection.Close()
End Try
Ответ №1:
Я не совсем уверен, о чем вы спрашиваете, но я думаю, что это оно. В SelectedIndex
измененном событии у вас будет что-то похожее на приведенный ниже код. Вы можете добавить If
инструкцию, чтобы проверить, к чему вы запрашиваете, и соответствующим образом скорректировать свой запрос.
Dim dt as New DataTable
Try
Using sqlConn
sqlConn.Open()
Using cmd As New SqlCommand("your query")
cmd.Connection = sqlConn
cmd.CommandType = CommandType.Text
Dim reader as SqlDataReader = cmd.ExecuteReader()
dt.Load(reader)
End Using
End Using
Catch ex As SqlException
Throw New Exception(ex.Message)
End Try
With yourComboBox
.DataSource = dt
.DataValueField = "columName you want to be the value of the item"
.DataTextField = "columnName of the text you want displayed"
End With
Комментарии:
1. Как я могу это сделать, используя Data Reader вместо адаптера. Я слышал, что программа чтения данных быстрее
2. @Failed_Noob проверьте мой пост еще раз.
3. Выдает ошибку и сообщает, что DataValueField и DataTextField не являются членами выпадающего списка
4. @Failed_Noob, извините, я думал, что это asp.net тоже вопрос. Используйте:
DisplayMember
иValueMember
.
Ответ №2:
Обратите внимание на следующие свойства для выпадающего списка: AutoCompleteMode, AutoCompleteSource, AutoCompleteCustomSource.
Выберите соответствующий режим автозаполнения. Смотрите подробную информацию о различных режимах по этой ссылке. Для AutoCompleteSource выберите либо ListItems (в этом случае источником будут элементы выпадающего списка), либо CustomSource. Если вы выбираете CustomSource, задайте соответствующий источник в качестве значения свойства AutoCompleteCustomSource выпадающего списка.
Это должно предоставить вам достаточно подробностей, чтобы сделать то, что вы ищете. Другие перечисленные вами требования, такие как получение данных из базы данных SQLite или изменение имени сотрудника и номера сотрудника, не повлияют на то, как вы работаете с функцией автозаполнения.
Комментарии:
1. Пожалуйста, скажите мне, как ввести результат запроса в элемент списка со списком. Посмотрите на приведенный выше код