none
Como criar uma verificação de Duplicidade dentro de um datagridview vb.net RRS feed

  • Pergunta

  • Boa Tarde Amigos! Como vão?

    Estou em dúvidas em como desenvolver uma verificação de duplicidade de valores dentro de um Datagridview.

    A lógica que estou seguindo é assim:

    Um programa de cadastro de produtos, ela possui uma Ordem de Serviço e um Part number da peça.

    Eu insiro todos os dados dentro de um DataGridView apenas para visualização com o seguinte código:

    #Region "Resumo de Controle"
    Public Sub CarregaGrid()
    
       DataGridView1.ColumnCount = 3
    
       DataGridView1.Columns(0).Name = "Data"
       DataGridView1.Columns(1).Name = "OS"
       DataGridView1.Columns(2).Name = "Produto"
    
    
    End Sub
    
    
    Public Sub AddProduto()
       
       Dim vData As String = Date.Today
       Dim vOS As String = txtOs.Text
       Dim vProduto As String = txtProduto.Text
    
       DataGridView1.Rows.Add(Data, OS, Produto)
       
    
    End Sub
    End Region

    Enquanto eu insiro os produtos, por acidente eu acabei registrando o mesmo produto, então o mesmo registro seria inserido no DataGridView, eu gostaria de uma ajuda no código para fazer uma condicional onde o valor de OS e Produto não poderão ser inseridos se os mesmos estiverem dentro do DataGridView e que apareça uma MsgBox("Item já existente").

    Após fazer a verificação e o mesmo for diferente do que está no DataGridView ele poderá ser inserido, caso ao contrário ele não seria inserido!

    E após esse processo eu consigo visualizar as informações antes de armazenada na base de dados.

    O programa inserir, edita e salva com sucesso, mas o meu maior conflito foi nessa parte de verificação de duplicidades.

    Muito Obrigado pela atenção amigos!


    sexta-feira, 8 de julho de 2016 16:39

Respostas

  • Boa tarde EmersonOliveira,

    Obrigado por sua participação no Fórum MSDN.

    Você pode tentar iterar pelas linhas da sua DataGridView e verificar a coluna por um valor igual e usar um boolean para verdadeiro se encontrar:

    Dim exists As Boolean = False 
    
        For Each itm As DataGridViewRow In suaGridView.Rows  
    
            If itm.Cells(0).Value = fieldContect.Text Then 
    
                exists = True 
    
            End If 
    
        Next 
    
        If Me.dgAppraisal.Rows.Count > 0 AndAlso exists = True Then 
    

    Informe se conseguiu usar esse exemplo

    Robson William Silva

    Esse conteúdo é 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.

    • Marcado como Resposta EmersonOliveira segunda-feira, 11 de julho de 2016 19:32
    sexta-feira, 8 de julho de 2016 20:11
    Moderador
  • Eu fiz assim amigo:

      Dim exist As Boolean = False
    
            For Each items As DataGridViewRow In DataGridView1.Rows
    
                If items.Cells(2).Value = txt_part.Text Then
    
                    exist = True
                    MsgBox("Item incluido")
                End If
            Next
            If DataGridView1.Rows.Count > 0 AndAlso exist = True Then
                incluir()
            End If
    

    Só que ele não inclui e nem verificar se contém valores iguais, o que eu tenho que fazer é melhorar a lógica, inserir os dados sem salvar e fazer a leitura do datagrid, se conter aquela informação igual a linha não salva! Só preciso saber como vou elaborar isso! Mas de qualquer forma eu agradeço muito, ajudou bastante! Se tiver uma outra ideia vou deixar a questão em aberto!

    Forte Abraço!

    segunda-feira, 11 de julho de 2016 16:23
  • Eu fiz assim amigo:

      Dim exist As Boolean = False
    
            For Each items As DataGridViewRow In DataGridView1.Rows
    
                If items.Cells(2).Value = txt_part.Text Then
    
                    exist = True
                    MsgBox("Item incluido")
                End If
            Next
            If DataGridView1.Rows.Count > 0 AndAlso exist = True Then
                incluir()
            End If

    Só que ele não inclui e nem verificar se contém valores iguais, o que eu tenho que fazer é melhorar a lógica, inserir os dados sem salvar e fazer a leitura do datagrid, se conter aquela informação igual a linha não salva! Só preciso saber como vou elaborar isso! Mas de qualquer forma eu agradeço muito, ajudou bastante! Se tiver uma outra ideia vou deixar a questão em aberto!

    Forte Abraço!

    Consegui resolver! Obrigadoo!!

    Vou por o código que talvez possa ajudar mais gente!

      Dim exist As Boolean = False
    
            For Each items As DataGridViewRow In DataGridView1.Rows
    
                If items.Cells(2).Value = txt_part.Text Then
    
                    exist = True
                    
                End If
            Next
         if exist = True Then
           MsgBox("Item já existente")
    
         ElseIf exist = FalseThen
           notebook.inclueLista()
         End If

    quinta-feira, 28 de julho de 2016 13:46

Todas as Respostas

  • Boa tarde EmersonOliveira,

    Obrigado por sua participação no Fórum MSDN.

    Você pode tentar iterar pelas linhas da sua DataGridView e verificar a coluna por um valor igual e usar um boolean para verdadeiro se encontrar:

    Dim exists As Boolean = False 
    
        For Each itm As DataGridViewRow In suaGridView.Rows  
    
            If itm.Cells(0).Value = fieldContect.Text Then 
    
                exists = True 
    
            End If 
    
        Next 
    
        If Me.dgAppraisal.Rows.Count > 0 AndAlso exists = True Then 
    

    Informe se conseguiu usar esse exemplo

    Robson William Silva

    Esse conteúdo é 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.

    • Marcado como Resposta EmersonOliveira segunda-feira, 11 de julho de 2016 19:32
    sexta-feira, 8 de julho de 2016 20:11
    Moderador
  • Eu fiz assim amigo:

      Dim exist As Boolean = False
    
            For Each items As DataGridViewRow In DataGridView1.Rows
    
                If items.Cells(2).Value = txt_part.Text Then
    
                    exist = True
                    MsgBox("Item incluido")
                End If
            Next
            If DataGridView1.Rows.Count > 0 AndAlso exist = True Then
                incluir()
            End If
    

    Só que ele não inclui e nem verificar se contém valores iguais, o que eu tenho que fazer é melhorar a lógica, inserir os dados sem salvar e fazer a leitura do datagrid, se conter aquela informação igual a linha não salva! Só preciso saber como vou elaborar isso! Mas de qualquer forma eu agradeço muito, ajudou bastante! Se tiver uma outra ideia vou deixar a questão em aberto!

    Forte Abraço!

    segunda-feira, 11 de julho de 2016 16:23
  • Eu fiz assim amigo:

      Dim exist As Boolean = False
    
            For Each items As DataGridViewRow In DataGridView1.Rows
    
                If items.Cells(2).Value = txt_part.Text Then
    
                    exist = True
                    MsgBox("Item incluido")
                End If
            Next
            If DataGridView1.Rows.Count > 0 AndAlso exist = True Then
                incluir()
            End If

    Só que ele não inclui e nem verificar se contém valores iguais, o que eu tenho que fazer é melhorar a lógica, inserir os dados sem salvar e fazer a leitura do datagrid, se conter aquela informação igual a linha não salva! Só preciso saber como vou elaborar isso! Mas de qualquer forma eu agradeço muito, ajudou bastante! Se tiver uma outra ideia vou deixar a questão em aberto!

    Forte Abraço!

    Consegui resolver! Obrigadoo!!

    Vou por o código que talvez possa ajudar mais gente!

      Dim exist As Boolean = False
    
            For Each items As DataGridViewRow In DataGridView1.Rows
    
                If items.Cells(2).Value = txt_part.Text Then
    
                    exist = True
                    
                End If
            Next
         if exist = True Then
           MsgBox("Item já existente")
    
         ElseIf exist = FalseThen
           notebook.inclueLista()
         End If

    quinta-feira, 28 de julho de 2016 13:46