none
Quero povoar listview usando DataReader e quando uso tanto while como do while aparece com um registo a menos do que tem na base de dado access. Porque isto acontece? Obrigado RRS feed

  • Pergunta

  • Public Sub Tipo(ByVal listView1 As ListView)
            Dim comando As New OleDbCommand
            comando.CommandText = "SELECT * FROM TipoDeTeste ORDER BY IDTipo asc"
            comando.CommandType = CommandType.Text
            comando.Connection = cnGIA
            Dim leitor As OleDbDataReader

            leitor = comando.ExecuteReader()
            leitor.Read()

            listView1.Items.Clear() 'Limpa registos anteriores

            Do While leitor.Read
                Dim lst As New ListViewItem
                lst = listView1.Items.Add(leitor(0))
                lst.SubItems.Add(leitor(1).ToString)
            Loop


            leitor.Close()
        End Sub
    segunda-feira, 31 de março de 2014 13:14

Todas as Respostas

  • Public Sub Tipo(ByVal listView1 As ListView)
            Dim comando As New OleDbCommand
            comando.CommandText = "SELECT * FROM TipoDeTeste ORDER BY IDTipo asc"
            comando.CommandType = CommandType.Text
            comando.Connection = cnGIA
            Dim leitor As OleDbDataReader
    
            leitor = comando.ExecuteReader()
            //leitor.Read()/*foi retirado essa linha e teste*/
    
            listView1.Items.Clear() 'Limpa registos anteriores
    
            Do While leitor.Read
                Dim lst As New ListViewItem
                lst = listView1.Items.Add(leitor(0))
                lst.SubItems.Add(leitor(1).ToString)
            Loop
    
    
            leitor.Close()
        End Sub
    execute retirando aquela linha que eu marquei // /*foi retirado essa linha e teste*/

    Fulvio Cezar Canducci Dias

    segunda-feira, 31 de março de 2014 13:18
  • Public Sub Tipo(ByVal listView1 As ListView)
            Dim comando As New OleDbCommand
            comando.CommandText = "SELECT * FROM TipoDeTeste ORDER BY IDTipo asc"
            comando.CommandType = CommandType.Text
            comando.Connection = cnGIA
            Dim leitor As OleDbDataReader
    
            leitor = comando.ExecuteReader()
            //leitor.Read()/*foi retirado essa linha e teste*/
    
            listView1.Items.Clear() 'Limpa registos anteriores
    
            Do While leitor.Read
                Dim lst As New ListViewItem
                lst = listView1.Items.Add(leitor(0))
                lst.SubItems.Add(leitor(1).ToString)
            Loop
    
    
            leitor.Close()
        End Sub
    execute retirando aquela linha que eu marquei // /*foi retirado essa linha e teste*/

    Fulvio Cezar Canducci Dias

    Só para acrescentar detalhes na resposta do Flúvio: o problema é que você usa o .Read antes do loop. O Reader lê a primeira linha e passa para a próxima. Então você está sempre ignorando a primeira linha. Por isso retirar o código que o Flúvio comentou


    Priscila Mayumi Sato - MayogaX

    • Sugerido como Resposta Daniel Brito br segunda-feira, 31 de março de 2014 13:29
    segunda-feira, 31 de março de 2014 13:26