kazzx Posted January 9, 2010 at 02:12 AM Report Share #304941 Posted January 9, 2010 at 02:12 AM viva pessoal, tenho um datagridview com 3 colunas [nome] [morada] e [localidade]. em cada uma destas colunas é apresentada a respectiva informação, após uma pesquisa na BD. o meu problema é que quando faço uma pesquisa, e vamos imaginar que na BD eu tinha 10 nomes iniciados por "M" e faço uma pesquisa pela letra "M" e no datagridview só me é apresentado o ultimo registo, portanto o ultimo nome com respectiva morada e localidade. quando eu queria que aparecesse todos os nomes com letra "M". penso que o erro esteja aqui: While leitor.Read() Dim i As Integer For i = 0 To leitor.FieldCount dgv1.Rows(0).Cells(0).Value = leitor("nome") dgv1.Rows(0).Cells(1).Value = leitor("morada") dgv1.Rows(0).Cells(2).Value = leitor("localidade") btnverifica.Enabled = False txtverifica.Text = Nothing txtverifica.Focus() btncriarregisto.Enabled = False btnlimpapes.Enabled = True Next End While provavelmente estou a dizer para todas as pesquisas aparecerem na row 0, mas não sei alterar para aparecerem tantas rows quantos registos encontrados ? ou provavelmente será outra coisa .. Link to comment Share on other sites More sharing options...
jpaulino Posted January 9, 2010 at 09:31 AM Report Share #304946 Posted January 9, 2010 at 09:31 AM Eu não entendo muito bem o que é isso .... tens duas maneiras de fazer o que queres: 1 - Filtras os dados no SQL statement à db: "SELECT * FROM myTable WHERE nome='M*'" 2 - Crias um DataView com a informação da DataGridView e filtras os dados (sem ir novamente à bd): Dim view As DataView = DirectCast(Me.DataGridView.DataSource, DataView) view.RowFilter = "nome= 'M*'" Link to comment Share on other sites More sharing options...
José Lopes Posted January 9, 2010 at 04:29 PM Report Share #305011 Posted January 9, 2010 at 04:29 PM pelo menos tens um erro aqui: For i = 0 To leitor.FieldCount deveria ser: For i = 0 To leitor.FieldCount - 1 Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!! Link to comment Share on other sites More sharing options...
kazzx Posted January 9, 2010 at 08:21 PM Author Report Share #305052 Posted January 9, 2010 at 08:21 PM o que eu queria era que aparecessem tantas rows quantos registos existentes de qualquer nome ou letra pesquisada? faço-me entender? Link to comment Share on other sites More sharing options...
José Lopes Posted January 9, 2010 at 09:56 PM Report Share #305066 Posted January 9, 2010 at 09:56 PM mas assim tu estas a percorrer um ciclo com as colunas... vai dar erro... o melhor é utilizares um reader e fazeres qq coisa do género: while reader.read() 'codigo para fazeres o que queres wnd while Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!! Link to comment Share on other sites More sharing options...
kazzx Posted January 9, 2010 at 11:17 PM Author Report Share #305095 Posted January 9, 2010 at 11:17 PM não sei se percebi muito bem o que disseste. tipo isto? Dim leitor As OleDbDataReader = cmd.ExecuteReader() Try While leitor.Read() 'Dim i As Integer 'For i = 0 To leitor.FieldCount - 1 dgv1.Rows(0).Cells(0).Value = leitor("nome") dgv1.Rows(0).Cells(1).Value = leitor("morada") dgv1.Rows(0).Cells(2).Value = leitor("localidade") btnverifica.Enabled = False txtverifica.Text = Nothing txtverifica.Focus() btncriarregisto.Enabled = False btnlimpapes.Enabled = True 'Next End While :X Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now