กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
366 1
URL.หัวข้อ /
URL
เกี่ยวกับการนับเวลาใน access97
1.ถามว่า จาก 08.30น.-11.30น.ใช้เวลาไปเท่าใด จะเขียนCODEใส่อย่างไร ใช้ฟังค์ชั่นอะไรดี
2.ถามว่า จาก 16.00 น.ของวันนี้-10.00น.ในวันถัดไป ใช้เวลาไปเท่าใด โดยไม่นับเวลาในช่วง 16.30น.เรื่อยไปจนถึงเวลา 08.29 น.จะเขียนCODEใส่อย่างไร ใช้ฟังค์ชั่นอะไรดี
3.ถามว่า จาก16.00น.ของวันศุกร์ หยุด เสาร์-อาทิตย์ เริ่มนับต่อในวันจันทร์เริ่ม 08.30 น. ไปจนถึงเวลา 10.00น.ในวันจันทร์ ใช้เวลาไปเท่าใด (โดยไม่นับเวลาในช่วง 16.30น.-08.30น.และไม่นับเวลา เสาร์และอาทิตย์)จะเขียนCODEใส่อย่างไร ใช้ฟังค์ชั่นอะไรดี
4.ถามว่า จาก 16.00น.ของวันศุกร์ จนถึงวันอังคาร เวลา 10.00น. จะใช้เวลาไปเท่าใด (ไม่นับเวลา 16.30น.-08.30น. ไม่นับวันหยุดเสาร์และอาทิตย์ และวันจันทร์ ซึ่งอาจเป็นวันหยุดวันสำคัญอื่นๆ)
จะเขียนCODEใส่อย่างไร ใช้ฟังค์ชั่นอะไรดี
ขอบคุณนะคะ ตอนนี้กำลังทำโปรเจคอยู่เกี่ยวกับเรื่องเวลา จะส่งงานในอาทิตย์ ช่วยหน่อยนะคะ
2.ถามว่า จาก 16.00 น.ของวันนี้-10.00น.ในวันถัดไป ใช้เวลาไปเท่าใด โดยไม่นับเวลาในช่วง 16.30น.เรื่อยไปจนถึงเวลา 08.29 น.จะเขียนCODEใส่อย่างไร ใช้ฟังค์ชั่นอะไรดี
3.ถามว่า จาก16.00น.ของวันศุกร์ หยุด เสาร์-อาทิตย์ เริ่มนับต่อในวันจันทร์เริ่ม 08.30 น. ไปจนถึงเวลา 10.00น.ในวันจันทร์ ใช้เวลาไปเท่าใด (โดยไม่นับเวลาในช่วง 16.30น.-08.30น.และไม่นับเวลา เสาร์และอาทิตย์)จะเขียนCODEใส่อย่างไร ใช้ฟังค์ชั่นอะไรดี
4.ถามว่า จาก 16.00น.ของวันศุกร์ จนถึงวันอังคาร เวลา 10.00น. จะใช้เวลาไปเท่าใด (ไม่นับเวลา 16.30น.-08.30น. ไม่นับวันหยุดเสาร์และอาทิตย์ และวันจันทร์ ซึ่งอาจเป็นวันหยุดวันสำคัญอื่นๆ)
จะเขียนCODEใส่อย่างไร ใช้ฟังค์ชั่นอะไรดี
ขอบคุณนะคะ ตอนนี้กำลังทำโปรเจคอยู่เกี่ยวกับเรื่องเวลา จะส่งงานในอาทิตย์ ช่วยหน่อยนะคะ
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R00810
ทั้งหมดนี้ใช้ DateDiff() ครับ ให้ลองศึกษาการใช้ฟังก์ชันนี้ใน Help ดู
แต่ที่สำคัญจะต้องเก็บฟีลด์ทั้ง 2 ให้เป็น Date/Time นะครับ ไม่งั้นจะคำนวณไม่ได้
1. ใช้ DateDiff() แล้วกำหนดให้ Interval เป็น ชั่วโมง (h), นาที (n) หรือ วินาที (s) ตามต้องการ
เช่น
? datediff("n",#08:30#,#10:30#)
จะได้ 120 นาที พอหารด้วย 60 จะได้ 2 ชั่วโมง
ถ้าเป็นวินาที
? datediff("n",#08:30#,#10:30#)
จะได้ 7200 วินาที เมื่อหารด้วย 3600 จะได้เวลาเป็นชั่วโมงออกมา
ถ้าเป็น 10.45 น. จะเห็นชัดกว่า
? datediff("n",#08:30#,#10:45#)
135
เมื่อนำมาหารไม่เอาเศษ (\) ด้วย 60 จะได้ 2 ชั่วโมง และเมื่อหารเอาเศษ (mod) จะได้ 15 นาที
? 135 \ 60
2
? 135 mod 60
15
2. ก็ทำเหมือนข้อ 1 แต่มีวันที่เข้ามาร่วมด้วย
? datediff("n",#1 Sept 2002 16:00#,#2 Sept 2002 10:00#)
1080
เมื่อคิดเป็นชั่วโมงจะได้ 18 ชั่วโมง
? 1080 / 60
18
คราวนี้มาหาเวลาระหว่าง 16.30 -8.30 ของวันถัดไป จะได้ 16 ชั่วโมง
? datediff("n",#1 Sept 2002 16:30#,#2 Sept 2002 08:30#)
960
? 960/60
16
ฉะนั้นจะได้เวลาที่ต่างกัน 18-16 = 2 ชั่วโมง
ตอนนี้จะรู้แล้วว่าจาก 16.30 - 08.30 จะเป็นเวลา 16 ชั่วโมง
ถ้าไม่นับเสาร์อาทิตย์ ก็ต้องดูว่ามันห่างกันกี่ชั่วโมง
? datediff("n",#30 Aug 2002 16:30#,#2 Sept 2002 08:30#)
3840
? 3840 /60
64
จะได้ 64 ชั่วโมง
คราวนี้มาถึงการตรวจดูว่าระหว่าง 2 วันที่และเวลา มีวันหยุดเสาร์อาทิตย์หรือเปล่าให้ใช้ฟังก์ชันนี้ช่วยครับ
Function fWeekEnd(BegDate As Date, EndDate As Date) As Integer
Dim DateCnt As Date
Dim MyWeekEnd As Integer
BegDate = DateValue(BegDate)
EndDate = DateValue(EndDate)
DateCnt = BegDate
MyWeekEnd = 0
Do While DateCnt < EndDate
If Format(DateCnt, "ddd") = "Sat" Then
MyWeekEnd = MyWeekEnd + 1
End If
DateCnt = DateAdd("d", 1, DateCnt)
Loop
fWeekEnd = MyWeekEnd
End Function
เช่น
? fWeekEnd(#30 Aug 2002#,#21 Sept 2002#)
3
หรือ
? fWeekEnd(#30 Aug 2002#,#2 Sept 2002#)
1
ลองนึกต่อดูครับว่าจะต้องทำอย่างไรต่ออีกดี
3. ให้ค้นหาด้วยคำว่า DateAdd ในเว็บนี้ดูครับ ผมเคยคุยเกี่ยวกับการไม่นับวันหยุดราชการพิเศษไว้ แล้วลองประยุกต์ใช้ดูนะครับ
Time: 0.1059s