กระทู้เก่าบอร์ด อ.Yeadram
2,100 1
URL.หัวข้อ /
URL
หาข้อมูลวันหยุด
คือผมมี Field วันที่ อยู่ 2 Field ได้แก่ วันที่เริ่มต้น และ วันที่สิ้นสุด ผมก็นำมาคำนวนหาวินาทีของค่า Diff
ผมสามารถหักวัน เสาร์-อาทิตย์ ตามระบบ เครื่องได้แล้ว ปัญหาของผมคือ
ผมจะหาวันที่เป็นวันหยุดได้อย่างไร ผมสมมุติว่า
วันเริ่มต้นของผมคือวันที่ 5 เมษายน วันที่สิ้นสุดคือวันที่ 18 เมษายน
ต้องการการนับว่า ในช่วงเวลาดังกล่าว มีวันหยุดนักขัตฤกษ์กี่วัน
ซึ่งผมรู้แล้วว่ามีวันที่ 6,9,13,16 เมษา แต่ด้วยข้อมูลผมมีเป็นพันรายการ ผมจะสามารถเลือกว่า Transaction ไหนมีวันหยุดบ้างครับ ซึ่งผลที่แสดงอยู่ใน Field A นับว่า เป็นจำนวนวัน อย่างตัวอย่างก็ออกมา 4 วัน ผมก็เอาวัน *60*60 ก็จะได้
86,400 วินาที คูณอีก 4 วันตามที่ count ได้ ก้จะได้ 345,600 วินาที่ ไปหักออกจาก 1,123,200 วินาที่ ก็จะได้วันทำงานจริง
ลืมไปว่า ผมได้ทำหักวันทำงานเสาร์-อาทิตย์แล้ว โดยใช้ Script ดังนี้
Function CalcWorkdays(StartDate, EndDate) As Integer
Dim LTotalDays As Integer
Dim LSaturdays As Integer
Dim LSundays As Integer
On Error GoTo Err_Execute
CalcWorkdays = 0
If IsDate(StartDate) And IsDate(EndDate) Then
If DateValue(EndDate) <= DateValue(StartDate) Then
CalcWorkdays = 0
Else
LTotalDays = DateDiff("d", StartDate, EndDate)
LSaturdays = DateDiff("ww", StartDate - 1, EndDate, 7)
LSundays = DateDiff("ww", StartDate - 1, EndDate, 1)
'Workdays is the elapsed days excluding Saturdays and Sundays
CalcWorkdays = LTotalDays - LSaturdays - LSundays
End If
End If
Exit Function
Err_Execute:
'If error occurs, return 0
CalcWorkdays = 0
End Function
ดังนั้นอยากทราบจากผู้ชำนาญการ ช่วยบอกผมที่ว่า ผมต้องทำอย่างไรให้ได้ Filed ที่นับวันหยุด นักขัตฤกษ์ (ซึ่งในหัวผมคิดว่า ผมต้องสร้าง Table วันที่ โดยให้มี Format เดียวกับ วันที่ผมกำหนดด้วยเช่นกัน เพื่อจะได้ Refer ให้ข้อมูลเหล่านี้เป็นวันหยุดแล้วไป check กับ ฐานข้อมูลครับ
ขอบคุณครับ
ผมสามารถหักวัน เสาร์-อาทิตย์ ตามระบบ เครื่องได้แล้ว ปัญหาของผมคือ
ผมจะหาวันที่เป็นวันหยุดได้อย่างไร ผมสมมุติว่า
วันเริ่มต้นของผมคือวันที่ 5 เมษายน วันที่สิ้นสุดคือวันที่ 18 เมษายน
ต้องการการนับว่า ในช่วงเวลาดังกล่าว มีวันหยุดนักขัตฤกษ์กี่วัน
ซึ่งผมรู้แล้วว่ามีวันที่ 6,9,13,16 เมษา แต่ด้วยข้อมูลผมมีเป็นพันรายการ ผมจะสามารถเลือกว่า Transaction ไหนมีวันหยุดบ้างครับ ซึ่งผลที่แสดงอยู่ใน Field A นับว่า เป็นจำนวนวัน อย่างตัวอย่างก็ออกมา 4 วัน ผมก็เอาวัน *60*60 ก็จะได้
86,400 วินาที คูณอีก 4 วันตามที่ count ได้ ก้จะได้ 345,600 วินาที่ ไปหักออกจาก 1,123,200 วินาที่ ก็จะได้วันทำงานจริง
ลืมไปว่า ผมได้ทำหักวันทำงานเสาร์-อาทิตย์แล้ว โดยใช้ Script ดังนี้
Function CalcWorkdays(StartDate, EndDate) As Integer
Dim LTotalDays As Integer
Dim LSaturdays As Integer
Dim LSundays As Integer
On Error GoTo Err_Execute
CalcWorkdays = 0
If IsDate(StartDate) And IsDate(EndDate) Then
If DateValue(EndDate) <= DateValue(StartDate) Then
CalcWorkdays = 0
Else
LTotalDays = DateDiff("d", StartDate, EndDate)
LSaturdays = DateDiff("ww", StartDate - 1, EndDate, 7)
LSundays = DateDiff("ww", StartDate - 1, EndDate, 1)
'Workdays is the elapsed days excluding Saturdays and Sundays
CalcWorkdays = LTotalDays - LSaturdays - LSundays
End If
End If
Exit Function
Err_Execute:
'If error occurs, return 0
CalcWorkdays = 0
End Function
ดังนั้นอยากทราบจากผู้ชำนาญการ ช่วยบอกผมที่ว่า ผมต้องทำอย่างไรให้ได้ Filed ที่นับวันหยุด นักขัตฤกษ์ (ซึ่งในหัวผมคิดว่า ผมต้องสร้าง Table วันที่ โดยให้มี Format เดียวกับ วันที่ผมกำหนดด้วยเช่นกัน เพื่อจะได้ Refer ให้ข้อมูลเหล่านี้เป็นวันหยุดแล้วไป check กับ ฐานข้อมูลครับ
ขอบคุณครับ
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
Time: 0.2910s
1. ใช้ฟังก์จากลิงค์นี้ ทำการนับวันหยุด เสาร์ อาทิตย์ มาก่อน
กดที่นี่
2. อาจกระทู้นี้ต่อเพื่อสร้างฟังก์ชั่นการนับตารางวันหยุด นักขัตฤกษ์
Reply by yeadram (R01491)
กดที่นี่
เป็นแนวทางนะครับ ปรับใช้ดูครับ