Vb.net 如何从多个DataGridView中减去并比较值?

Vb.net 如何从多个DataGridView中减去并比较值?,vb.net,datagridview,Vb.net,Datagridview,比较2个DataGridView的值,这些值将是datetime 第一步 我使用if语句来匹配columnID和columndaterange中的值,如果正确,我将把它们传递给一个新列。[我得到了正确的结果] 但是什么时候 步骤2 我尝试添加更多条件来比较columnstime[我的预期结果都不正确否] 有人能帮我或分享我的意见吗 Dim storageEarlyin As String Dim storagelatein As String 'Dim storatimetemp As Date

比较2个DataGridView的值,这些值将是datetime

第一步

我使用if语句来匹配columnID和columndaterange中的值,如果正确,我将把它们传递给一个新列。[我得到了正确的结果]

但是什么时候

步骤2

我尝试添加更多条件来比较columnstime[我的预期结果都不正确否]

有人能帮我或分享我的意见吗

Dim storageEarlyin As String
Dim storagelatein As String
'Dim storatimetemp As DateTime = "12:00:00 PM"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim count As Integer = DataGridView1.Rows.Count

    For i = 0 To (count - 1)
        Dim clockeddate As String = Convert.ToDateTime(DataGridView1.Rows(i).Cells(1).Value).ToShortDateString
        Dim userid As String = DataGridView1.Rows(i).Cells(0).Value.ToString()
        Dim count2 As Integer = DataGridView2.Rows.Count
        Dim clockedtime As String = Convert.ToDateTime(DataGridView1.Rows(i).Cells(1).Value).ToShortTimeString

        For i2 = 0 To (count2 - 1)

            Dim daterange As String = Convert.ToDateTime(DataGridView2.Rows(i2).Cells(1).Value).ToShortDateString
            Dim userid2 As String = DataGridView2.Rows(i2).Cells(0).Value.ToString()
            Dim workstart As String = Convert.ToDateTime(DataGridView2.Rows(i2).Cells(5).Value).ToShortTimeString
            Dim ClockAvailableStart As String = Convert.ToDateTime(DataGridView2.Rows(i2).Cells(3).Value).ToShortTimeString
            Dim workend As String = Convert.ToDateTime(DataGridView2.Rows(i2).Cells(6).Value).ToShortTimeString

            If userid = userid2 And clockeddate = daterange Then
                If clockedtime <= workstart And clockedtime >= ClockAvailableStart Then
                    storageEarlyin = DataGridView1.Rows(i).Cells(1).Value.ToShortTimeString
                    Me.DataGridView2.Rows(i2).Cells(7).Value = storageEarlyin
                Else
                    storageEarlyin = "No-in"
                    Me.DataGridView2.Rows(i2).Cells(7).Value = storageEarlyin
                End If

                If clockedtime > workstart And clockedtime < workend Then
                    storagelatein = DataGridView1.Rows(i).Cells(1).Value.ToShortTimeString
                    Me.DataGridView2.Rows(i2).Cells(8).Value = storagelatein
                Else
                    storagelatein = "No-in"
                    Me.DataGridView2.Rows(i2).Cells(8).Value = storagelatein
                End If
            End If
        Next
    Next
End Sub

如果创建变量clockedtime,则workstart ClockAvailableStart为字符串类型,因此如果条件clockedtime=ClockAvailableStart工作不正常,则更改数据类型为datetime

 Dim clockedtime As DateTime= 
 Convert.ToDateTime(DataGridView1.Rows(i).Cells(1).Value).ToShortTimeString

 Dim workstart As DateTime= 
 Convert.ToDateTime(DataGridView2.Rows(i2).Cells(5).Value).ToShortTimeString

 Dim ClockAvailableStart As DateTime= 
 Convert.ToDateTime(DataGridView2.Rows(i2).Cells(3).Value).ToShortTimeString

之后它工作正常

显示样本输入和输出?我对我的问题做了一些编辑,先生,我现在就试试!正如你发布的更正,我已经试过了,看起来基本上是正确的!但我必须包括所有的时间范围,只知道准确的结果正确与否!!无论如何,thx优先!!SATSONall所有的时间范围只意味着我不能清楚地理解。更改数据类型后它不工作啊?只是工作找到thx人!时间框架意味着我仍然有休息时间、工作结束时间、早退时间、晚退时间和时钟结束时间。