AMC 0 Denunciar post Postado Maio 22, 2009 Olá galera, boa tarde Tenho um DataGridView que recebe o seguintes dados(ID,Nome,Endereço,Telefone). Um MaskedTextBox com o evento TextChanged ativado. Gostaria de saber como fazer um filtro onde: Digito o nome da pessoa EX: Ana no MaskedTextBox e o grid automaticamente me mostra todos os "ANA" ocultando os outros dados do Grid. Banco SQLSERVER + VB.NET Fiz ele como segue abaixo, só que desta maneira ele não oculta os outros valores que estão fora da faixa de pesquisa. Public Sub Pesquisar(ByVal Nome As String) Dim Comando As SqlCommand = New SqlCommand Dim Reader As SqlDataReader Try AbreConexão() Comando.Connection = Conexão Comando.CommandType = CommandType.Text Comando.Parameters.AddWithValue("PNOME", Nome) Comando.CommandText = "SELECT [ID], [NOME], [ENDEREÇO], [TELEFONE] FROM CLIENTE WHERE (NOME LIKE @PNOME)" Reader = Comando.ExecuteReader While Reader.Read DataGridView1.CurrentRow.Cells(0).Value = Reader("ID").ToString DataGridView1.CurrentRow.Cells(1).Value = Reader("NOME").ToString DataGridView1.CurrentRow.Cells(2).Value = Reader("ENDEREÇO").ToString DataGridView1.CurrentRow.Cells(3).Value = Reader("TELEFONE").ToString End While Catch ex As Exception MessageBox.Show("Não foi possivel fazer pesquisa", ex.Message) Finally FechaConexão() End Try End Sub Desde já agradeço a atenção Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Maio 24, 2009 É porque você precisa limpar a grid, tente isso: dgv.Rows.Clear(); Compartilhar este post Link para o post Compartilhar em outros sites
Nilson Cl. 0 Denunciar post Postado Junho 2, 2009 Boa Noite AMC Vou te passar uma sub para voce filtrar os dados, so que para isto voce tem que conhecer um pouco de sql. Este bloco voce deve colocar no topo de um modulo Imports System.Data.SqlClient Imports System.Data.DataSet Imports System.Data.DataTable Module Funcao End Module E esta sub voce coloca no modulo. Sub Filtrar(ByVal SQL As String, ByVal Grade As DataGridView) Dim Cont As Long = 0, Posicao As String On Error GoTo erro 'seta a conexao existente Using myConnection As New SqlConnection(Coloque aqui a string de sua conexão) 'cria a variavel de comando para a conexao ativa Dim myCmd As SqlCommand = myConnection.CreateCommand() 'Abre a conexao myConnection.Open() 'especifica o tipo de comando a ser usado myCmd.CommandType = CommandType.Text 'recebe os parametro sql para filtrar os registro myCmd.CommandText = SQL 'Acribui o camdo sql para o DataAdapter Dim myDataAdapter As SqlDataAdapter = New SqlDataAdapter(myCmd) 'Cria a instacia do DataSet Dim myDataSet As DataSet = New DataSet() 'Linca o DataSet com o DataAdapter myDataAdapter.Fill(myDataSet) 'Linca o DataSet com a Grade Grade.DataSource = myDataSet.Tables(0) Grade.EditMode = DataGridViewEditMode.EditProgrammatically End Using Exit Sub erro: MsgBox("Erro ao filtrar os dados", MsgBoxStyle.Information + MsgBoxStyle.ApplicationModal) End Sub Abaixo segue um exemplo, de como se passa os parâmetro para a sub Filtrar "Select * From Tabela Where Codigo=" & txtCodigo.text,DataGridView1 Espero que te ajude. Este codigo funciona com vb8 e vb9 t+ Compartilhar este post Link para o post Compartilhar em outros sites