DATAGRIDVIEW PESQUISA DEIXANDO LINHAS COM O NOME
Estou desenvolvendo um form (A1_CONTLISTA), para um banco de dados em ACCESS, com um DATAGRIDVIEW1, com os seguintes códigos:
Imports System.Data.OleDb
Public Class A1_ContLista
Inherits System.Windows.Forms.Form
Dim CN As New ADODB.Connection
Dim RS, RS1 As New ADODB.Recordset
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Private Sub datagridconfig()
DataGridView1.AutoGenerateColumns = False
DataGridView1.Columns.Clear()
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]NOME DO CONTATO[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]TIPO[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]CPF/CNPJ[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]DDD[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô] TELEFONE[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]DDD[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]CELULAR[Ô])
DataGridView1.Columns(0).DataPropertyName = [Ô]NOME[Ô]
DataGridView1.Columns(1).DataPropertyName = [Ô]TIPO[Ô]
DataGridView1.Columns(2).DataPropertyName = [Ô]CPFouCNPJ[Ô]
DataGridView1.Columns(3).DataPropertyName = [Ô]DDD[Ô]
DataGridView1.Columns(4).DataPropertyName = [Ô]TELEFONE_FIXO[Ô]
DataGridView1.Columns(5).DataPropertyName = [Ô]DDD1[Ô]
DataGridView1.Columns(6).DataPropertyName = [Ô]TELEFONE_CELULAR[Ô]
DataGridView1.Columns(0).Width = 110
DataGridView1.Columns(1).Width = 95
DataGridView1.Columns(2).Width = 93
DataGridView1.Columns(3).Width = 40
DataGridView1.Columns(4).Width = 70
DataGridView1.Columns(5).Width = 40
DataGridView1.Columns(6).Width = 90
DataGridView1.Columns(0).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
DataGridView1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
[ô]Alinhar Cabeçalho
DataGridView1.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
End Sub
Private Sub errorcheck()
If Err.Number <> 0 Then
MsgBox([Ô]Não foi possÃvel acessar o banco de dados.[Ô])
Exit Sub
Else
[ô]MsgBox([Ô]The Northwind database was opened successfully.[Ô])
End If
End Sub
Private Sub A1_ContLista_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CN = New ADODB.Connection [ô]conexao usando ADO
CN.Open([Ô]Provider = MICROSOFT.JET.OLEDB.4.0;data Source= c:\alexandra\bd_psicologia.mdb [Ô])
errorcheck()
Call CarregaGrid() [ô]exibe informação da tabela no grid
End Sub
Private Sub CarregaGrid()
RS = New ADODB.Recordset
RS.Open([Ô]select * from CONTATOS order by Nome[Ô], CN, 1, 2)
da = New OleDbDataAdapter
ds = New DataSet
da.Fill(ds, RS, [Ô]contatos[Ô])
datagridconfig()
DataGridView1.DataSource = ds.Tables([Ô]contatos[Ô])
DataGridView1.Refresh()
End Sub
Private Sub DataGrid1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseUp
Dim i As Integer
i = DataGridView1.CurrentRow.Index
End Sub
Private Sub Pesquisa_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Pesquisa.KeyDown
Dim txt As String = Nothing
For Each row As DataGridViewRow In DataGridView1.Rows
For Each cell As DataGridViewCell In DataGridView1.Rows(row.Index).Cells
If Pesquisa.Text <> [Ô][Ô] Then
If cell.ColumnIndex = 0 Then
txt = cell.Value.ToString
If txt.StartsWith(Pesquisa.Text.Substring(0, Pesquisa.Text.Length)) Then
Me.DataGridView1.Rows(cell.RowIndex).Selected = True
End If
End If
Else
Me.DataGridView1.Rows(cell.RowIndex).Selected = False
End If
Next
Next
End Sub
End Class
Funciona para a pesquisa, porém eu queria que ao ser digitado no PESQUISA.TEXT fosse ficando somente nomes que contenham letras conincidentes com o for sendo digitado no Textbox.
Agradeço a todos desde já.
Francisco José
f.j.sobreira@bol.com.br
Imports System.Data.OleDb
Public Class A1_ContLista
Inherits System.Windows.Forms.Form
Dim CN As New ADODB.Connection
Dim RS, RS1 As New ADODB.Recordset
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Private Sub datagridconfig()
DataGridView1.AutoGenerateColumns = False
DataGridView1.Columns.Clear()
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]NOME DO CONTATO[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]TIPO[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]CPF/CNPJ[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]DDD[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô] TELEFONE[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]DDD[Ô])
DataGridView1.Columns.Add([Ô]CONTATOS[Ô], [Ô]CELULAR[Ô])
DataGridView1.Columns(0).DataPropertyName = [Ô]NOME[Ô]
DataGridView1.Columns(1).DataPropertyName = [Ô]TIPO[Ô]
DataGridView1.Columns(2).DataPropertyName = [Ô]CPFouCNPJ[Ô]
DataGridView1.Columns(3).DataPropertyName = [Ô]DDD[Ô]
DataGridView1.Columns(4).DataPropertyName = [Ô]TELEFONE_FIXO[Ô]
DataGridView1.Columns(5).DataPropertyName = [Ô]DDD1[Ô]
DataGridView1.Columns(6).DataPropertyName = [Ô]TELEFONE_CELULAR[Ô]
DataGridView1.Columns(0).Width = 110
DataGridView1.Columns(1).Width = 95
DataGridView1.Columns(2).Width = 93
DataGridView1.Columns(3).Width = 40
DataGridView1.Columns(4).Width = 70
DataGridView1.Columns(5).Width = 40
DataGridView1.Columns(6).Width = 90
DataGridView1.Columns(0).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
DataGridView1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
[ô]Alinhar Cabeçalho
DataGridView1.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
End Sub
Private Sub errorcheck()
If Err.Number <> 0 Then
MsgBox([Ô]Não foi possÃvel acessar o banco de dados.[Ô])
Exit Sub
Else
[ô]MsgBox([Ô]The Northwind database was opened successfully.[Ô])
End If
End Sub
Private Sub A1_ContLista_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CN = New ADODB.Connection [ô]conexao usando ADO
CN.Open([Ô]Provider = MICROSOFT.JET.OLEDB.4.0;data Source= c:\alexandra\bd_psicologia.mdb [Ô])
errorcheck()
Call CarregaGrid() [ô]exibe informação da tabela no grid
End Sub
Private Sub CarregaGrid()
RS = New ADODB.Recordset
RS.Open([Ô]select * from CONTATOS order by Nome[Ô], CN, 1, 2)
da = New OleDbDataAdapter
ds = New DataSet
da.Fill(ds, RS, [Ô]contatos[Ô])
datagridconfig()
DataGridView1.DataSource = ds.Tables([Ô]contatos[Ô])
DataGridView1.Refresh()
End Sub
Private Sub DataGrid1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseUp
Dim i As Integer
i = DataGridView1.CurrentRow.Index
End Sub
Private Sub Pesquisa_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Pesquisa.KeyDown
Dim txt As String = Nothing
For Each row As DataGridViewRow In DataGridView1.Rows
For Each cell As DataGridViewCell In DataGridView1.Rows(row.Index).Cells
If Pesquisa.Text <> [Ô][Ô] Then
If cell.ColumnIndex = 0 Then
txt = cell.Value.ToString
If txt.StartsWith(Pesquisa.Text.Substring(0, Pesquisa.Text.Length)) Then
Me.DataGridView1.Rows(cell.RowIndex).Selected = True
End If
End If
Else
Me.DataGridView1.Rows(cell.RowIndex).Selected = False
End If
Next
Next
End Sub
End Class
Funciona para a pesquisa, porém eu queria que ao ser digitado no PESQUISA.TEXT fosse ficando somente nomes que contenham letras conincidentes com o for sendo digitado no Textbox.
Agradeço a todos desde já.
Francisco José
f.j.sobreira@bol.com.br
Seria +/- assim:
Reparei que é novato aqui no fórum e eu sugiro que pesquise antes de postar, tem muito material na net a respeito disso.
Private Sub CarregaGrid()
RS = New ADODB.Recordset
RS.Open([Ô]select * from CONTATOS where nomedocampo like [ô][Ô] & PESQUISA.txt & [Ô]%[ô][Ô] order by Nome[Ô], CN, 1, 2)
da = New OleDbDataAdapter
ds = New DataSet
da.Fill(ds, RS, [Ô]contatos[Ô])
datagridconfig()
DataGridView1.DataSource = ds.Tables([Ô]contatos[Ô])
DataGridView1.Refresh()
End Sub
Reparei que é novato aqui no fórum e eu sugiro que pesquise antes de postar, tem muito material na net a respeito disso.
Altair,
Muito grato pela presteza e rapidez com que você procurou autiliar.
Procedi como recomendado, poerém o TextBox localiza a linha, como já fazia antes, porém as demais linhas que não têm nada com parte do textbox digitado continuam apareccendo. Gostaria que ao encontrar dados iguais ficasse somente as linhas que satisfaçam a pesquisa. Exemplo: Ao digitar Francisco aparecesse somente:
Francisco Airton Veiga Filho
Francisco João dos Anjos
Demais que não sejam iniciados por Francisco ficassem ocultos.
Grato
Muito grato pela presteza e rapidez com que você procurou autiliar.
Procedi como recomendado, poerém o TextBox localiza a linha, como já fazia antes, porém as demais linhas que não têm nada com parte do textbox digitado continuam apareccendo. Gostaria que ao encontrar dados iguais ficasse somente as linhas que satisfaçam a pesquisa. Exemplo: Ao digitar Francisco aparecesse somente:
Francisco Airton Veiga Filho
Francisco João dos Anjos
Demais que não sejam iniciados por Francisco ficassem ocultos.
Grato
Basta colocar a função que te passei no evento TextChanged do textbox PESQUISA
Ficaria +/- assim:
Ficaria +/- assim:
Private Sub pesquisa_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pesquisa.TextChanged
CarregaGrid()
End Sub
RESOLVIDO!
Um muito obrigado! pela agilidade e competência, nota 1.000 Altair!
Sobreira
Um muito obrigado! pela agilidade e competência, nota 1.000 Altair!
Sobreira
Ok... Precisando estamos aÃ...
Não se esqueça de encerrar o tópico.
Não se esqueça de encerrar o tópico.
Tópico encerrado , respostas não são mais permitidas