DATAGRIDVIEW PESQUISA DEIXANDO LINHAS COM O NOME

F5J5S52 16/10/2012 14:43:25
#412152
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

ALTAIR148 16/10/2012 15:36:47
#412153
Resposta escolhida
Seria +/- assim:

  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.
F5J5S52 16/10/2012 16:59:49
#412159
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
ALTAIR148 16/10/2012 17:35:34
#412165
Basta colocar a função que te passei no evento TextChanged do textbox PESQUISA

Ficaria +/- assim:

Private Sub pesquisa_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pesquisa.TextChanged
CarregaGrid()
End Sub
F5J5S52 16/10/2012 19:23:51
#412170
RESOLVIDO!
Um muito obrigado! pela agilidade e competência, nota 1.000 Altair!
Sobreira
ALTAIR148 16/10/2012 19:25:02
#412171
Ok... Precisando estamos aí...

Não se esqueça de encerrar o tópico.
Tópico encerrado , respostas não são mais permitidas