2015-10-04 2 views
0

Я хочу, чтобы результаты поиска были точными. Например, я ввел «L», моя программа показывает только результаты, имеющие букву «L», вместо того, чтобы показывать результаты, что первая буква «L». так как это сделать?Поиск datagrid просмотр точных ключевых слов

Вот мой код:

*** перед началом поиска или набрав на SearchBox, пользователь должен сначала выбрать переключатель для поиска данных из столбца, в моей программе есть 3 кнопка радио (ID, Фамилия, Имя)

Private Sub txtSearch_TextChanged(sender As Object, e As EventArgs) Handles txtSearch.TextChanged 
     Dim DataTable As New DataTable 
     Dim DataAdapter As New MySqlDataAdapter 
     MySqlConn = New MySqlConnection 
     MySqlConn = New MySqlConnection("server=localhost;user id=root;password=root;database=PatientManagementSystem;") 
     MySqlConn.Open() 
     'SEARCH ID 
     If rdbtnID.Checked = True Then 
      txtSearch.MaxLength = 9 
      With cmd 
       .Connection = MySqlConn 
       .CommandText = "SELECT * FROM newpatient WHERE ID like '%" & txtSearch.Text & "%'" 
      End With 
      DataAdapter.SelectCommand = cmd 
      DataTable.Clear() 
      DataAdapter.Fill(DataTable) 
      dgvRecords.DataSource = DataTable 
      MySqlConn.Close() 
      'SEARCH LASTNAME 
     ElseIf rdbtnLastname.Checked = True Then 
      txtSearch.MaxLength = 32767 
      With cmd 
       .Connection = MySqlConn 
       .CommandText = "select * from newpatient where Lastname like '%" & txtSearch.Text & "%'" 
      End With 
      DataAdapter.SelectCommand = cmd 
      DataTable.Clear() 
      DataAdapter.Fill(DataTable) 
      dgvRecords.DataSource = DataTable 
      MySqlConn.Close() 
      'SEARCH FIRSTNAME 
     ElseIf rdbtnFirstname.Checked = True Then 
      txtSearch.MaxLength = 32767 
      With cmd 
       .Connection = MySqlConn 
       .CommandText = "SELECT * FROM newpatient WHERE Firstname like '%" & txtSearch.Text & "%'" 
      End With 
      DataAdapter.SelectCommand = cmd 
      DataTable.Clear() 
      DataAdapter.Fill(DataTable) 
      dgvRecords.DataSource = DataTable 
      MySqlConn.Close() 

     End If 

    End Sub 

ответ

1

Вам необходимо удалить символ% как символ с самого начала.

Изменить

"SELECT * FROM newpatient WHERE ID like '%" & txtSearch.Text & "%'" 

в:

"SELECT * FROM newpatient WHERE ID like '" & txtSearch.Text & "%'" 

Могу ли я также предлагаю: (1) использовать параметризованные SQL, если это система производства, и (2) если вы настаиваете на SQL конкатенации вас необходимо избегать любых одиночных кавычек в txtSearch.Text, которые пользователь вводит в 2 одинарные кавычки. В противном случае инструкции sql не будут выполнены.

+0

спасибо! он работал – exeCUTE

+0

Nice. Не забудьте зеленый галочку! –

+0

Могу ли я получить зеленый тик, если это сработало для вас – chrisl08

Смежные вопросы