Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > รบกวนสอบถามข้อมูลการรวมเวลาจาก Datagridview หน่อยครับ



 

รบกวนสอบถามข้อมูลการรวมเวลาจาก Datagridview หน่อยครับ

 



Topic : 133229



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์




ช่วยหน่อยครับ ผมรวมชั่วโมงโอทีจาก datagrid แล้วชั่วโมงไม่ถูกต้องครับ ใน datagrid ช่องโอที จะเห็นว่ามีโอทีอยู่ 5:48 แต่ใน textbox รวมชัวโมงโอทีทำมัยเป็น 6:48 ซึ่งมันเกินไป 1 ชัวโมงครับ ผมเขียนโค๊ดผิดตรงไหนครับ หรือต้องเพิ่มโค๊ดตรงไหนบ้าง ช่วยบอกหน่อยครับ ขอบอคุณคับ

1565

อันนี้โค๊ดทีเขียนไว้

Public Sub sumot()
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



Tag : .NET, Ms SQL Server 2008, VB.NET, C#, VS 2015 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2019-03-01 11:26:24 By : Tikzaa View : 1357 Reply : 15
 

 

No. 1



โพสกระทู้ ( 77 )
บทความ ( 0 )



สถานะออฟไลน์


ลองวิธีนีครับ แปลงเวลาเป็น นาทีก่อนครับ เช่นCode (VB.NET)
  Dim strTest() As String, dblMinutes As Double     
            strTest = Split(Run_Time.Text, ":")      
            dblMinutes = CDbl(strTest(0)) * 60 + CDbl(strTest(1)) + CDbl(strTest(2)) / 60
          


เอา นาที มารวมกัน
แล้วค่อยแปลงกับไป็น เวลาปกติ








ประวัติการแก้ไข
2019-03-01 14:44:06
2019-03-01 14:44:16
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-01 14:43:18 By : nutpopo
 


 

No. 2



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : nutpopo เมื่อวันที่ 2019-03-01 14:43:18
รายละเอียดของการตอบ ::
เอาเพิ่มตรงส่วนไหนครับ รบกวนหน่อยครับ ขอบคุณครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-01 15:26:28 By : Tikzaa
 

 

No. 3



โพสกระทู้ ( 77 )
บทความ ( 0 )



สถานะออฟไลน์


Code (VB.NET)
 For k As Integer = 0 To  DataGridView1.Rows.Count - 1
       Dim TIME1() As String, TIME2 As Double
             TIME1 = Split(DataGridView1.Rows(k).Cells("TO").Value, ":")
            TIME2 = CDbl(TIME1(0)) * 60 + CDbl(TIME1(1)) + CDbl(TIME1(2)) / 60

'จากนั้น ให้นำ TIME2 มารวมกัน แล้วแปลงกับเป็นเวลา

      Next



ประวัติการแก้ไข
2019-03-02 07:36:56
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-01 17:43:50 By : nutpopo
 


 

No. 4



โพสกระทู้ ( 77 )
บทความ ( 0 )



สถานะออฟไลน์


Code (VB.NET)
   For k As Integer = 0 To BunifuCustomDataGrid1.Rows.Count - 1
            Dim TIME1() As String, TIME2 As Double
            TIME1 = Split(BunifuCustomDataGrid1.Rows(k).Cells("TOTAL").Value, ":")
            TIME2 += CDbl(TIME1(0)) * 60 + CDbl(TIME1(1)) + CDbl(TIME1(2)) / 60

            '   TextBox3 = TIME2

            Dim ts2 As TimeSpan = TimeSpan.FromMinutes(TIME2)
            Dim s2 As String = String.Format("{0:00}:{1:00}:{2:0}", Math.Floor(ts2.TotalHours), ts2.Minutes, ts2.Seconds)

            TextBox3.Text = s2
        Next

โทษทีครับอันนี้หน้าจะถูก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-01 17:54:40 By : nutpopo
 


 

No. 5



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : nutpopo เมื่อวันที่ 2019-03-01 17:54:40
รายละเอียดของการตอบ ::

รบกวนอีกหน่อยนะครับ แล้วถ้าให้ปัดวินาทีล่ะครับ หรือตัดวินาทีออกเลยก็ได้ครับ ขอบคุณครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-02 09:36:11 By : Tikzaa
 


 

No. 6



โพสกระทู้ ( 77 )
บทความ ( 0 )



สถานะออฟไลน์


Code (VB.NET)
For k As Integer = 0 To BunifuCustomDataGrid1.Rows.Count - 1
Dim TIME1() As String, TIME2 As Double
TIME1 = Split(BunifuCustomDataGrid1.Rows(k).Cells("TOTAL").Value, ":")
TIME2 += CDbl(TIME1(0)) * 60 + CDbl(TIME1(1)) 
'   TextBox3 = TIME2
Dim ts2 As TimeSpan = TimeSpan.FromMinutes(TIME2)
Dim s2 As String = String.Format("{0:00}:{1:00}", Math.Floor(ts2.TotalHours), ts2.Minutes)
TextBox3.Text = s2
Next

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-02 12:30:43 By : nutpopo
 


 

No. 7



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : nutpopo เมื่อวันที่ 2019-03-02 12:30:43
รายละเอียดของการตอบ ::
รบกวนอีกหน่อยนะครับ ถ้าใช้เป็น txtOt.Text = s2 จะเก็บได้แค่ 24 ชั่วโมงครับ เลยเอาตัวแปรมาเก็บ ชั่วโมงกับนาทีแยก แต่ทำมัยมันบวกไป 1 ชั่วโมงครับ ถ้าดูจาก คอลั่ม ot จะมีแค่ 5:33 เอง แก้ไขตรงไหน ช่วยหน่อยครับ ขอบคุณมากครับ

For k As Integer = 0 To BunifuCustomDataGrid1.Rows.Count - 1
Dim TIME1() As String, TIME2 As Double
TIME1 = Split(BunifuCustomDataGrid1.Rows(k).Cells("TOTAL").Value, ":")
TIME2 += CDbl(TIME1(0)) * 60 + CDbl(TIME1(1))
' TextBox3 = TIME2
Dim ts2 As TimeSpan = TimeSpan.FromMinutes(TIME2)
Dim s2 As String = String.Format("{0:00}:{1:00}", Math.Floor(ts2.TotalHours), ts2.Minutes)


Dim Hour_OT As Integer = ts2.TotalHours 'เก็บจำนวนชั่วโมง
Dim Minute_OT As Integer = ts2.Minutes 'เก็บจำนวนนาที

txtOt.Text = Hour_OT.ToString("00") & ":" & Minute_OT.ToString("00")

Next

12345


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-06 11:51:57 By : Tikzaa
 


 

No. 8



โพสกระทู้ ( 77 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าแยกคุณก็จะได้ 5.53333333333 กับ 32
ผมไม่รูว่าต้องการแยกทำมัยครับ
ถ้า อย่ากรวมวินาทีมาเป็นนาทีก็ใช้กตัวนี้
TIME2 += CDbl(TIME1(0)) * 60 + CDbl(TIME1(1)) + CDbl(TIME1(2)) / 60

แทนตัวด่านล่างครับ
TIME2 += CDbl(TIME1(0)) * 60 + CDbl(TIME1(1))

ถ้าอย่ากแยกจริงๆ ก็ สร้างตัวเปลแจกแจงหม่ครับ

Code (VB.NET)
Dim TIME4() As String, TIME5 As Double, TIME6 As Double
TIME4 = Split(BunifuCustomDataGrid1.Rows(k).Cells("TOTAL").Value, ":")
TIME5 += CDbl(TIME1(0)) 
TIME6 + =CDbl(TIME1(1))

textbox1.text = TIME5
textbox2.text = TIME6




ประวัติการแก้ไข
2019-03-06 14:02:41
2019-03-06 14:03:29
2019-03-06 14:17:35
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-06 14:02:08 By : nutpopo
 


 

No. 9



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : nutpopo เมื่อวันที่ 2019-03-06 14:02:08
รายละเอียดของการตอบ ::

เอาอย่างนี้นะครับ ผมต้องการให้นับชั่วโมง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

3214


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-06 15:25:52 By : Tikzaa
 


 

No. 10

Guest


ถ้าเป็นผม จะทำแบบนี้ครับ ได้ผลลัพธ์แล้วค่อยนำมาแสดง

Query
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-06 20:11:20 By : K
 


 

No. 11



โพสกระทู้ ( 77 )
บทความ ( 0 )



สถานะออฟไลน์


de
ผมว่าผก็เขี่ยนให้หมดแล้วนะ

ถ้าจะผิดก็ตรงนี้ละ
Dim iHour_OT As Integer = myDgvTime.TotalHours 'เก็บจำนวนชั่วโมง (ผมว่าน่าจะผิดตรงนี้หรือป่าว)
Dim iMinute_OT As Integer = myDgvTime.Minutes 'เก็บจำนวนนาที

ที่คุณไปเพิ่มมา

ถ้าจะแยกนาทีกับชั่วโมงแนะนำ
Dim TIME4() As String, TIME5 As Double, TIME6 As Double
TIME4 = Split(BunifuCustomDataGrid1.Rows(k).Cells("TOTAL").Value, ":")
TIME5 += CDbl(TIME1(0))
TIME6 + =CDbl(TIME1(1))

แต่ Code ทีผมทำให้มันรวมให้เสร็จแล้วนะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-07 07:52:14 By : nutpopo
 


 

No. 12



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : nutpopo เมื่อวันที่ 2019-03-07 07:52:14
รายละเอียดของการตอบ ::

ขอบคุณ คุณ nutpopo มากนะครับ ช่วยจนสมบูณร์ ผมเข้าใจผิดไปเองครับ555 แต่ได้แล้วครับ ขอบคุณมากๆครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-07 09:30:46 By : Tikzaa
 


 

No. 13



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : nutpopo เมื่อวันที่ 2019-03-07 07:52:14
รายละเอียดของการตอบ ::

รบกวนคุณ nutpopo อีกนิดนะครับ

ผมต้องการกำหนดให้ Textbox เวลารวม (เวลาทำงานทั้งวัน) ต้องมากกว่า 08:30 ช.ม เมื่อเลือกเวลาจาก Combobox เวลาเลิกงาน

456

ผมเขียนแบบนี้ แล้ว errer ต้องเพิ่มหรือแก้ไขตรงไหน ผมยังไม่เข้าใจเรื่องคอนเวิดเวลาอ่ะครับ รบกวนนิดนะครับ ขอบคุณมากๆครับ

Private Sub cbbtimeend_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbbtimeend.SelectedIndexChanged

If CDate(txtTotaltime.Text) > CDate("08:28:00") Then
msg_errer("เวลาทำงานรวมต้องมากกว่า 8:28 น. ")
Return
End If
End Sub

657



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-07 14:45:29 By : Tikzaa
 


 

No. 14



โพสกระทู้ ( 77 )
บทความ ( 0 )



สถานะออฟไลน์


Code (VB.NET)
 Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
        Dim C1, C2 As String
        Dim T As TimeSpan
        C1 = ComboBox1.Text
        C2 = ComboBox2.Text
        T = TimeSpan.Parse(C2) - TimeSpan.Parse(C1)
        TextBox4.Text = String.Format("{0:00}:{1:00}:{2:00}", Math.Floor(T.TotalHours), T.Minutes, T.Seconds)
        If CDate(TextBox4.Text) > CDate("08:28:00") Then
            MessageBox.Show("OK")
        Else
            MessageBox.Show("น้อยกว่า 08:28:00")
        End If
    End Sub


code จะอยู่ใน ComBobox เลิกงานนะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-07 15:40:38 By : nutpopo
 


 

No. 15



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 14 เขียนโดย : nutpopo เมื่อวันที่ 2019-03-07 15:40:38
รายละเอียดของการตอบ ::
ได้แล้วครับ ขอบคุณมากๆครับ คุณ nutpopo

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-08 09:25:24 By : Tikzaa
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนสอบถามข้อมูลการรวมเวลาจาก Datagridview หน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่