การทำ Query หาจำนวนวัน ที่ตรวจสอบวันหยุด
กระทู้เก่าบอร์ด อ.Yeadram

 7,485   11
URL.หัวข้อ / URL
การทำ Query หาจำนวนวัน ที่ตรวจสอบวันหยุด

SELECT DISTINCT JobID, RecivedDate, CloseDate, DATEDIFF("d",Work.RecivedDate, Work.CloseDate) AS Duration
FROM [Work], SpeicalDate;

ตาม Code ใน Query สามารถหาจำนวนวัน ได้แล้ว แต่จะเขียนฟังก์ชันอย่างไรเพื่อตรวจสอบวันหยุด เสาร์ อาทิตย์ ส่วนวันหยุดนักขัตฤกษ์ มี Table แล้วครับ

ขอคำแนะนำด้วยนะครับ
ขอบคุณมากๆนะครับ

งัยส่งเมล์ theksaint@hotmail.com

11 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R01486
เพิ่มเติมการ Run Query ข้างต้นครับ
2 @R01487
weekday()
จะบอกได้ว่า วันนั้นเป็นวันอะไรครับ
มันคืนค่ามาเป็น long   1-7 เท่านั้น
1 = อาทิตย์ หรือจันทร์ แล้วแต่ตั้งค่าในอากิวเมนต์สุดท้ายครับ
3 @R01488
ผมต้องเขียนเป็น function แล้วมาใส่ใน query หรือเปล่าครับ แล้วต้องวนลูปใช่มั้ยครับ รบกวนเพิ่มเติม ขอบคุณครับ
4 @R01489
RecieveDate คือวันอะไรจากตาราง work ใช่ไหม
ตาราง SpecialDate มีฟิลด์อะไรที่ต้องใช้เหรอครับ ทำไมถึงเอามันเข้ามาด้วย โดยไม่ได้เชื่อมกับตาราง work

เดี๋ยวมาต่อครับ สายๆ หน่อยนะ ตอนนี้เคลียร์ธุระช่วงเช้าก่อนครับ
5 @R01490
JobID, RecivedDate, CloseDate อยู่ใน Table Work ครับ
ส่วน Table SpecialDate มี SDate ที่เก็บวันหยุดนักขัตฤกษ์ ครับ
เพื่อจะคำนวณจำนวนวัน
(Closedate-RecivedDate)-Holiday(ตัวแปรที่เก็บจำนวนเสาร์และอาทิตย์ ที่อยู่ในช่วงเวลาที่กรอกไว้)-SDate(ฟิลด์ที่เก็บวันหยุดนักขัตฤกษ์)
ขอบคุณมากๆนะครับ
6 @R01491
แฮ่ แฮ่ มึนตึบ เอางี้นะครับ สมมติ นะครับสมมติ

ตาราง SpecialDate มีสองฟิลด์
- SDate (date/time) เก็บวันหยุด เป็น primarykey นับแต่ละเรคคอร์ดเป็น 1 หน่วย
- Description (text) เก็บความหมายหมายของ

สิ่งที่ต้องการเห็นในผลของคิวรี่คือ
- รหัสพนักงาน (JobID - string)
- วันเริ่มต้นจุดตรวจนับ (RecivedDate - date/time)
- วันสิ้นสุดจุดตรวจนับ (CloseDate - date/time)
- นับรวมระยะเวลาตรวจนับ (Duration - long integer)
- วันหยุดงาน หักวันหยุดแล้ว (heBreak - long integer) ให้เขียน sql คิวรี่ดังนี้ ครับ

SELECT JobID, RecivedDate, CloseDate, DATEDIFF("d",RecivedDate, CloseDate) +1 AS Duration , OffDay(RecivedDate,CloseDate) as heBreak
FROM [Work];

อย่าเพิ่งเรียกใช้จนกว่าจะเอานี่ไปวางในโมดูลครับ

Function OffDay(ByVal frDate As Date, ByVal toDate As Date) As Long
Dim j As Long
j = 0
Dim xDate As Date
For xDate = frDate To toDate
If Weekday(xDate, vbMonday) > 5 Or _
DCount("SDate", "SpecialDate", "[SDate] = cDate('" & xDate & "')") > 0 _
Then j = j + 1
Next
OffDay = j
End Function
7 @R01492
ขอบคุณอย่างมากครับ เด๋วจะลองไปทำดูนะครับ
8 @R01568
ไปเจอที่นี่มาครับ
http://www.techonthenet.com/access/modules/workdays.php
9 @R17879
ผมได้นำวิธีการทำมาปรับใช้ในดาต้าของผมแล้วมานขึ้นข้อความด้านล่างแบบนี้ ต้องแก้ไขอย่างไรบ้างครับ ขอบคุณมากครับ

10 @R17887
รบกวนด้วยนะคับ
11 @R17900
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3176s