none
Duvidas com DataGridView RRS feed

  • Pergunta

  • Caros amigos Dev's,

    Tenho em minha aplicação o seguinte form:

    No primeiro datagrid eu carrego uma lista de números controlados onde eu preciso localizar pagamentos de cada código.

    Essa carga é feita através do botão Efetuar Carga, que importa de uma planilha que chega até mim via excel.

    Até ai não tenho problemas.

    Porém cada quando clicar no botão Teste, pra cada linha inserida na carga ele faz um select no banco, na planilha onde tenho as informações de pagamento referente a este código.

    Até o primeiro SELECT não há problema, consigo exibir no segundo data grid. O problema é no segundo item da carga, pois ao dar um novo select não estou conseguindo adicionar esta linha no datagrid, ou seja se tenho 10 códigos carregados, eu preciso inserir no outro data grid a informação de cada um desses itens, para que eu possa gerar posteriormente uma planilha em excel de retorno dessa busca.

    Alguém poderia me ajudar?

    quinta-feira, 18 de fevereiro de 2016 03:52

Respostas

  • Bom dia,

    Como solicitado pelo Marcos, que o ideal seria já postar a solução encontrada, segue o codigo inserido dentro do botão teste:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnResultado.Click
            Dim a, b, c, d, e, f, g, h, i As String 'strings que recebem cada celula do dgv1
    
            For Each row As DataGridViewRow In dgv1.Rows
    
                Dim codigo As String = row.Cells(0).Value.ToString()
    
                Dim sqlResultado As String = "select a, b, c, d, e, f, g, h, i FROM rel_apca_unificada where a='" & codigo & "'"
                Dim cmdResultado As New SqlCommand
                Dim drResultado As SqlDataReader
    
                cmdResultado.CommandText = sqlResultado
                cmdResultado.Connection = cnxfrmConsultaLote
                drResultado = cmdResultado.ExecuteReader
    
                If (drResultado.HasRows) Then
                    While drResultado.Read()
                        If IsDBNull(drResultado("a")) Then
                            a = ""
                        Else
                            a = drResultado("a")
                        End If
    
                        If IsDBNull(drResultado("b")) Then
                            b = ""
                        Else
                            b = drResultado("b")
                        End If
    
                        If IsDBNull(drResultado("c")) Then
                            c = ""
                        Else
                            c = drResultado("c")
                        End If
    
                        If IsDBNull(drResultado("d")) Then
                            d = ""
                        Else
                            d = drResultado("d")
                        End If
    
                        If IsDBNull(drResultado("e")) Then
                            e = ""
                        Else
                            e = drResultado("e")
                        End If
    
                        If IsDBNull(drResultado("f")) Then
                            f = ""
                        Else
                            f = drResultado("f")
                        End If
    
                        If IsDBNull(drResultado("g")) Then
                            g = ""
                        Else
                            g = drResultado("g")
                        End If
    
                        If IsDBNull(drResultado("h")) Then
                            h = ""
                        Else
                            h = drResultado("h")
                        End If
    
                        If IsDBNull(drResultado("i")) Then
                            i = ""
                        Else
                            i = drResultado("i")
                        End If
    
                        dgvResultado.Rows.Add(a, b, c, d, e, f, g, h, i)
                    End While
                    drResultado.Close()
                Else
                    dgvResultado.Rows.Add(a, "", "", "", "", "", "", "NÃO LOCALIZADO APURAÇÃO EM NENHUMA REL")
                    drResultado.Close()
                End If
    
            Next
        End Sub

    Essa foi a solução encontrada, porem tive que acresentar um check para ver se o campo é nulo no banco e caso positivo ele fica vazio, pois datagrid não estava add valores nulos.

    • Marcado como Resposta Marcos SJ quinta-feira, 18 de fevereiro de 2016 15:24
    quinta-feira, 18 de fevereiro de 2016 12:53
  • Bom dia amigos,

    Não satisfeito, fiquei quebrando a cabeça até conseguir fazer e consegui, então agradeço desde já aos que leram e pensaram em como resolver meu problema.

    Caso alguém queira a solução (código) só me falar que posto aqui com prazer.

    Obrigado.

    • Marcado como Resposta Marcos SJ quinta-feira, 18 de fevereiro de 2016 11:59
    quinta-feira, 18 de fevereiro de 2016 05:31

Todas as Respostas

  • Bom dia amigos,

    Não satisfeito, fiquei quebrando a cabeça até conseguir fazer e consegui, então agradeço desde já aos que leram e pensaram em como resolver meu problema.

    Caso alguém queira a solução (código) só me falar que posto aqui com prazer.

    Obrigado.

    • Marcado como Resposta Marcos SJ quinta-feira, 18 de fevereiro de 2016 11:59
    quinta-feira, 18 de fevereiro de 2016 05:31
  • Bom dia,

    O que deve estar acontecendo é que você está associando apenas o resultado da pesquisa na fonte de dados (datasource) do seu DataGridView. Quando se faz isso, o conteúdo anterior é substituído pelo conteúdo novo.

    A solução é você inserir o resultado de cada pesquisa em uma lista, acrescentando os resultados através do método ADD e com isso, sempre que colocar a lista como fonte de dados do DataGridView será exibido todos os resultados.

    List<ObjetoReferenciado> novaLista = List<ObjetoReferenciado>();
    
    ObjetoReferenciado novoObjeto = new ObjetoReferenciado();
    
    /* PESQUISA OS REGISTROS E ASSOCIA NA INSTÂNCIA DO OBJETO ACIMA */
    
    novaLista.Add(novoObjeto);

    Abs.

    Bruno Destro


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/

    quinta-feira, 18 de fevereiro de 2016 10:03
  • Bom dia Don Medina,

    Tudo bem?

    O ideal é que você já poste aqui a solução que encontrou para contribuir com a comunidade.

    Obrigado.

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 18 de fevereiro de 2016 11:59
  • Bom dia,

    Como solicitado pelo Marcos, que o ideal seria já postar a solução encontrada, segue o codigo inserido dentro do botão teste:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnResultado.Click
            Dim a, b, c, d, e, f, g, h, i As String 'strings que recebem cada celula do dgv1
    
            For Each row As DataGridViewRow In dgv1.Rows
    
                Dim codigo As String = row.Cells(0).Value.ToString()
    
                Dim sqlResultado As String = "select a, b, c, d, e, f, g, h, i FROM rel_apca_unificada where a='" & codigo & "'"
                Dim cmdResultado As New SqlCommand
                Dim drResultado As SqlDataReader
    
                cmdResultado.CommandText = sqlResultado
                cmdResultado.Connection = cnxfrmConsultaLote
                drResultado = cmdResultado.ExecuteReader
    
                If (drResultado.HasRows) Then
                    While drResultado.Read()
                        If IsDBNull(drResultado("a")) Then
                            a = ""
                        Else
                            a = drResultado("a")
                        End If
    
                        If IsDBNull(drResultado("b")) Then
                            b = ""
                        Else
                            b = drResultado("b")
                        End If
    
                        If IsDBNull(drResultado("c")) Then
                            c = ""
                        Else
                            c = drResultado("c")
                        End If
    
                        If IsDBNull(drResultado("d")) Then
                            d = ""
                        Else
                            d = drResultado("d")
                        End If
    
                        If IsDBNull(drResultado("e")) Then
                            e = ""
                        Else
                            e = drResultado("e")
                        End If
    
                        If IsDBNull(drResultado("f")) Then
                            f = ""
                        Else
                            f = drResultado("f")
                        End If
    
                        If IsDBNull(drResultado("g")) Then
                            g = ""
                        Else
                            g = drResultado("g")
                        End If
    
                        If IsDBNull(drResultado("h")) Then
                            h = ""
                        Else
                            h = drResultado("h")
                        End If
    
                        If IsDBNull(drResultado("i")) Then
                            i = ""
                        Else
                            i = drResultado("i")
                        End If
    
                        dgvResultado.Rows.Add(a, b, c, d, e, f, g, h, i)
                    End While
                    drResultado.Close()
                Else
                    dgvResultado.Rows.Add(a, "", "", "", "", "", "", "NÃO LOCALIZADO APURAÇÃO EM NENHUMA REL")
                    drResultado.Close()
                End If
    
            Next
        End Sub

    Essa foi a solução encontrada, porem tive que acresentar um check para ver se o campo é nulo no banco e caso positivo ele fica vazio, pois datagrid não estava add valores nulos.

    • Marcado como Resposta Marcos SJ quinta-feira, 18 de fevereiro de 2016 15:24
    quinta-feira, 18 de fevereiro de 2016 12:53