none
DataGrid adicionar itens se não existe RRS feed

  • Pergunta

  • Olá

    Eu faço uma busca em um datagrid, se encontra o item apenas altera a quantidade, mas se não encontra adiciona.

     

    For i As Integer = 0 To dgvProdutos.Rows.Count - 1

    For i2 As Integer = 0 To dgvItens.Rows.Count - 1 If dgvItens.Rows(i2).Cells(6).Value = dgvItens.Rows(i).Cells(1).Value Then existe += 1 dgvItens.Rows(i2).Cells(3).Value() = dgvItens.Rows(i2).Cells(3).Value() + Qtd End If Next If existe = 0 Then dgvItens.Rows.Add(ID, Item, UND, etc, etc)

    End If

    Next

    Só que não ta funcionando corretamente, se ele encontra um item igual entao modifica normalmente a linha existente, e define "existe" como maior que 1.

    Mas então o "For i2" continua comparando os itens e mesmo que não encontre mais nenhum item já existente ele não adiciona pois o "existe" já foi marcado como maior que 1.

    Não consigo achar uma solução lógica ;/

    Quem puder me ajudar, desde já agradeço.

    quinta-feira, 12 de janeiro de 2017 18:16

Respostas

  • Olá Eliseu5

    Vamos ver se entendi direito o que você precisa, supondo que ele tenha feito o primeiro LOOP e existir o item, o processo de LOOP já pode ser parado certo? Sendo assim não será inserido um novo registro.

    Se ele fizer todo o LOOP e não encontrar nada o existe == 0, então será adicionado o novo item.

    Se for isso só falta você colocar um BREAK dentro do seu FOR i2.


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    • Marcado como Resposta Eliseu5 domingo, 15 de janeiro de 2017 20:46
    sexta-feira, 13 de janeiro de 2017 09:38

Todas as Respostas

  • Olá Eliseu5

    Vamos ver se entendi direito o que você precisa, supondo que ele tenha feito o primeiro LOOP e existir o item, o processo de LOOP já pode ser parado certo? Sendo assim não será inserido um novo registro.

    Se ele fizer todo o LOOP e não encontrar nada o existe == 0, então será adicionado o novo item.

    Se for isso só falta você colocar um BREAK dentro do seu FOR i2.


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    • Marcado como Resposta Eliseu5 domingo, 15 de janeiro de 2017 20:46
    sexta-feira, 13 de janeiro de 2017 09:38
  • Olá Daniel

    Adicionei dentro de um "Try", não sei se seria o modo correto, mas parece funcionar:

     Try
                                        For i2 As Integer = 0 To dgvItens.Rows.Count - 1
                                            If dgvItens.Rows(i2).Cells(6).Value = ItemID Then '3 = indice da coluna
                                                dgvItens.Rows(i2).Cells(3).Value() = Val(dgvItens.Rows(i2).Cells(3).Value().ToString.Replace(".", ",")) + (QTD * dgvProdutos.Rows(i).Cells(3).Value().ToString.Replace(".", ","))
                                                dgvItens.Rows(i2).Cells(5).Value() = FormatNumber((dgvItens.Rows(i2).Cells(3).Value().ToString.Replace(".", ",") + (QTD * dgvProdutos.Rows(i).Cells(3).Value().ToString.Replace(".", ","))) * UNTRS, 2)
                                                Exit Try
                                            End If
                                        Next
                                        dgvItens.Rows.Add(ID, Item, UND, QTD * dgvProdutos.Rows(i).Cells(3).Value().ToString.Replace(".", ","),
                                                          FormatNumber(UNTRS, 2),
                                                          FormatNumber(UNTRS * (QTD * dgvProdutos.Rows(i).Cells(3).Value().ToString.Replace(".", ",")), 2),
                                                          ItemID)
                                    Catch ex As Exception
                                    End Try

    Agradeço muito, obrigado! :)


    • Editado Eliseu5 domingo, 15 de janeiro de 2017 20:45
    domingo, 15 de janeiro de 2017 20:38
  • Olá Eliseu5

    Estamos aqui para ajudar!

    Qualquer dúvida estou a disposição!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    segunda-feira, 16 de janeiro de 2017 10:04