Usuário com melhor resposta
Pesquisa datagrid filtrando duas ou mais colunas vb.net

Pergunta
-
Tenho um datagrid como 5 colunas com 1000 registros.
Pesquisar na conula2 e na coluna3 usando textbox1 e textbox2 onde:
A pesquisa será verdadeira as duas strings da mesma linha forem iguais as dos textbos
textbox1 pesquisa coluna2 e...
textbox2 pesquisa coluna3
Exemplo:
Se o textbox1.text for igual a string da coluna dois e,
o textbox2 for igual a string da coluna3 da mesma linha"cell"
preenche o textbox3 com as strings da cell das duas colunas.
Preciso desta pesquisa no meu projeto e não sei como fazer. Se alguém ai puder me ajudar...
Respostas
-
Public Class Form1
Dim Lista1 As New AutoCompleteStringCollection
Dim Lista2 As New AutoCompleteStringCollection
Dim Lista3 As New AutoCompleteStringCollection
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
TextBox2.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox2.AutoCompleteSource = AutoCompleteSource.CustomSource
TextBox3.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox3.AutoCompleteSource = AutoCompleteSource.CustomSource
For i As Integer = 0 To DataGridView1.Rows.Count - 1
Lista1.Add(DataGridView1.Rows(i).Cells(1).Value)
Lista2.Add(DataGridView1.Rows(i).Cells(2).Value)
If DataGridView1.Rows(i).Cells(1).Value = DataGridView1.Rows(i).Cells(2).Value Then
Lista3.Add(DataGridView1.Rows(i).Cells(1).Value)
End If
Next
TextBox1.AutoCompleteCustomSource = Lista1
TextBox2.AutoCompleteCustomSource = Lista2
TextBox3.AutoCompleteCustomSource = Lista3
End Sub
End ClassFeito e testado ;) espero que ajude
AleSaggiorato
- Marcado como Resposta AAB D domingo, 13 de janeiro de 2013 15:05
Todas as Respostas
-
Public Class Form1
Dim Lista1 As New AutoCompleteStringCollection
Dim Lista2 As New AutoCompleteStringCollection
Dim Lista3 As New AutoCompleteStringCollection
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
TextBox2.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox2.AutoCompleteSource = AutoCompleteSource.CustomSource
TextBox3.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox3.AutoCompleteSource = AutoCompleteSource.CustomSource
For i As Integer = 0 To DataGridView1.Rows.Count - 1
Lista1.Add(DataGridView1.Rows(i).Cells(1).Value)
Lista2.Add(DataGridView1.Rows(i).Cells(2).Value)
If DataGridView1.Rows(i).Cells(1).Value = DataGridView1.Rows(i).Cells(2).Value Then
Lista3.Add(DataGridView1.Rows(i).Cells(1).Value)
End If
Next
TextBox1.AutoCompleteCustomSource = Lista1
TextBox2.AutoCompleteCustomSource = Lista2
TextBox3.AutoCompleteCustomSource = Lista3
End Sub
End ClassFeito e testado ;) espero que ajude
AleSaggiorato
- Marcado como Resposta AAB D domingo, 13 de janeiro de 2013 15:05
-
Public Class Form1
Dim Lista1 As New AutoCompleteStringCollection
Dim Lista2 As New AutoCompleteStringCollection
Dim Lista3 As New AutoCompleteStringCollection
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
TextBox2.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox2.AutoCompleteSource = AutoCompleteSource.CustomSource
TextBox3.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox3.AutoCompleteSource = AutoCompleteSource.CustomSource
For i As Integer = 0 To DataGridView1.Rows.Count - 1
Lista1.Add(DataGridView1.Rows(i).Cells(1).Value)
Lista2.Add(DataGridView1.Rows(i).Cells(2).Value)
If DataGridView1.Rows(i).Cells(1).Value = DataGridView1.Rows(i).Cells(2).Value Then
Lista3.Add(DataGridView1.Rows(i).Cells(1).Value)
End If
Next
TextBox1.AutoCompleteCustomSource = Lista1
TextBox2.AutoCompleteCustomSource = Lista2
TextBox3.AutoCompleteCustomSource = Lista3
End Sub
End ClassFeito e testado ;) espero que ajude
AleSaggiorato
Conferir o teu código e vi que faltava algo na minha pergunta mais vc me ajudou muito.
Confira abaixa o que o teu código revisado faz...
Rem ele faz a comparação, e se for verdadeiro, pega o texto da "cell da coluna3 " e mostra na textbox3.text
REM solsolvi assim...
For i = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows(i).Cells(1).Value = TextBox1.Text And DataGrid1.Rows(i).Cells(2).Value = TextBox2.Text Then
TextBox3.Text = DataGridView1.Rows(i).Cells(3).Value
End If
Next -
Continuo com o mesmo proble.
O código que postei ai eu testei num datagrid que criei e preenchi no form mesmo, dai a pesquisa funciona...mais quando preencho o datagrid com dados do banco.mdb não funciona, da erro.
Alguem ai pode me ajudar em...porque que não estou conseguindo pesquisar em tres colunas do grid, e comparar as tres celunas se o conteúdo é igual quando o datagrid é preenchido com dados do banco.mdb.
Já fiz um monte de reviravolta aqui e não consegui...
- Editado AAB D terça-feira, 15 de janeiro de 2013 21:03
-
Já consegui fzr a pesquisa, só tive que mudar algumas coisas no código...confiram...
For i = 0 To DataGrid1.Rows.Count - 1
If DataGrid1.Rows(i).Cells(1).Value = textbox1.Text.ToString And _
DataGrid1.Rows(i).Cells(2).Value = textbox2.Text.ToString And _
DataGrid1.Rows(i).Cells(3).Value = textbox3.Text.ToString ThenMe.DataGrid1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
textbox4.Text = DataGrid1.Rows(i).Cells(5).Value
Me.DataGrid1.FirstDisplayedScrollingRowIndex = i
Me.DataGrid1.Rows(i).Selected = Truetextbox5.Text = DataGrid1.Rows(i).Cells(6).Value
textbox6.Text = DataGrid1.Rows(i).Cells(7).Value
textbox7.Text = DataGrid1.Rows(i).Cells(8).Value
Else
'textbox4.Text = "?"
'textbox5.Text = "?"
'textbox6.Text = "?"
'textbox7.Text = "?"
End If
Exit Sub
NextNão foi fácil mais consegui
Meu projeto só faltava isto, agora esta completinho...ABRAÇOS