vb.net - проверьте, есть ли дублирующие данные в Datagridview - PullRequest
0 голосов
/ 10 мая 2018

Как проверить, есть ли дубликаты в datagridview?

У меня есть этот код:

For x As Integer = 0 To DataGridView1.Rows.Count - 1
    For y As Integer = x + 1 To DataGridView1.Rows.Count - 1
        If DataGridView1.Rows(x).Cells(0).Value.ToString = DataGridView1.Rows(y).Cells(0).Value.ToString Then
            MsgBox("Duplicate Data!")
            Exit Sub
        Else
            save_data()
            Me.Close()
        End If
    Next
Next

приведенный выше код в порядке, если повторяющиеся данные следуют друг за другом следующим образом:

Column1 (cell 0)  |  Column2 (cell 1)
------------------|------------------
TEST              |  NAME
TEST              |  NAME2

и «Дублирующиеся данные!» Появляется окно сообщения.

Но если дублирующиеся данные не следуют друг за другом, они переходят в оператор else, где они будут сохранены. Как это:

Column1 (cell 0)  |  Column2 (cell 1)
------------------|------------------
TEST              |  NAME
TEST2             |  NAME3
TEST              |  NAME2

и данные будут сохранены. как показано в операторе else.

Что мне делать, чтобы, даже если дублирующиеся данные не следовали друг за другом, MsgBox("Duplicate Data!") все еще появлялся?

1 Ответ

0 голосов
/ 10 мая 2018

Во втором цикле For Loop вы должны проверять ВСЕ строки, кроме индекса, с которым вы работаете в первом цикле, а не index + 1. Также, как уже упоминалось, очистите этот оператор else, поскольку он предотвратит появление всей сетки. проверено. Вызовите Save_Data в конце цикла, если дубликаты не найдены. Используйте логическое значение для отслеживания.

Dim bolDuplicateWasFound As Boolean = False

For x As Integer = 0 To DataGridView1.Rows.Count - 1
    For y As Integer = 0 To DataGridView1.Rows.Count - 1
        If y <> x AndAlso DataGridView1.Rows(x).Cells(0).Value.ToString = DataGridView1.Rows(y).Cells(0).Value.ToString Then
            bolDuplicateWasFound = True
            MsgBox("Duplicate Data!")
            Exit Sub
        End If
    Next
Next

If Not bolDuplicateWasFound Then
    Save_Data()
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...