#vb.net #datagridview
#vb.net #datagridview
Вопрос:
сравните значения 2 datagridviews, и значения будут datetime.
ШАГ 1
Я использовал оператор if для сопоставления значения в column(ID) и column (daterange), если оно правильное, я перенесу их в новый столбец. [Я получаю правильный результат]
но когда
ШАГ 2
Я пытаюсь добавить дополнительные условия для сравнения столбцов (время) [все мои ожидаемые результаты неверны («Нет ввода»)]
Кто-нибудь может мне помочь или поделиться мнением по этому поводу?
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
Комментарии:
1. показать пример ввода и вывода?
Ответ №1:
Вы создаете переменную clockedtime ,workstart ClockAvailableStar
t string
типа, поэтому условие if ( clockedtime <= workstart And 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
После этого он работает правильно
Комментарии:
1. я должен немного отредактировать свой вопрос, спасибо, сэр, я попробую это сейчас!
2. В качестве исправления, которое вы опубликовали, я попытался посмотреть, в основном, правильно! но я должен включать все временные рамки, только точно знать правильные результаты или нет!! в любом случае, сначала спасибо!! SATSON
3.
all the time frame only
означает, что я не могу четко понять. после изменения типа данных он не работает, а?4. просто работает, найди человека! временные рамки означают, что у меня все еще есть время (ы) отдыха, окончания работы, раннего завершения, задержки и окончания времени.