เงื่อนไข between ครับ
กระทู้เก่าบอร์ด อ.Yeadram

 1,954   9
URL.หัวข้อ / URL
เงื่อนไข between ครับ

คือผมมีปัญหาเรื่อง Between #25/7/2554 6:00:00# And #25/7/2554 14:00:00# ผมต้องการทำรายงานเเสดงผลยอดผลิตตั้งเเต่ 6โมงเช้าถึง14.00 น. เเต่ถ้าเเสดงเงื่อนไขแบบที่ได้กล่าวนั้นมันจะโชว์ตั้งเเต่ 6 7 8 9 10 11 12 13 14 เเต่ผมต้องการให้มันสรุปเเค่ 6.00-14.00 น. ภายในบรรทัดเดียวเเล้วได้ผลรวมเท่ากับเงื่่อนไขข้างต้น ผมต้องใช้คำสั่งแบบไหนครับ

รบกวน อ.สุเทพ เเละ User thai-access ช่วยเเนะนำให้ทีครับ

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

1 @R10593
ก็ทำใน query ช่อง Total ก็ให้ sum
แล้วก็ใส่เงื่อนไขตามนั้น

ปล. อ.สุเทพ ไม่มีนะครับ
2 @R10596
ขอบคุณคับ ท่าน weezaa ที่ช่วยตอบ เเต่ผมก็ยังไม่ค่อยเข้าใจ ผมก็ยังทำไม่ได้อยู่ดีอ่ะครับพึ่งเคยทำผมจะพิมพ์ลักษณะงานแบบให้ดูนะครับ
           TIME               ชื่อเครื่อง      สินค้า                 ยอด
21/7/2554 6:00:00       AA       production           10
21/7/2554 7:00:00       AA       production           10
21/7/2554 8:00:00       AA       production           10
21/7/2554 9:00:00       AA       production           10
21/7/2554 14:00:00     AA       production           10
ผลรวม                                                                       50
นี้คือที่ผมทำได้


**เเต่ที่ผมต้องการให้มันโชว์คือ**
21/7/2557 6:00:00-14:00:00      AA          production     50
เพราะเครื่องจักรผลิตเเบ่งเป็น3ก่ะครับผลิต 24ชม.ครับ
ผมจะ query ยังไงดีครับรบกวนช่วยเเนะนำด้วยครับ

ปล. ขอโทษทีครับ อ.สุภาพ พอดีมือใหม่หัดเข้าบอร์ด(เขินเลยผม)
3 @R10597
ต้องสร้าง field อีก 1 field เพื่อแสดง วันที่เวลาตามที่คุณต้องการ
TimeShow: Min([Time]) & " - " & Format(Max([Time]),"Short Time")
ด้านล่างของ field นี้ให้เลือกคำว่า expression ไม่ใช่ groupby ตามค่า default
คุณควรเปลี่ยนชื่อ field "time" เป็นชื่ออื่น
ทั้งนี้คุณต้องแน่ใจนะว่า วันที่ของคุณในแต่ละกะจะเป็นวันเดียวกันเสมอไป
format ก็ทำให้ดูเป็นตัวอย่าง
ทั้งหลายทั้งปวงคุณอาจต้องปรับแต่งเอาเองอีกนิดหน่อย เช่น
shorttime คุณต้องเปลี่ยนเป็น hh:mm:ss ถ้าคุณต้องการแสดงระดับวินาที
4 @R10600
- เปลี่ยนชื่อฟิลด์ของคุณจากคำว่า TIME เป็น mcTime (คำว่า Time เป็นคำสงวนของระบบ)

- รวบรวมคำตอบและความเห็นของคุณ weeza และคุณ Nova พร้อมทั้งความต้องการของคุณมะนาว เอามาเขียนเป็น SQL statement ได้ดังนี้

select xx, [ชื่อเครื่อง], [สินค้า], sum([ยอด]) as Total
from table1
where mcTime between [ระบุวัน-เวลาเริ่มต้น ตามรูปแบบ dd/mm/yyyy hh:mm:ss] and [ระบุวัน-เวลาสิ้นสุด ตามรูปแบบ dd/mm/yyyy hh:mm:ss]
group by xx, [ชื่อเครื่อง], [สินค้า];

****ให้แทนที่ xx ด้วย format(cdate([ระบุวัน-เวลาเริ่มต้น ตามรูปแบบ dd/mm/yyyy hh:mm:ss]),"dd/mm/yyyy hh:mm:ss") & " - " & format(cdate([ระบุวัน-เวลาสิ้นสุด ตามรูปแบบ dd/mm/yyyy hh:mm:ss]),"dd/mm/yyyy hh:mm:ss")

1) ให้สร้างคิวรี่ใหม่ 1 ตัว เปิดมุมมอง SQL
2) เอา statement (แทนที่คำให้เรียบร้อย) นี้ไปวาง
3) เปลี่ยนมุมมองเป็น มุมมองแผ่นข้อมูล ถ้าไม่มีปัญหาอะไร ให้ทำข้อ 4) - 5)
4) เปลี่ยนมุมมองเป็น มุมมองออกแบบ เพื่อศึกษาทำความเข้าใจ
5) บันทึกคิวรี่นี้ไว้ใช้งานครั้งต่อไป

ถ้าในข้อ 3) มีปัญหาให้ตรวจสอบชื่อฟิลด์ต่างๆ ของคุณ ว่าเขียนหรือปรับเปลี่ยนประยุกต์ได้ถูกต้องทุกจุดหรือไม่ ถ้าปรับเปลี่ยนแล้วให้กลับไปเริ่ม ข้อ 1) ใหม่อีกครั้ง

ถ้ายังพบปัญหาให้แจ้งปัญหามาใหม่อีกครั้งครับ
5 @R10602
ขอบคุณ ท่าน nova กับ yeadram มาครับ คือ ตารางผมมีชื่อดังนี้
ชื่อตาราง PDT_DATA ครับ
TIME_STAMP          PDT_NAME     MODEL_IT               Actual
21/7/2554 6:00:00          AA                 production              10
21/7/2554 7:00:00           AA               production                  10
21/7/2554 8:00:00           AA                   production             10
21/7/2554 9:00:00           AA                 production                 10
21/7/2554 14:00:00        AA                 production                 10
   ผลรวม                                                                                       50
ผมจะต้อง query ยังไงดีอ่ะครับประยุกต์ตามที่ท่าน yeadram เเล้วมันก็ไม่ได้อ่ะครับ ผมพึ่งจับ access เป็นครั้งเเรกเลยไม่ค่อยรู้เรื่องยังไงกก็รบกวนหน่อยนะครับ
6 @R10604
เปิด query ในมุมมอง SQL แล้ว copy code นี้ไปวาง

SELECT PDT_Data.Pdt_Name, PDT_Data.Model_IT, Sum(PDT_Data.Actual) AS SumOfNoMachine, Min([Time_Stamp]) & " - " & Format(Max([Time_Stamp]),"Short Time") AS TimeShow
FROM PDT_Data
WHERE (((PDT_Data.Time_Stamp) Between #1/21/2011 6:0:0# And #1/21/2011 14:0:0#))
GROUP BY PDT_Data.Pdt_Name, PDT_Data.Model_IT;
7 @R10605
ขอบคุณมากครับ คุณ Nova สำหรับ query ใช้ได้เเล้วครับ เเล้วถ้าผมต้องการ ซ้อน between ให้โชว์ช่วงเวลา 3 กะ ล่ะครับ เช่น

TIME_STAMP                             PDT_NAME        MODEL_IT               Actual
21/7/2554 6:00:00-14:00                 AA                 production               50
21/7/2554 14:00:00-22:00               AA                 production               50
21/7/2554 22:00:00-23:45:00          AA                 production               50     

ผมจะสามารถซ้อน between ได้ไหมครับรบกวนช่วยเเนะนำด้วยนะครับขอบคุณครับ
8 @R10606
เอา query มา UNION กัน โดยเปลี่ยนเงื่อนไขเวลาในบรรทัด WHERE
SELECT....FROM...
WHERE....วันเวลาตามเงื่อนไขที่1
GROUP BY.....
UNION
SELECT....FROM...
WHERE....วันเวลาตามเงื่อนไขที่2
GROUP BY.....
SELECT....FROM...
WHERE....วันเวลาตามเงื่อนไขที่3
GROUP BY.....;
จริงๆแล้วเงื่อไขควรอยู่ในรูปตัวแปร แต่ผมไม่รู้องค์ประกอบอื่นๆ
ยังไงก็ลองปรับเปลี่ยนดูนะครับ
9 @R10622
ขอบคุณมากครับ ท่าน Nova ที่เเนะนำทุกขั้นตอนเลย
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3137s