กระทู้เก่าบอร์ด อ.Yeadram
1,184 8
URL.หัวข้อ /
URL
ขอความช่วยเหลือเรื่องการตัดเวลามาสาย
พอดีว่าผมได้ข้อมูลจาก Finger Scan มา
โดยข้อมูลใน 1 Record ประกอบด้วย
รหัส ชื่อ แผนก เวลา สถานะ ประเภท
ตัวอย่างข้อมูล
1 สมชาย IT 13/1/2015 5:44 0 f
ทีนี้ผมเขียนเงื่อนไขลง Query (ไม่ได้ผ่าน Form นะครับ)
โดยอ้างอิง Table ของ Time แล้วเลือก Field ของเวลา
เขียนแล้วมัน Error แสดงผลเพี้ยนครับ โดยเงื่อนไขคือ
ใครที่มา 8:46-12:00 จะแสดงข้อความว่า สาย
และ 17:00-20:00 จะแสดงข้อความว่า OT
พอจะชี้แนะวิธีเขียนเงื่อนได้บ้างหรือเปล่าครับ เพราะข้อมูลมันเยอะมาก
โดยข้อมูลใน 1 Record ประกอบด้วย
รหัส ชื่อ แผนก เวลา สถานะ ประเภท
ตัวอย่างข้อมูล
1 สมชาย IT 13/1/2015 5:44 0 f
ทีนี้ผมเขียนเงื่อนไขลง Query (ไม่ได้ผ่าน Form นะครับ)
โดยอ้างอิง Table ของ Time แล้วเลือก Field ของเวลา
เขียนแล้วมัน Error แสดงผลเพี้ยนครับ โดยเงื่อนไขคือ
ใครที่มา 8:46-12:00 จะแสดงข้อความว่า สาย
และ 17:00-20:00 จะแสดงข้อความว่า OT
พอจะชี้แนะวิธีเขียนเงื่อนได้บ้างหรือเปล่าครับ เพราะข้อมูลมันเยอะมาก
8 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R19963
IIf(TimeValue([เวลา]) Between #17:00:00# And #20:00:00#,"OT",IIf(TimeValue([เวลา]) Between #8:46:00# And #12:00:00#,"สาย","ปกติ"))
ประมาณนี้มั้งครับ ลองปรับใช้ดูครับ
ประมาณนี้มั้งครับ ลองปรับใช้ดูครับ
3 @R19964
ได้และครับผม ประหยัดเวลาตรวจสอบได้มากเลยทีเดียว ขอบคุณครับ
ที่เหลือเดี๋ยวผมเขียนเพิ่มเติมเองครับ
ที่เหลือเดี๋ยวผมเขียนเพิ่มเติมเองครับ
4 @R19968
รบกวนอีกเรื่องนึงครับ
ตอนนี้ผมทำ Count นับจำนวนมาสายกับ OT ไม่ได้ครับ มันขึ้น #Error ในช่องทำ Count เพื่อนับ Result (ทำบน Form Design นะครับ)
แล้วก็ตอน Export ไฟล์ออกไปใช้กับระบบอื่นเพื่อบันทึก มันดึงข้อมูลของทุกวันมา ไม่ทราบว่าตอนเขียนมาโคร มีวิธีตั้งเงื่อนไขเป็นของวันนั้น ๆ หรือไม่ครับ
ผมใช้มาโครของ ExportWithFormatting ไม่แน่ใจว่าถูกต้องหรือไม่
ตอนนี้ผมทำ Count นับจำนวนมาสายกับ OT ไม่ได้ครับ มันขึ้น #Error ในช่องทำ Count เพื่อนับ Result (ทำบน Form Design นะครับ)
แล้วก็ตอน Export ไฟล์ออกไปใช้กับระบบอื่นเพื่อบันทึก มันดึงข้อมูลของทุกวันมา ไม่ทราบว่าตอนเขียนมาโคร มีวิธีตั้งเงื่อนไขเป็นของวันนั้น ๆ หรือไม่ครับ
ผมใช้มาโครของ ExportWithFormatting ไม่แน่ใจว่าถูกต้องหรือไม่
5 @R19975
Count ทั้งหมด หรือ Count แต่ละคน
สมมุติตารางชื่อ Table1
- Count ทั้งหมด ก็ประมาณนี้
สาย(ทั้งหมด): DCount("[เวลา]","Table1","TimeValue([เวลา]) Between #8:46:00# And #12:00:00#")
OT(ทั้งหมด): DCount("[เวลา]","Table1","TimeValue([เวลา]) Between #17:00:00# And #20:00:00#")
- Count ตามชื่อด้วย ก็ประมาณนี้
สาย(เฉพาะคน): DCount("[เวลา]","Table1","[ชื่อ] = '" & [ชื่อ] & "' AND TimeValue([เวลา]) Between #8:46:00# And #12:00:00#")
OT(เฉพาะคน): DCount("[เวลา]","Table1","[ชื่อ] = '" & [ชื่อ] & "' AND TimeValue([เวลา]) Between #17:00:00# And #20:00:00#")
หรือแบบซับคิวรี่ก็เหมือนกัน
สาย(เฉพาะคน): (SELECT count([เวลา]) FROM [Table4] AS b WHERE b.[ชื่อ] = Table4.[ชื่อ] AND TimeValue([เวลา]) Between #8:46:00# And #12:00:00#)
OT(เฉพาะคน): (SELECT count([เวลา]) FROM [Table4] AS b WHERE b.[ชื่อ] = Table4.[ชื่อ] AND TimeValue([เวลา]) Between #17:00:00# And #20:00:00#)
ปรับใช้ดูครับ
สมมุติตารางชื่อ Table1
- Count ทั้งหมด ก็ประมาณนี้
สาย(ทั้งหมด): DCount("[เวลา]","Table1","TimeValue([เวลา]) Between #8:46:00# And #12:00:00#")
OT(ทั้งหมด): DCount("[เวลา]","Table1","TimeValue([เวลา]) Between #17:00:00# And #20:00:00#")
- Count ตามชื่อด้วย ก็ประมาณนี้
สาย(เฉพาะคน): DCount("[เวลา]","Table1","[ชื่อ] = '" & [ชื่อ] & "' AND TimeValue([เวลา]) Between #8:46:00# And #12:00:00#")
OT(เฉพาะคน): DCount("[เวลา]","Table1","[ชื่อ] = '" & [ชื่อ] & "' AND TimeValue([เวลา]) Between #17:00:00# And #20:00:00#")
หรือแบบซับคิวรี่ก็เหมือนกัน
สาย(เฉพาะคน): (SELECT count([เวลา]) FROM [Table4] AS b WHERE b.[ชื่อ] = Table4.[ชื่อ] AND TimeValue([เวลา]) Between #8:46:00# And #12:00:00#)
OT(เฉพาะคน): (SELECT count([เวลา]) FROM [Table4] AS b WHERE b.[ชื่อ] = Table4.[ชื่อ] AND TimeValue([เวลา]) Between #17:00:00# And #20:00:00#)
ปรับใช้ดูครับ
6 @R19980
Count ของวันนั้น ๆ และแบบเป็นช่วงเวลาครับ
เช่น วันที่ 5 พนักงานสายกี่คน แต่ตอนนี้มันดึงข้อมูลของทุกวันมารวมเป็นสายทั้งหมด
=DCount("[SJ]","Time Detail","TimeValue([SJ]) Between #8:46:00# And # 12:00:00#")
คือตอนนี้ไม่ Error และ แต่พอใส่เงื่อนไขให้เป็นวันที่ 1/1/2558 8:46:00
โดยผมพยายามทำการอ้างอิงด้วย Form
ผมเขียนผิดแน่ ๆ เลย
=DCount("[SJ]","Time Detail","TimeValue([SJ]) Between # Forms![sysTime]![T_StartDate] 8:46:00# And #Forms![sysTime]![T_EndDate] 12:00:00#")
เช่น วันที่ 5 พนักงานสายกี่คน แต่ตอนนี้มันดึงข้อมูลของทุกวันมารวมเป็นสายทั้งหมด
=DCount("[SJ]","Time Detail","TimeValue([SJ]) Between #8:46:00# And # 12:00:00#")
คือตอนนี้ไม่ Error และ แต่พอใส่เงื่อนไขให้เป็นวันที่ 1/1/2558 8:46:00
โดยผมพยายามทำการอ้างอิงด้วย Form
ผมเขียนผิดแน่ ๆ เลย
=DCount("[SJ]","Time Detail","TimeValue([SJ]) Between # Forms![sysTime]![T_StartDate] 8:46:00# And #Forms![sysTime]![T_EndDate] 12:00:00#")
7 @R19983
ไม่รู้รายละเอียดแทนชื่อไม่ถูก ตอนคำถามกับเขียนจริงคุณใช้ชื่อไม่เหมือนกัน เอาเป็นว่าประมาณนี้ครับ แทนชื่อให้ถูกก็น่าจะใช้ได้อะครับ
DCount("[SJ]","Time Detail","datevalue([SJ]) = '" & DateValue([ชื่อ Textbox เวลา]) & "' AND TimeValue([SJ]) Between #8:46:00# And #12:00:00#")
หรือถ้าทำคิวรี่ก็จะประมาณนี้
SELECT Format(datevalue([เวลา]),"dd/mm/yyyy") AS [วันที่], Count(DateValue([เวลา])) AS [สาย/วัน]
FROM Table1
WHERE TimeValue([เวลา]) Between #8:46:00# And #12:00:00#
GROUP BY DateValue([เวลา]);
ปรับใช้ดูครับ
DCount("[SJ]","Time Detail","datevalue([SJ]) = '" & DateValue([ชื่อ Textbox เวลา]) & "' AND TimeValue([SJ]) Between #8:46:00# And #12:00:00#")
หรือถ้าทำคิวรี่ก็จะประมาณนี้
SELECT Format(datevalue([เวลา]),"dd/mm/yyyy") AS [วันที่], Count(DateValue([เวลา])) AS [สาย/วัน]
FROM Table1
WHERE TimeValue([เวลา]) Between #8:46:00# And #12:00:00#
GROUP BY DateValue([เวลา]);
ปรับใช้ดูครับ
8 @R19984
ได้และครับ ขอบคุณมาก ๆ เลยครับ ^^
Time: 0.3870s
แล้วค่อยมาเขียน iif เพื่อทดสอบ