Usuário com melhor resposta
Duvidas com DataGridView

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?
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
-
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
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
-
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/
-
Bom dia Don Medina,
Tudo bem?
O ideal é que você já poste aqui a solução que encontrou para contribuir com a comunidade.
Obrigado.
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.
-
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