Сравнение значения из ячейки в одном представлении данных с другим - PullRequest
0 голосов
/ 25 ноября 2018

Прежде всего, следующие мои коды:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    'Establish connection with sql server. Fill the data in data grid view (dgvData)

    For i As Integer = 2 To dgvData.Columns.Count() - 1

        dgvSettings.Rows.Add(dgvData.Columns(i).HeaderText, 0, 100, "High")

    Next

End Sub

Public Sub comparevalues()

    For z As Integer = 2 To dgvData.ColumnCount - 1

        If dgvData.Rows(0).Cells(z).Value.ToString() > dgvSettings.Rows(z - 2).Cells(2).Value.ToString() Then

            MsgBox("Value Exceed Maximum Limit")

            dgvAlert.Rows.Add(False, dgvData.Rows(0).Cells(1).Value.ToString(), dgvData.Columns(z).HeaderText.ToString(), dgvData.Rows(0).Cells(z).Value.ToString(), "Unacknowledged", dgvSettings.Rows(z - 2).Cells(3).Value.ToString())

        ElseIf dgvData.Rows(0).Cells(z).Value.ToString() < dgvSettings.Rows(z - 2).Cells(1).Value.ToString() Then

            MsgBox("Value Below Minimum Limit")

            dgvAlert.Rows.Add(False, dgvData.Rows(0).Cells(1).Value.ToString(), dgvData.Columns(z).HeaderText.ToString(), dgvData.Rows(0).Cells(z).Value.ToString(), "Unacknowledged", dgvSettings.Rows(z - 2).Cells(3).Value.ToString())

        Else
            'in range, do nothing
        End If
    Next

End Sub

это таблица dgvdata, она связана с моим сервером sql db

thisэто таблица dgvalert, все значения из последней строки в dgvdata, которая удовлетворяет условию, как в comparevalues ​​(), будут здесь сведены в таблицу.

это таблица dgvsettings, здесь установлены все предельные условия.

так вот, что я пытаюсь сделать, хотя некоторые из вас могут быть в состоянии интерпретировать из приведенного выше кода.После заполнения dgvData моей таблицей данных sql, я бы хотел сравнить значения в каждом столбце последней строки в соответствии с условием, заданным в подпункте comparevalues ​​().то есть.если значение в, скажем, столбце pH, превышает предельное значение, установленное в dgvSettings, тогда оно будет добавлено в таблицу dgvAlert.

, но проблема в том, что при запуске кода они находятся в диапазоненабор в dgvSettings все еще добавляется в dgvAlert.и большинство из них принимается за превышение предела, когда оно все еще должно находиться в пределе диапазона.Я ломал голову с последних нескольких дней, пытаясь понять это правильно.Ваша помощь очень ценится.Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Вы пишете неправильно.

Вы должны сначала преобразовать эти строки в фактические числа, если хотите их сравнить.

Public Sub comparevalues()
For z= 2 To dgvData.ColumnCount - 1
    Dim Cell1 as Double = CDbl(dgvData(z,0).Value.ToString)
    Dim Cell2 as Double = CDbl(dgvSettings(2,z-2).Value.ToString)
    Dim Cell3 as Double = CDbl(dgvSettings(1,z-2).Value.ToString)

    If Cell1  > Cell2 Then
        MsgBox("Value Exceed Maximum Limit")
        dgvAlert.Rows.Add(False, dgvData(1,0).Value.ToString, dgvData.Columns(z).HeaderText.ToString(), dgvData(z,0).Value.ToString, "Unacknowledged", dgvSettings(3,z-2).Value.ToString)
    ElseIf Cell1  < Cell3 Then
        MsgBox("Value Below Minimum Limit")
        dgvAlert.Rows.Add(False, dgvData(1,0).Value.ToString, dgvData.Columns(z).HeaderText.ToString(), dgvData(z,0).Value.ToString, "Unacknowledged", dgvSettings(3,z-2).Value.ToString)
    Else
        'in range, do nothing
    End If
Next
End Sub
0 голосов
/ 25 ноября 2018

Попробуйте следующее, чтобы понять, почему сравнение строк с <и> не работает для вашего случая.

Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim x As String = "7".ToString
        Dim y As String = "10".ToString
        If x > y Then
            MessageBox.Show("7 is greater than 10")
        ElseIf x < y Then
            MessageBox.Show("10 is greater than 7")
        End If
End Sub

Избавьтесь от .ToString

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...