Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

kazzx

Apresentar N rows num datagridview, após pesquisa na BD

Mensagens Recomendadas

kazzx

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 ..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

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*'"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
José Lopes

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á!!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kazzx

o que eu queria era que aparecessem tantas rows quantos registos existentes de qualquer nome ou letra pesquisada? faço-me entender?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
José Lopes

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á!!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kazzx

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.