Как проверить непрерывное количество столбцов через datatable? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть таблица данных ниже, и я хотел проверить условие, если последние столбцы имеют общее число более 7, тогда функция будет что-то делать, но мое текущее решение может только посчитать число 1 в таблице данных, но не можетчтобы определить значение 1, последовательно от столбца 7 до столбца 14.

-------------------------------------------------------------------
Id  | 1  | 2  | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
-------------------------------------------------------------------
kek | 1  | 0  | 0 | 1 | 0 | 0 | 1 | 1 | 1 |  1 | 1  |  1 |  1 |  1 |

Решение

Sub CheckExtraday()
    Dim count1 As Integer = 0
    Dim sql As String = "Select * from LeaveSystem WHERE EmpID ='" + Session("empID") + "' and Year='" + Session("year") + "' and Month='" + Session("month") + "'"

    Dim dt As DataTable = getDTms(sql)
    For I As Integer = 0 To dt.Rows.Count - 1
        For k As Integer = 2 To dt.Columns.Count - 1
            If dt.Rows(I).Item(k).Equals("1") = True Then
                count1 = count1 + 1
            End If
        Next k
    Next I

    If count1 > 7 Then  'output  = 10
       'do something
    End If
End Sub

Редактировать:

последовательный счет от месяца 5 столбец 11 до месяца6 колонка 1-5

----------------------------------------------------------------------------
Id  | month | 1  | 2  | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
----------------------------------------------------------------------------
kek | 5     | 1  | 0  | 0 | 1 | 0 | 0 | 0 | 0 | 0 |  0 | 1  |  1 |  1 |  1 |
kek | 6     | 1  | 1  | 1 | 1 | 1 | 0 | 0 | 0 | 0 |  0 | 0  |  0 |  0 |  0 |

1 Ответ

0 голосов
/ 17 апреля 2019

Если я вас правильно понимаю, вы, похоже, пытаетесь получить количество последовательных ячеек, имеющих значение 1. Если это так, вы можете просто сбросить значение count1, если значение ячейки не равно 1:

If dt.Rows(I).Item(k).ToString() = "1" Then
    count1 += 1
Else
    count1 = 0
End If

Если вы хотите сохранить последние последовательные значения 1, даже если за ними следуют нули, вы можете сделать что-то вроде этого:

Dim latestConsecutiveCount As Integer
If dt.Rows(I).Item(k).ToString() = "1" Then
    count1 += 1
Else
    latestConsecutiveCount = count1
    count1 = 0
End If

If latestConsecutiveCount > someValue Then
    ' Do something
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...