Usuário com melhor resposta
Como criar uma verificação de Duplicidade dentro de um datagridview vb.net

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!
- Editado EmersonOliveira sexta-feira, 8 de julho de 2016 16:40
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 exemploRobson 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
-
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!
- Marcado como Resposta Robson William SilvaModerator quinta-feira, 14 de julho de 2016 14:08
-
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
- Marcado como Resposta Robson William SilvaModerator quinta-feira, 28 de julho de 2016 14:39
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 exemploRobson 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
-
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!
- Marcado como Resposta Robson William SilvaModerator quinta-feira, 14 de julho de 2016 14:08
-
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
- Marcado como Resposta Robson William SilvaModerator quinta-feira, 28 de julho de 2016 14:39