Usuário com melhor resposta
Fazer um Select com Like para uma Datagridview

Pergunta
-
Olá, estou com dificuldades na string SQL com Like para colocar na Datagrid no evento TextChanged do meu TextBox, se alguém puder ajudar..
Segue código:
Private Sub txtPesquisaCliente_TextChanged(sender As Object, e As EventArgs) Handles txtPesquisaCliente.TextChanged Dim cmdCliente As New SqlCommand If txtPesquisaCliente.Text.Trim = "" Then txtPesquisaCliente.Focus() Exit Sub ElseIf comboModoPesquisa.SelectedIndex = -1 Then MessageBox.Show("Selecione um modo de pesquisa!", "Graphic Solution", MessageBoxButtons.OK, MessageBoxIcon.Information) Exit Sub End If Dim modoPesquisa As String = "" If comboModoPesquisa.Text = "Código" Then modoPesquisa = "cod_Cliente" ElseIf comboModoPesquisa.Text = "Nome" Then modoPesquisa = "nome_Cliente" ElseIf comboModoPesquisa.Text = "CPF" Then modoPesquisa = "cpf_Cliente" ElseIf comboModoPesquisa.Text = "RG" Then modoPesquisa = "rg_Cliente" End If strSQL = "Select cod_cliente, nome_cliente, cpf_Cliente, rg_Cliente from Cliente where @modo Like '%@pesquisa%'" cmdCliente.Parameters.AddWithValue("@modo", modoPesquisa) cmdCliente.Parameters.AddWithValue("@pesquisa", txtPesquisaCliente.Text.Trim) cmdCliente.Connection = cnnBanco cmdCliente.CommandText = strSQL Dim da As New SqlDataAdapter(cmdCliente) Dim dt As New DataTable Try da.Fill(dt) dgvClientesCadastrados.DataSource = dt PFormataCliente() lblClientesEncontrados.Text = "Clientes encontrados: " & CStr(CInt(dgvClientesCadastrados.RowCount)) Catch ex As Exception MessageBox.Show(ex.Message) MessageBox.Show("Não foi possível carregar o(s) cliente(s) pesquisado(s)!", "Graphic Solution", MessageBoxButtons.OK, MessageBoxIcon.Information) End Try cmdCliente.Parameters.Clear() End Sub
Sou iniciante ainda.. Não sei onde estou errando...
Desde já, obrigado!
Respostas
-
Daniel, consegui arrumar.. O problema estava no parâmetro (Creio eu), que quando você declara um parâmetro, ele automaticamente recebe aspas simples..
Segue código arrumado:
Private Sub txtPesquisaCliente_TextChanged(sender As Object, e As EventArgs) Handles txtPesquisaCliente.TextChanged Dim cmdCliente As New SqlCommand If txtPesquisaCliente.Text.Trim = "" Then txtPesquisaCliente.Focus() Exit Sub ElseIf comboModoPesquisa.SelectedIndex = -1 Then MessageBox.Show("Selecione um modo de pesquisa!", "Graphic Solution", MessageBoxButtons.OK, MessageBoxIcon.Information) Exit Sub End If Dim modoPesquisa As String = "" If comboModoPesquisa.Text = "Código" Then modoPesquisa = "cod_Cliente = " & txtPesquisaCliente.Text.Trim ElseIf comboModoPesquisa.Text = "Nome" Then modoPesquisa = "nome_Cliente Like '%" & txtPesquisaCliente.Text.Trim & "%'" ElseIf comboModoPesquisa.Text = "CPF" Then modoPesquisa = "cpf_Cliente = " & txtPesquisaCliente.Text.Trim ElseIf comboModoPesquisa.Text = "RG" Then modoPesquisa = "rg_Cliente = " & txtPesquisaCliente.Text.Trim End If strSQL = "Select cod_cliente, nome_cliente, cpf_Cliente, rg_Cliente from Cliente where " & modoPesquisa cmdCliente.CommandText = strSQL cmdCliente.Connection = cnnBanco Dim da As New SqlDataAdapter(cmdCliente) Dim dt As New DataTable Try da.Fill(dt) dgvClientesCadastrados.DataSource = dt.DefaultView PFormataCliente() lblClientesEncontrados.Text = "Clientes encontrados: " & CStr(CInt(dgvClientesCadastrados.RowCount)) Catch ex As Exception MessageBox.Show(ex.Message) MessageBox.Show("Não foi possível carregar o(s) cliente(s) pesquisado(s)!", "Graphic Solution", MessageBoxButtons.OK, MessageBoxIcon.Information) End Try End Sub
- Marcado como Resposta Ivansnp quinta-feira, 30 de outubro de 2014 03:31
Todas as Respostas
-
Olá Ivan,
quando se usa parameter não há necessidade do apóstrofo, veja como fica :
strSQL = "Select cod_cliente, nome_cliente, cpf_Cliente, rg_Cliente from Cliente where @modo Like @pesquisa"
E no seu parametro que você usa o "%" veja :
cmdCliente.Parameters.AddWithValue("@pesquisa", "%" & txtPesquisaCliente.Text.Trim & "%")
Pronto isso resolve !
- Sugerido como Resposta Bruno Destro segunda-feira, 27 de outubro de 2014 09:59
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 27 de outubro de 2014 18:12
- Não Marcado como Resposta Ivansnp quarta-feira, 29 de outubro de 2014 02:41
- Não Sugerido como Resposta Ivansnp quarta-feira, 29 de outubro de 2014 02:41
-
-
-
Daniel, consegui arrumar.. O problema estava no parâmetro (Creio eu), que quando você declara um parâmetro, ele automaticamente recebe aspas simples..
Segue código arrumado:
Private Sub txtPesquisaCliente_TextChanged(sender As Object, e As EventArgs) Handles txtPesquisaCliente.TextChanged Dim cmdCliente As New SqlCommand If txtPesquisaCliente.Text.Trim = "" Then txtPesquisaCliente.Focus() Exit Sub ElseIf comboModoPesquisa.SelectedIndex = -1 Then MessageBox.Show("Selecione um modo de pesquisa!", "Graphic Solution", MessageBoxButtons.OK, MessageBoxIcon.Information) Exit Sub End If Dim modoPesquisa As String = "" If comboModoPesquisa.Text = "Código" Then modoPesquisa = "cod_Cliente = " & txtPesquisaCliente.Text.Trim ElseIf comboModoPesquisa.Text = "Nome" Then modoPesquisa = "nome_Cliente Like '%" & txtPesquisaCliente.Text.Trim & "%'" ElseIf comboModoPesquisa.Text = "CPF" Then modoPesquisa = "cpf_Cliente = " & txtPesquisaCliente.Text.Trim ElseIf comboModoPesquisa.Text = "RG" Then modoPesquisa = "rg_Cliente = " & txtPesquisaCliente.Text.Trim End If strSQL = "Select cod_cliente, nome_cliente, cpf_Cliente, rg_Cliente from Cliente where " & modoPesquisa cmdCliente.CommandText = strSQL cmdCliente.Connection = cnnBanco Dim da As New SqlDataAdapter(cmdCliente) Dim dt As New DataTable Try da.Fill(dt) dgvClientesCadastrados.DataSource = dt.DefaultView PFormataCliente() lblClientesEncontrados.Text = "Clientes encontrados: " & CStr(CInt(dgvClientesCadastrados.RowCount)) Catch ex As Exception MessageBox.Show(ex.Message) MessageBox.Show("Não foi possível carregar o(s) cliente(s) pesquisado(s)!", "Graphic Solution", MessageBoxButtons.OK, MessageBoxIcon.Information) End Try End Sub
- Marcado como Resposta Ivansnp quinta-feira, 30 de outubro de 2014 03:31