รายละเอียดของการตอบ ::
เอาอย่างนี้นะครับ ผมต้องการให้นับชั่วโมงOT ในคอลั่ม OT เฉพาะวันที่เกิน 15 นาทีขึ้นไป ให้นับเป็น OT 1 วัน ส่วนเวลารวม OT ให้นับเฉพาะ ชั่วโมงกับนาที โดยตัด วินาทีออกเลยก็ได้ครับ แล้วรวมชั่วโมงกับนาทีไว้ใน Textbox รวมชั่วโมงโอที ถ้าดูจากคอลั่มโอทีจะเห็นว่าถ้ารวมออกมาแล้วจะต้องได้ 5:32 น แต่โปรแกรมคิดออกมาเป็น 06:33 ซึ่งมันผิดอ่ะครับ ช่วยดูรบกวนดูให้ผมอีกทีครับ หรือให้ผมแก้ไขตรงไหน หรือขอโค๊ดใหม่ได้มั้ย รบกวนหน่อยครับ
อันนี้โค๊ดที่ผมเขียนไว้ตอนแรกครับ
Dim myCompareTime As DateTime = DateTime.Parse("00:15:00")
Dim iCount As Integer = 0
Dim stringTotalTime As String = String.Empty
Dim myDgvTime As TimeSpan = New TimeSpan(0, 0, 0)
Dim stringDetail As String = String.Empty
Dim stringOt As String = String.Empty
Dim allItemCount As Integer = 0
For iRow As Integer = 0 To dgvTimework.Rows.Count - 1
If Not IsDBNull(dgvTimework.Rows(iRow).Cells("ot").Value) And Not IsDBNull(dgvTimework.Rows(iRow).Cells("ot").Value) Then
allItemCount += 1
Dim dgvTimeString = CType(dgvTimework.Rows(iRow).Cells("ot").Value, String)
stringDetail &= CType(dgvTimework.Rows(iRow).Cells("ot").Value, String) & vbNewLine
Dim dgvTime As DateTime
If DateTime.TryParse(dgvTimeString, dgvTime) Then
If dgvTime > myCompareTime Then
stringOt &= dgvTimeString & vbNewLine
Dim eachRow As TimeSpan = New TimeSpan(Hour(dgvTime), Minute(dgvTime), Second(dgvTime))
myDgvTime += eachRow
iCount += 1
End If
Else
MsgBox("Error: Unable to parse " & dgvTimeString)
End If
End If
Next iRow
Dim iHour_OT As Integer = myDgvTime.TotalHours 'เก็บจำนวนชั่วโมง (ผมว่าน่าจะผิดตรงนี้หรือป่าว)
Dim iMinute_OT As Integer = myDgvTime.Minutes 'เก็บจำนวนนาที
txtOt.Text = iHour_OT.ToString("00") + ":" + iMinute_OT.ToString("00")
txtCountot.Text = iCount
End Sub